数据类型

常见数据类型

  • 整数:int,bit
  • 小数:decimal
  • 字符串:varchar,char
  • 日期时间:date,time,datetime
  • 枚举类型:enum
    特殊类型说明
  • decimal表示浮点数,如decimal(3,2)表示共存3位数,小数占2位
  • char表示固定长度的字符串,如char(3),如果填充’ab’时会补一个空格为’ab ‘
  • varchar表示变长的字符串,如varchar(3),如果填充’ab’,实际就是’ab’
  • text类型存储大文本字符串,当字符大于4000时推荐使用
  • 更全的数据类型可以参考这里

约束

  • 主键primary key:物理上存储的顺序
  • 非空not null:此字段不允许填写空置
  • 唯一unique:此字段的值不允许重复
  • 默认default:当不填写此值时会使用默认值,如果填写时以填写为准
  • 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
  • 说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增加,修改,删除,查询)时,都会降低数据库的性能,所以不推荐使用,那么数据的有效性怎么保证呢?答:可以在逻辑层进行控制

数值类型归类(常用)

类型 字节大小 有符号范围(signed) 无符号范围(unsigned)
TINYINT 1 -128~127 0~255
SMALLINT 2 -32768~32767 0~65535
MEDIUMINT 3 -8388608~8388607 0~16777215
INT/INTEGER 4 -2147483648~2147483647 0~4294967295
BITINT 8 -9223372036854775808~9223372036854775807 0~18446744073709551615

字符串

类型 字节大小 示例
CHAR 0~255 类型:char(3)输入’ab’,实际存储为’ab ‘,输入’abcd’ 实际存储为 ‘abc’
VARCHAR 0~255 类型:varchar(3) 输 ‘ab’,实际存储为’ab’, 输入’abcd’,实际存储为’abc’
TEXT 0~65535 大文本

日期时间类型

类型 字节大小 示例
DATE 4 ‘2018-11-01’
TIME 3 ‘0:08:00’
DATETIME 8 ‘2018-11-01 0:08:00’
YEAR 1 ‘2017’
TIMESTAMP 4 ‘1920-01-01 00:00:01’UTC~’2038-01-01 00:00:01’UTC