mysql数据类型
mysql
数据类型
1、整型
MySQL数据类型
含义(有符号)
tinyint(m)
1个字节 范围(-128127)
smallint(m)
2个字节 范围(-3276832767)
mediumint(m)
3个字节 范围(-83886088388607)
int(m)
4个字节 范围(-21474836482147483647)
bigint(m)
8个字节 范围(+-9.22*10的18次方)
取值范围如果加了
unsigned
,则最大值翻倍,如
tinyint unsigned
的取值范围为
(0~256)
。
int(m)
里的
m
是表示
SELECT
查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度,不知道这个
m
有什么用。
2、浮点型(float和double)
MySQL数据类型
含义
float(m,d)
单精度浮点型 8位精度(4字节) m总个数,d小数位
double(m,d)
双精度浮点型 16位精度(8字节) m总个数,d小数位
设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。
3、定点数
浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
decimal(m,d)
参数
m
<
65
是总个数,
d
<
30
且
d
<
m
是小数位。
4、字符串(char,varchar,_text)
MySQL数据类型
含义
char(n)
固定长度,最多255个字符
varchar(n)
固定长度,最多65535个字符
tinytext
可变长度,最多255个字符
text
可变长度,最多65535个字符
mediumtext
可变长度,最多2的24次方-1个字符
longtext
可变长度,最多2的32次方-1个字符
char
和
varchar
:
1.char(n)
若存入字符数小于
n
,则以空格补于其后,查询之时再将空格去掉。所以
char
类型存储的字符串末尾不能有空格,
varchar
不限于此。
2.char(n)
固定长度,
char(4)
不管是存入几个字符,都将占用
4
个字节,
varchar
是存入的实际字符数
+1
个字节(
n
<
=255
)或
2
个字节
(n>255)
,所以
varchar(4),
存入
3
个字符将占用
4
个字节。
3.char
类型的字符串检索速度要比
varchar
类型的快。
varchar
和
text
:
1.varchar
可指定
n
,
text
不能指定,内部存储
varchar
是存入的实际字符数
+1
个字节(
n
<
=255
)或
2
个字节
(n>255)
,
text
是实际字符数
+2
个字节。
2.text
类型不能有默认值。
3.varchar
可直接创建索引,
text
创建索引要指定前多少个字符。
varchar
查询速度快于
text,
在都创建索引的情况下,
text
的索引似乎不起作用。
5.二进制数据(_Blob)
1._BLOB
和
_text
存储方式不同,
_TEXT
以文本方式存储,英文存储区分大小写,而
_Blob
是以二进制方式存储,不分大小写。
2._BLOB
存储的数据只能整体读出。
3._TEXT
可以指定字符集,
_BLO
不用指定字符集。
6.日期时间类型
MySQL数据类型
含义
date
日期 ‘2008-12-2’
time
时间 ‘12:25:36’
datetime
日期时间 ‘2008-12-2 22:06:44’
timestamp
自动存储记录修改时间
若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。
数据类型的属性
MySQL关键字
含义
NULL
数据列可包含NULL值
NOT NULL
数据列不允许包含NULL值
DEFAULT
默认值
PRIMARY KEY
主键
AUTO_INCREMENT
自动递增,适用于整数类型
UNSIGNED
无符号
CHARACTER SET name
指定一个字符集