常见的数据类型
- 数值型:
整型
小数:浮点数,定点数 - 字符型
较短的文本:char、varchar
较长的文本:text、blob(较长的二进制数据) - 日期型:
一、整型
tinyint | smallint | mediumint | int/integer | bigint | |
---|---|---|---|---|---|
字节数 | 1 | 2 | 3 | 4 | 8 |
特点:
1.如果没有设置是有符号还是没有符号,默认为有符号,设置无符号用关键字unsigned,有符号比没有符号多一位位数;
2.如果插入的数值超出了整型的范围,会报out of range ,并且会插入临界值;
3.如果没有设置类型长度,会有默认长度;
4.一个值的范围是由类型来决定的,并不是由类型后面的长度来决定的,长度只是代表了显示的最大宽度,如果不够可以使用zerofill关键词使得数值的左边填充0,zerofill使用后类型只能为unsigned。
二、 小数
float | double | dec(M,D) | decimal(M,D) | |
---|---|---|---|---|
字节数 | 4 | 8 | 8 | 8 |
decimal 可以简写成dec,所以后两个作用一样
M:表示总共有几位
D:表示小数有几位
M和D都可以省略,默认是(10,0)
例如:dec(5,2)表示的数可以是:234.45
如果超出了位数,则会取临界值
例如 3456.543会被自动转为999.99
三、 字符型
较短的文本char和varchar
写法 | M的意思 | 特点 | 空间的耗费情况 | 效率 | |
---|---|---|---|---|---|
char | char(M) | 最大的字符数,可以省略,默认为1 | 固定长度的字符 | 比较消耗 | 较低 |
varchar | varchar(M) | 最大的字符数,不可以省略 | 可变长度的字符 | 比较节省 | 较高 |
较长的文本text、blob(较大的二进制)
其他binary和varbinary用于保存较短的二进制,enum用于保存枚举类型,set用于保存集合,enum和set不区分大小写
三、 日期型
日期型要用单引号引起来
date | datetime | datestamp | time | year | |
---|---|---|---|---|---|
字节数 | 4 | 8 | 4 | 3 | 1 |
datestamp取值范围:1970-01-01 08:00:01----2038的某个时刻
datetime取值范围:1000-01-01----9999-12-31
datestamp 和时区有关,更能反映实际的日期,而且它容易受MySQL版本和SQLMode的影响