文章目录
1.1数值类型
1.1.1 整数类型
整数类型 | 大小 | 表数范围(有符号) | 表数范围(无符号) | 作用 |
---|---|---|---|---|
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 | 大整数值 |
BIGINT | 8字节 | -9233372036854775808~9223372036854775807 | 0~18446744073709551615 | 极大整数值 |
注意:
- INT与INTEGER是同一种数据类型
- 每一种数据类型的表数范围可以根据所占字符数计算得出
- 选择数据类型时,要根据实际需求确定数值的范围,从而确定最合适的数据类型。如果选择不当,则可能会出现“Out of range”的错误提示
1.1.2 浮点数和定点数
浮点数类型
浮点数类型 | 大小 | 作用 |
---|---|---|
FLOAT | 4字节 | 单精度浮点数值 |
DOUBLE | 8字节 | 双精度浮点数值 |
定点数类型
定点数类型 | 大小 | 作用 |
---|---|---|
DECIMAL(M,D) | M+2 | 精度较高的小数值 |
1.1.3 BIT类型
BIT类型 | 大小 | 作用 |
---|---|---|
BIT(M) | 1~8字节 | 位字段值 |
注意:在接下来创建表时,数字类型的选择应遵循如下原则:
- 选择最小的可用类型,如果该字段的值不会超过127,则使用TINYINT比INT效果好
- 对于完全都是数字的值,即无小数点时,可以选择整数类型,比如年龄
- 浮点类型用于可能具有的小数部分的数,比如学生成绩
- 在需要表示金额等货币类型时优先选择DECIMAL数据类型
1.2 日期和时间类型
类型 | 格式 | 0值 |
---|---|---|
TIME | ‘HH:MM:SS’ | ‘00:00:00’ |
DATE | ‘YYYY-MM-DD’ | ‘0000-00-00’ |
YEAR | ‘YYYY’ | ‘0000’ |
DATETIME | ‘YYYY-MM-DD HH:MM:SS’ | ‘0000-00-00 00:00:00’ |
TIMESTAMP | ‘YYYY-MM-DD HH:MM:SS’ | ‘0000-00-00 00:00:00’ |
注意:
- 严格模式:STRICT_TRANG_TABLES。该模式下如果插入的数据不合法或者超出范围均会提示错误,插入数据不会成功
- 非严格模式:该模式下如果插入的数据不合法或者合法但超出范围,只会给出警告,但会插入成功,插入的数据为0值或者边界值
- MySQL中默认为严格模式,如果想要修改,可以在my.ini配置文件中去掉STRICT_TRANG_TABLES,并重新启动MySQL服务即可
1.2.1TIME类型
TIME类型专门用来存储时间数据,如果不需要记录日期而只需要记录时间,则选择TIEM类型时最合适的。
- ‘HH:MM:SS’:其中HH表示小时,MM表示分钟,SS表示秒
1.2.2 DATE类型
DATE类型是专门用来存储日期数据的,如果执行要存储日期值而不需要时间部分,则应选择DATE类型。
- ‘YYYY-MM-DD’:其中YYYY表示年,MM表示月,DD表示日
1.2.3 YEAR类型
YEAR类型只是用来表示年份的数据类型,MySQL中使用YYYY来检索和显示YEAR类型,其取值范围为1901~2155以及0000.
1.2.4 DATETIME类型
DATETIME类型适用于需要同事存储日期与时间的场合
1.2.5 TIMESTAMP类型
TIMESTAMP类型与DATETIME类型想死,都是存储日期与时间的。但取值范围要比DATETIME小。
注意:
TIMESTAMP与DATETIME的不同之处;
- 数据的取值范围不同,TIMESTAMP类型的取值范围更小
- 如果对TIMESTAMP类型的字段没有明确赋值,或是被赋予了NNULL值,MySQL会自动将该字段赋值为系统当前的日期月时间
- TIMESTAMP类型还可以使用CURRENT_TIMESTAMP来获取系统当前时间
- TIMESTAMP类型有一个显著的特点,那就是时间是根据时区来显示的
1.3 字符串类型
字符串类型 | 大小 | 描述 |
---|---|---|
CHAR(M) | 0~255字节 | 允许长度为0~M个字符的定长字符串 |
VARCHAR(M) | 0~65535字节 | 允许长度为0~M个字符的变长字符串 |
BINARY(M) | 0~255字节 | 允许长度为0~M个字符的定长二进制字符串 |
VARBINARY(M) | 0~255字节 | 允许长度为0~M个字符的变长二进制字符串 |
TINYBLOB | 0~255字节 | 二进制心事的短文本数据(长度为不超过255个字符) |
TINYTEXT | 0~255字节 | 短文本数据 |
BLOB | 0~65535字节 | 二进制形式的长文本数据 |
TEXT | 0~65535字节 | 长文本数据 |
MEDIUMBLOB | 0~16777215字节 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0~16777215字节 | 中等长度文本数据 |
LONGBLOB | 0~4294967295字节 | 二进制形式的极大文本数据 |
LONGTEXT | 0~4294967295字节 | 极大文本数据 |
1.4 JSON类型
JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似于XML但是比XML简单,更易读且容易编写,对计算机来说易于解析和生成。