[MySQL初阶]MySQL数据类型

发布于:2025-04-07 ⋅ 阅读:(27) ⋅ 点赞:(0)


1. 数据类型分类

数据库中的类型决定了在存储位置中,占据的空间大小以及如何识别的问题。

在这里插入图片描述


2. 数值类型


2.1 tinyint类型

在这里插入图片描述

修改类型:
在这里插入图片描述

mysql> create table tt1(num tinyint);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into tt1 values(128); -- 越界插入,报错
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> select * from tt1;
+------+
| num |
+------+
| 1 |
+------+
1 row in set (0.00 sec)

当我们插入数据的时候,数据本身是有自己的取值范围的,MySQL是不允许我们插入超出范围的数。——MySQL对于数据的存储有更严格的约束。

MySQL数据类型本身就是一种约束。

unsigned char c = -1; 
// C中,这个语句不会报错,会让我们写入(但是写入后值对不对就是未知的)
// 内存空间只认识二进制,是先把-1转化为二进制

在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。
可以通过UNSIGNED来说明某个字段是无符号的

无符号案例:

mysql> create table tt2(num tinyint unsigned);

mysql> insert into tt2 values(-1); -- 无符号,范围是: 0 - 255
ERROR 1264 (22003): Out of range value for column 'num' at row 1

mysql> insert into tt2 values(255);
Query OK, 1 row affected (0.02 sec)

mysql> select * from tt2;
+------+
| num |
+------+
| 255 |
+------+
1 row in set (0.00 sec)

注意:尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。


2.2 bit类型

bit[(M)] : 位字段类型。
M表示每个值的位数,范围从164。如果M被忽略,默认为1。
可以让我们对数据进行比特位的操作。
mysql> create table t2 ( id int, a bit(8));
Query OK, 0 rows affected (0.01 sec)

mysql> insert into t2 values(10, 10);
Query OK, 1 row affected (0.01 sec)

mysql> select * from t2; #发现很怪异的现象,a的数据10没有出现
+------+------+
| id | a |
+------+------+
| 10 | |
+------+------+
1 row in set (0.00 sec)

在这里插入图片描述
10的ASCII码是控制字符LF,控制字符不可显示。

bit使用的注意事项:
bit字段在显示时,是按照ASCII码对应的值显示。

mysql> insert into t2 values(65, 65);

mysql> select * from t2;
+------+------+

网站公告

今日签到

点亮在社区的每一天
去签到