一 创建数据表tmp3,定义数据类型为YEAR的字段y,向表中插入值2010,’2010’,’2166’
首先创建表tmp3:
mysql> CREATE TABLE tmp3( y YEAR );
Query OK, 0 rows affected (0.27 sec)
向表中插入数据:
mysql> INSERT INTO tmp3 values(2010),('2010');
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0
再次向表中插入数据:
mysql> INSERT INTO tmp3 values ('2166');
ERROR 1264 (22003): Out of range value for column 'y' at row 1
语句执行之后,MySQL给出了一条错误提示,使用SHOW查看错误信息:
mysql> SHOW WARNINGS;
+-------+------+--------------------------------------------+
| Level | Code | Message |
+-------+------+--------------------------------------------+
| Error | 1264 | Out of range value for column 'y' at row 1 |
+-------+------+--------------------------------------------+
1 row in set (0.00 sec)
可以看到,插入的第3个值2166超过了YEAR类型的取值范围,此时不能正常的执行插入操作,查看结果:
mysql> SELECT * FROM tmp3;
+------+
| y |
+------+
| 2010 |
| 2010 |
+------+
2 rows in set (0.00 sec)
由结果可以看到,当插入值为数值类型的2010或者字符串类型的’2010’时,都正确的储存到了数据库中;而当插入值’2166’时,由于超出了YEAR类型的取值范围,因此,不能插入值。
二 向tmp3表中y字段插入2位字符串表示的YEAR值,分别为'0'、'00'、'77'和'10'
首先删除表中的数据:
mysql> DELETE FROM tmp3;
Query OK, 2 rows affected (0.03 sec)
向表中插入数据:
mysql> INSERT INTO tmp3 values('0'),('00'),('77'),('10');
Query OK, 4 rows affected (0.03 sec)
Records: 4 Duplicates: 0 Warnings: 0
查看结果:
mysql> SELECT * FROM tmp3;
+------+
| y |
+------+
| 2000 |
| 2000 |
| 1977 |
| 2010 |
+------+
4 rows in set (0.00 sec)
由结果可以看到,字符串'0'和'00'的作用相同,分别都转换成了2000年;'77'转换为1977;'10'转换为2010。
三 向tmp3表中y字段插入2位数字表示表示的YEAR值,分别为0、78和11
首先删除表中的数据:
mysql> DELETE FROM tmp3;
Query OK, 4 rows affected (0.03 sec)
向表中插入数据:
mysql> INSERT INTO tmp3 values(0),(78),(11);
Query OK, 3 rows affected (0.03 sec)
Records: 3 Duplicates: 0 Warnings: 0
查看结果:
mysql> SELECT * FROM tmp3;
+------+
| y |
+------+
| 0000 |
| 1978 |
| 2011 |
+------+
3 rows in set (0.00 sec)
由结果可以看到,0被转换为0000;78被转换为1978;11被转换为2011。
四 创建数据表tmp4,定义数据类型为TIME的字段t,向表中插入值'10:05:05'ÿ