目录
注意
1 字节 = 8 位
- 为表中的字段设置类型的时候,遵守的原则,越简单越好,能保存的数值越小越好
数值型
整形

- 如果不设置是否有符号,那么默认有符号(可以写负数),如果想设置无符号,那么需要添加
unsigned
关键字。 - 如果插入的数值超过了整形的范围,会报 out of range 的异常,并且会插入临界值。
- 如果不设置长度,会有默认的长度。长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配使用
zerofill
小数

定点数
- dec(M,D)
- decimal(M,D)
浮点数
- float(M,D)
- double(M,D)
特点
- M和D的含义
- M: 整数部位+小数部位的位数
- D :小数部位的位数
- 如果超过范围,那么会插入临界值 ,而且M和D都可以省略
- 如果是decimal,则M默认为10,D为0
- 如果是float和double,则会根据插入数值的精度来决定这个字段的精度
- 定点型的精度高,如果插入的数值要求精度较高,比如货币运算,则考虑使用定点型
字符型

注意这里是字符数:一个英文字母和一个汉字都是一个字符
较短的文本
char(M)、varchar(M)
注意
- M代表最多插入的字符数
- char不管你插入的数据有多少个字符,总会开辟一个最大空间( M个字符 ),char(M)的M可以省略,默认为1
- varchar会根据你插入的字符数量,主要小于等于M,那么会根据你插入数据的字符数来开辟响应空间的大小,M不可以省略
较长的文本
text、blob
其他
- binary和varbinary用于保存较短的二进制
- enum用于保存枚举
- set用于保存集合
CREATE TABLE tab_char(
sex ENUM('男','女','保密'),
c SET('a','b','c','d')
);
枚举和集合都不区分大小写
日期型

DateTime和Timestamp的区别
- timestamp支持的范围较小,1970到2038年。datetime的范围较大,1000 1-1 到 9999 12-31
- timestamp和实际的时区有关,更能反映实际的日期,而datetime只能反映插入时的当地时区
- timestamp的属性受到MySQL的版本和SQLMode的影响很大
- timestamp占用4字节,datetime占用8字节
留言