注意

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

数值型

整形

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

小数

定点数

  1. dec(M,D)
  2. decimal(M,D)

浮点数

  1. float(M,D)
  2. 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的区别

  1. timestamp支持的范围较小,1970到2038年。datetime的范围较大,1000 1-1 到 9999 12-31
  2. timestamp和实际的时区有关,更能反映实际的日期,而datetime只能反映插入时的当地时区
  3. timestamp的属性受到MySQL的版本和SQLMode的影响很大
  4. timestamp占用4字节,datetime占用8字节
最后修改日期:2020-07-12

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。