数据类型
int: 整数类型 -2^31 - 2^31-1 (-2147483648 - 2147483647)
tinyint: 最小整数 -128 - 127 #一般用在年龄
varchar: 字符类型 (变长,最大65535)
char: 字符类型 (定长,最大255)
enum: 枚举类型 #一般用在性别,指定的选项选一个
datetime: 时间类型 年月日时分秒
#以前使用 timestamp
#两者所能存储的时间范围不一样
timestamp所能存储的时间范围为:'1970-01-01 00:00:01.000000' 到 '2038-01-19 03:14:07.999999'。
datetime所能存储的时间范围为:'1000-01-01 00:00:00.000000' 到 '9999-12-31 23:59:59.999999'。
数据类型enum使用
#创建一个表,性别为枚举类型
mysql> create table qiudao(id int,gender enum('male','female','qiudao'));
Query OK, 0 rows affected (0.01 sec)
#查看表结构
mysql> desc qiudao;
+--------+--------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------------------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| gender | enum('male','female','qiudao') | YES | | NULL | |
+--------+--------------------------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
#测试插入数据
mysql> insert into qiudao values(1,'nan');
ERROR 1265 (01000): Data truncated for column 'gender' at row 1
#添加数据必须填写枚举类型指定的选项,其他的值填写都报错
mysql> insert into qiudao values(1,'male');
Query OK, 1 row affected (0.00 sec)
数据类型int使用
#查看表属性
mysql> desc qiudao;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
#第一种情况,插入数据,超过数据类型范围,直接取最大值写入
mysql> insert into lhd values(11111111111);
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> select * from lhd;
+------------+
| id |
+------------+
| 2147483647 |
+------------+
1 row in set (0.00 sec)
#以上结果有问题,执行 set sql_mode='STRICT_TRANS_TABLES';
#第一种情况,插入数据,超过数据类型范围,直接报错
mysql> insert into lhd values(11111111111);
ERROR 1264 (22003): Out of range value for column 'id' at row 1
#插入的数据不能超过int类型的范围
mysql> insert into lhd values(2147483648);
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> insert into lhd values(2147483647);
Query OK, 1 row affected, 1 warning (0.00 sec)