最全mysql数据类型梳理汇总


当前第2页 返回上一页

我们创建一个名为yunweijia_2的数据表,使用以下sql语句:

mysql> create table yunweijia_2 (y year);
Query OK, 0 rows affected (0.04 sec)
mysql>

然后我们往表中插入一条数据;

mysql> insert into yunweijia_2 values(2022), ('2022');
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql>

再次尝试插入一条数据;

mysql> insert into yunweijia_2 values ('2166');
ERROR 1264 (22003): Out of range value for column 'y' at row 1
mysql>

我们发现‘2166’超出了YEAR类型的取值范围,所以不能插入数据,这个时候我们看下mysql数据库中的数据;

mysql> select * from yunweijia_2;
+------+
| y |
+------+
| 2022 |
| 2022 |
+------+
2 rows in set (0.00 sec)
mysql>

栗子:

首先我们先删除yunweijia_2数据表中的数据;

mysql> delete from yunweijia_2;
Query OK, 2 rows affected (0.01 sec)
mysql>

可以看到提示删除了两条数据;

然后我们再插入以下数据;

mysql> insert into yunweijia_2 values ('0'), ('00'), ('88'), ('22');
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql>

然后看下结果是什么:

mysql> select * from yunweijia_2;
+------+
| y |
+------+
| 2000 |
| 2000 |
| 1988 |
| 2022 |
+------+
4 rows in set (0.00 sec)
mysql>

从上面i看到,字符串‘0’和‘00’的作用相同,分别都转换成了2000年;‘88’转换成了‘1988’;‘22’转换成了‘2022’。

栗子:

老规矩,先删除表中现有的数据;

mysql> delete from yunweijia_2;
Query OK, 4 rows affected (0.01 sec)
mysql>

然后再插入数据:

mysql> insert into yunweijia_2 values (0), (99), (22);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql>

看下结果:

mysql> select * from yunweijia_2;
+------+
| y |
+------+
| 0000 |
| 1999 |
| 2022 |
+------+
3 rows in set (0.00 sec)
mysql>

可以看到,0被转换成了0000,99被转换成了1999,22被转换成了2022。

TIME

time类型用在只需要时间信息的值,在存储时需要3字节,格式为HH:MM:SS

其中,HH表示小时,MM表示分钟,SS表示秒。

mysqltime类型的取值范围为-838:59:59~838:59:598,小时部分为什么会这么大呢,这是因为time类型不仅可以用来表示一天的时间,还可能是某个事件过去的时间或者两个事件之间的时间间隔。

(1)‘D HH:MM:S’格式的字符串,可以使用下面任何一种“非严格”的语法:

  • ‘HH:MM:SS’
  • ‘HH:MM’
  • ‘D HH:MM’

这里的D表示日,可以取0~34的值,在插入数据库时,D被转换成小时保存,格式为“D*24+HH”;

(2)‘HH:MM:SS’格式的、没有间隔符的字符串或者HHMMSS格式的数值,假定是有意义的时间。例如:'223344'被理解成‘22:33:44’,但是‘223366’是不合法的(他有一个没有意义的秒部分),存储时将变成00:00:00。

注意点:

time列分配简写时应该注意,如果没有冒号,mysql解释值时,假定最右边的两位表示秒。如果time值中使用了冒号,则肯定被单做是当天的时间。

例如:

11:22 会被mysql解释成 00:11:22

'11:22'会被mysql解释成11:22:00

栗子

创建一个名为yunweijia_3的数据表;

mysql> create table yunweijia_3(t time);
Query OK, 0 rows affected (0.03 sec)
mysql>

往这个表中插入数据:

mysql> insert into yunweijia_3 values ('10:06:06'), ('22:22'), ('2 10:10'), ('3 00'), ('20');
Query OK, 5 rows affected (0.01 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql>

看下表中的数据:

mysql> select * from yunweijia_3;
+----------+
| t |
+----------+
| 10:06:06 |
| 22:22:00 |
| 58:10:00 |
| 72:00:00 |
| 00:00:20 |
+----------+
5 rows in set (0.00 sec)
mysql>

小提示:在使用‘D HH’格式时,小时一定要使用双位数值,如果是小于10的小时数,应在前面加0以用来补全双位数值。

举个栗子 :

首先我们删除数据表yunweijia_3里面的数据;

mysql> delete from yunweijia_3;
Query OK, 5 rows affected (0.01 sec)
mysql>

然后再表中插入数据:

mysql> insert into yunweijia_3 values ('101112'), (111213), ('0');
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql>

再次向表中插入一条数据;

mysql> insert into yunweijia_3 values (107010);
ERROR 1292 (22007): Incorrect time value: '107010' for column 't' at row 1
mysql>

可以看到这条数据没有插入成功,我看看下提示信息;

mysql> show warnings;
+-------+------+--------------------------------------------------------+
| Level | Code | Message |
+-------+------+--------------------------------------------------------+
| Error | 1292 | Incorrect time value: '107010' for column 't' at row 1 |
+-------+------+--------------------------------------------------------+
1 row in set (0.00 sec)
mysql>

为什么这次会插入失败呢,是不是因为我们的分钟应该是小于60的啊,但是这里是70,所以报错了。

我们查看下这个数据库中的数据现在的展示吧:

mysql> select * from yunweijia_3;
+----------+
| t |
+----------+
| 10:11:12 |
| 11:12:13 |
| 00:00:00 |
+----------+
3 rows in set (0.00 sec)
mysql>

又举个栗子:

我们还可以使用系统函数向time字段列插入值;

删除数据表yunweijia_3里面的数据;

mysql> delete from yunweijia_3;
Query OK, 3 rows affected (0.01 sec)
mysql>

然后在表中插入数据;

mysql> insert into yunweijia_3 values (CURRENT_TIME), (NOW());
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql>

查看下数据库中的结果;

mysql> select * from yunweijia_3;
+----------+
| t |
+----------+
| 23:03:41 |
| 23:03:41 |
+----------+
2 rows in set (0.00 sec)

mysql>

从结果中可以看到,获取系统当前的日志插入到time类型的列中。

到此这篇关于最全mysql数据类型梳理汇总的文章就介绍到这了,更多相关mysql数据类型内容请搜索

更多相关Mysql内容来自木庄网络博客


标签:Mysql

返回前面的内容

相关阅读 >>

mysql存储过程返回多个结果集吗

mysql修改权限后本地无法登录怎么办

windows下mysql-5.7.22-winx64突然启动不了,报错could not open log file

详解mysql实现主从复制过程_mysql实例详解

通过mysql 判断点是否在指定多边形区域内

mysql数据库中影响性能因素的讲解(附数据库架构案例)

如何解决ip 连不上mysql

mysql数据库怎么给表增加一个字段?

mysql中对数据的操作介绍(代码示例)

《阿里巴巴java开发手册》里面写超过三张表禁止join,这是为什么?

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...