数据类型
整型
类型 | 大小范围 | 存储需求 | 有符号 | 无符号 |
---|---|---|---|---|
TINYINT | 微小 | 1 byte | -128~127 | 0~255 |
字符串类型
字符串类型是一个统称,包含多种不同的数据类型
分为文本字符串和二进制字符串
不仅可以存储字符串,还可以存储其他数据
字符串可以区分或者不区分大小写的字符串比较
支持进行模式匹配查找
类型 | 大小范围 | 用途 | 存储需求 |
---|---|---|---|
CHAR(M) | 0-255 bytes | 定长字符串 | M bytes 1 <= M <=255 |
VARCHAR(M) | 0-65535 bytes | 变长字符串 | L+1 bytes |
PS:在MySQL5.5以后默认的sql_mode
已经被设置为严格模式
如果在严格模式下,插入超过指定的字符串长度不会被默认截取,而是直接报错。
mysql> show variables like 'sql_mode';
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
设置不严格模式
mysql> set sql_mode='';
查看警告信息
mysql> show warnings;
浮点型
浮点数和定点数类型是用来存储带小数的数值
使用(M, D)的方式设定M精度(或显示的位数)和D标度(小数的位数)
类型 | 数值范围 | 存储要求 | 有符号 | 无符号 |
---|---|---|---|---|
FLOAT | 单精度浮点数 | 4 bytes | xx | xx |
DOUBLE | 双精度浮点数 | 8 bytes | xx | xx |
DECIMAL | 定点数 | M>D, M+2 M<D, D+2 | 依赖M和D的值 | 依赖M和D的值 |
mysql> desc t6;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| col1 | float(3,2) | YES | | NULL | |
+-------+------------+------+-----+---------+-------+
1 row in set (0.00 sec)
mysql> INSERT INTO `t6` VALUES (33.3); // 这句报错
ERROR 1264 (22003): Out of range value for column 'col1' at row 1)
虽然设置的是3位长度的浮点类型,但是mysql在设置类型的时候就已经预留了2位作为小数点后2位,所以个位数字只能是一位数字。
DECIMAL: 如果不指定M则默认为10,默认D为0
日期和时间类型
类型 | 格式 | 存储要求 | 范围 | |
---|---|---|---|---|
YEAR(M) | YYYY/YY | 1 byte | 1901/1970 | 2155/2069 |
DATETIME | YYYY-MM-DD HH:MM:SS | 8 bytes | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 4 bytes | 1970-01-01 00:00:00 UTC | 2038-01-19 03:14:07 UTC |
TIMESTAMP: 受系统时区的影响
查看时区:mysql> show variables like 'time_zone'
修改时区:mysql> set time_zone='+10:00'