1. 整形
类型 | 占用空间 | 范围 | |
---|---|---|---|
Tinyint | 1字节 | -128~127 | |
Smallint | 2字节 | -2^15~2^15-1 | |
Mediumint | 3个字节 | -2^23~2^23-1 | |
Int | 4个字节 | -2^31~2^31-1 | |
Bigint | 8字节 | -2^63~2^63-1 |
整形列的可选属性:
属性名称 | 属性作用 |
---|---|
M | 宽度(在zerofull的时候才有意义) |
unsigned | 无符号的(非负数) |
zerofull | 0填充(默认无符号) |
not null | 不为空 |
default X | 默认值为X |
2. 浮点型/定点型
浮点型的声明:float(M,D),其中国M为精度,是总位数(不包含点),而D为标度,表示小数位的长度。
定点型:decimal比float更精准。
3. 字符型
类型 | 说明 | 典型声明方式 |
---|---|---|
char | 定长字符串 | char(M),M代表宽度,即可容纳的字符数 |
varchar | 变长字符串 | varcahr(M),M代表宽度,即可容纳的字符数 |
text | 文本串 | text(不用加默认值) |
注意:text是文本类型,可以存较大的文本段,搜索速度稍慢。因此,如果不是特别大的内容,建议用char或varchar来代替。
char(M)和varchar(M)的区别?
char(M)占位固定为M,如果你存储N(N<M)个字符,实际内存占位也为M,存储内容不足M个时,后面用空格补齐,取的时候,去掉后面的空格。利用率N/M<=100%,速度上比较快。
而varchar(M)是可变型的字符串,如果你存储了N(N<M)个字符,实际内存占位为N+(1~2)字节。这(1~2)字节是用来开销记录字符串字符数。利用率N/(N+1~2)<100%,速度上比较慢。
4. 日期时间类型
类型 | 说明 | 典型输入格式 |
---|---|---|
Year | 占1字节,表示1901-2155年。[0000,表示错误时的选择] | 仅仅代表年份 |
Date | 表示范围为:1000-01-01 ~ 9999-12-31 | 1990-10-10 |
Time | 表示范围为:-838:59:59 ~ 838:59:59 | hh:mm:ss |
DateTime | 表示范围为:1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 1989-05-06 14:30:00 |
<1> Year类型的数据,如果输入的是两位数,那么"0-69"表示2000-2069年,如果是70-99,则代表
的是1970-1999年。为了不记错,最好输入4位数表示。
<2> 在开发中很少用日期时间类型来表示一个需要精确到秒的列。原因:虽然日期时间类型能够精确到
秒,但是不方便比较。我们经常使用时间戳来表示。
时间戳:
一般时间戳都是用int来存储,表示1970-01-01 00:00:00到当前的秒数,比较方便运算。时间戳可以通过方法转换成yyyy-MM-dd HH:mm:ss的形式。
5. 枚举类型
表示输入的值只能是枚举里面的某个数值,比如拿性别来说在创建表的时候,sex enum('男','女')
。那么我们输入的只能是男或女中的一个。