1bit即为一位二进制,

1Byte=8bit,即为八位二进制。换算成十进制可表示的最大的数值个数为2^8

一、数值型

整型

数据类型

存储大小

tinyint

1Byte 2^8个数字

smallint

2Byte

mediumint

3Byte

int

4Byte

bigint

8Byte

浮点数

数据类型



float(m,d)

单精度浮点数

m:浮点型数值的长度,不包括符号。d:小数点后面数字的位数

double(m,d)

双精度浮点数

二、字符型

字符类型

大小写

定长/变长

占用空间

实占空间

储存范围

char(n)

不分区

定长

n

n

0--2^8-1Bytes  256字节

varchar(n)

不区分

变长

n

实际字符长度空间

0--2^16-1Bytes  65535字节

binary(n)

区分

定长

n

n

0-2^8-1bytes  256字节

varbinary(n)

区分

变长

n

实际字符长度空间

0--2^16-1Bytes  65535字节

text

不区分

变长



0-2^16-1bytes   65535字节

blob

区分

变长

n

实际字符长度空间

0-2^16-1bytes   65535字节







char需要占用一个字节标记非空,所以最多254字节可用。

varchar超过255字节时需要2个字节标记字段长度,不超过255字节需要1个字节标记长度,非空标记占用一个字节。

char类型的字符串检索速度要比varchar类型的快。

 

varchar可指定ntext不能指定

text是实际字符数+2个字节。

text类型不能有默认值。

varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

枚举型ENUM:就是列出某个字段的所有可能取得值。储存范围是0-65535bytes。如ENUM('F','M')

三、日期时间型

日期时间型

储存范围

占用空间

日期型DATE

"1000-01-01→9999-12-31"

3bytes

时间型TIME

"-838:59:59"→"838:59:59"

3bytes

日期时间型DATETIME

"1000-01-01 00:00:00"→"9999-12-31 23:59:59"

8bytes

时间戳型TIMESTAMP

是1970-01-01 00:00:00到当前的秒数

4bytes

年型YEAR(2)

"00-99"

1bytes

年型YEAR(4)

"1901-2155"

1bytes

四、字段修饰符

在声明字段的时候,可以为这些字段添加额外的修饰符,不同的数据类型,其修饰符也是不一样的,

数据类型

修饰符

整型

unsigned:无符号,表示非负,定义在最前面

null

not null

default value :定义默认值

auto_incremnet:自动增长,定义的字段必须是整型、非空、非负、唯一键或主键

浮点数

unsigned , null , not null , default value

字符型

charvarchartext

null , not null , default value

character set 字符集(show character   set 可以查看支持的字符集,show variables like ‘%charac%’可以查看支持的默认字符集)

collation '排序规则':设定排序规则;

show collation可以查看mysql支持的所有排序规则。

字符型binaryvarbinaryblob

null , not null , default value

 

日期型

null , not null , default value

enum(枚举型)

null , not null , default value