整数类型

关于数据类型圆括号中的数字解释:
经常看到这样子的语句 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)
