整数类型
关于数据类型圆括号中的数字解释:
经常看到这样子的语句 id int(11) , 11 表示的是显示宽度。显示宽度和数据类型的取值范围是无关的。
假如 year int(4), 在year字段中数据一般只显示4位数字的宽度。假如向year插入的是一个数值19999,当使用select查询到该列值的时候,MySQL显示的将是完整的19999,而不是4位数字的值。
浮点类型
日期与时间类型
数据类型 | 日期格式 | 存储需求 |
---|---|---|
YEAR | YYYY | 1字节 |
TIME | HH:MM:SS | 3字节 |
DATE | YYYY-MM-DD | 3字节 |
DATETIME | YYYY-MM-DD HH:MM:SS | 8字节 |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 4字节 |
DATE: 用在仅需要日期值,没有时间部分
使用NOW()插入date字段时,后面的时间会自动被截取掉;
可以使用CURRENT_DATE()方法插入当前日期;
TIMESTAMP和DATETIME的区别:
DATETIME在存储日期数据时,按实际输入的格式存储,输入什么就存储什么,与时区无关。
TIMESTAMP存储的是一UTC格式保存的,存储是对当前时区进行转换,检索时再转换回当前时区。
例子:
create table tbl_timestamp (
ts timestamp
);
insert into tbl_timestamp values (NOW());
mysql> select * from tbl_ts;
+---------------------+
| ts |
+---------------------+
| 2018-09-22 18:13:35 |
+---------------------+
1 row in set (0.00 sec)
//改变时区
mysql> set time_zone="+10:00";
Query OK, 0 rows affected (0.00 sec)
mysql> select * from tbl_ts;
+---------------------+
| ts |
+---------------------+
| 2018-09-22 20:13:35 |
+---------------------+
1 row in set (0.00 sec)
文本字符串类型
char(m)
varchar(m)
tinytext
text
mediumtext
longtext
enum
set
- char 和 varchar — 数字m表示多少个字符
二进制字符串类型
BLOB(M)
MEDIUMBLOB(M)
LONGBLOB(M)