MySQL---数据类型

各个数据类型

数值类型分类

1、tinyint类型

查表结构

查看数据库内部的表名称

查看t1表创建时的语法细节

插入几个数据

如果我们向mysql特定的类型中插入不合法的数据,MySQL一般是直接拦截我们,不让我们做对应的操作。

反之,如果我们已经有数据被成功插入到mysql中了,一定插入的时候是合法的。

所以,mysql中,一般而言,数据类型本身也是一种:约束(倒逼程序员让程序员,让程序员尽可能进行正确的插入,约束:约束使用者,另外,如果你不是一个很好的使用者,mysql也能保证数据插入的合法性)。

设置足够多的约束,就能保证数据库中的数据是可预期的,完整的。

mysql表中建立属性列:列名称 类型在后。

num tinyint unsigned

2、bit类型

只有一个bit,所以不能插入了。

查看插入的数据

修改online


bit字段在显示时,是按照ASCII码对应的值显示。

mysql> insert into tt4 values(65, 65);
mysql> select * from tt4;
+------+------+
| id | a |
+------+------+
| 10 | |
| 65 | A |
+------+------+
如果我们有这样的值,只存放0或1,这时可以定义bit(1)。这样可以节省空间。
mysql> create table tt5(gender bit(1));
mysql> insert into tt5 values(0);
Query OK, 1 row affected (0.00 sec)
mysql> insert into tt5 values(1);
Query OK, 1 row affected (0.00 sec)
mysql> insert into tt5 values(2); -- 当插入2时,已经越界了
ERROR 1406 (22001): Data too long for column 'gender' at row 1

bit(M) : 位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。
超出范围就会报错

3、小数类型

(1)float

float(m, d) unsigned : M指定显示长度,d指定小数位数,占用空间4个字节
例如:float(4,2)表示:
数字整体最多占4位,包括整数和小数。2表示:小数点后面
固定保留两位小数。
浮点数范围是:-99.99~99.99

查看表,字段、类型,约束

插入数据

无符号的:


检验其范围:

由下图可以知道,无符号的float,加 UNSIGNED 后:
直接去掉负数了

(2)decimal

用法: decimal(m, d) unsigned : 定点数m指定长度,d表示小数点的位数

decimal(5,2) 表示的范围是 -999.99 ~ 999.99
decimal(5,2) unsigned 表示的范围 0 ~ 999.99
decimal和float很像,但是有区别:
float和decimal表示的精度不一样
例如:
mysql> create table tt8 ( id int, salary float(10,8), salary2
decimal(10,8));
mysql> insert into tt8 values(100,23.12345612, 23.12345612);
Query OK, 1 row affected (0.00 sec)
mysql> select * from tt8;
+------+-------------+-------------+
| id | salary | salary2 |
+------+-------------+-------------+
| 100 | 23.12345695 | 23.12345612 | # 发现decimal的精度更准确,因此如果我们希望某
个数据表示高精度,选择decimal
+------+-------------+-------------+
说明:float表示的精度大约是7位。
decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,
默认是10。
建议:如果希望小数的精度高,推荐使用decimal。

4、字符串类型

(1)char

char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255


插入字符串长度是有限制的。

插入的结果是:

char(2) 表示可以存放两个字符,可以是字母或汉字,但是不能超过2个, 最多只能是255

(2)varchar

varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节

判断设置的varchar的边界,如下图:设置的正好是6个,汉字算一个字符,标点符号也算是一个字符


关于varchar(len),len到底是多大,这个len值,和表的编码密切相关。
varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字
节数是65532。
当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844因为utf中,一个字符占** **用3个字节,如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符
占用2字节)。

验证varchar的大小长度:

mysql> create table tt11(name varchar(21845))charset=utf8; --验证了utf8确实是不
能超过21844
ERROR 1118 (42000): Row size too large. The maximum row size for the used
table type, not counting BLOBs, is 65535. You have to change some columns to
TEXT or BLOBs
mysql> create table tt11(name varchar(21844)) charset=utf8;
Query OK, 0 rows affected (0.01 sec)

char和varchar的区别:

  1. 存储长度机制 char (n):固定占用 n 个字符位置,存入内容不足 n 位时,末尾自动填充空格补齐; varchar (n):最多容纳 n 个字符,存多少占用多少位置,不会额外补空格。

  2. 存储空间开销 char 空间大小完全固定;varchar 除了存储文本,会多 1~2 字节用来记录实际字符长度,整体数据参差不齐时更省磁盘。

  3. 尾部空格处理 char 查询返回时会自动截断末尾填充的空格;varchar 输入的空格会完整保存、原样读取。

  4. 查询性能 char 长度规整,数据库寻址读取更快;varchar 需要读取长度标识,速度略逊一筹。

  5. 使用场景 char 适合长度稳定不变的数据,如手机号、身份证号、状态码; varchar 适合长短差异大的内容,如姓名、地址、备注、描述文字。

(3)日期和时间类型

常用的日期有如下三个:
date :日期 'yyyy-mm-dd' ,占用三字节
datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用八字节
timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用
四字节
创建一个数据表


插入数据

插入的结果是

5、enum和set

语法:

enum:枚举,"单选类型"

enum('选项1','选项2','选项3',...);enum也可以以1,2 这样的下标插入(选择)

set:集合,"多选"类型

set('选项值1','选项值2','选项值3',...);


查看数据表votes的结构

插入数据

相关推荐
MonolithIoT11 小时前
实战方案|设备备件无人值守仓库:连续化产线运维备件 7×24 小时数字化管控方案
运维·网络·数据库
瞬间&永恒~11 小时前
【MySQL】4-6:在同一个主机上使用 systemd 运行多个 MySQL服务器
服务器·数据库·mysql
心机之蛙qee11 小时前
Redis的主从、哨兵及集群
数据库·redis·缓存
gwf21612 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
AAA@峥12 小时前
CentOS7 源码编译安装 MySQL5.7|SQL 基础操作 + 备份恢复完整实战
运维·数据库·sql·centos
xixingzhe212 小时前
spring ai简单使用skills
数据库·人工智能·spring
Fu20672113 小时前
数据库第三次作业
数据库
AI多Agent协作实战派13 小时前
AI多Agent协作系统实战(二十三):Agent读HEARTBEAT.md不读AGENTS.md——openclaw的文件加载之谜
前端·数据库·人工智能·uni-app
一嘴一个橘子14 小时前
MysqL 哪些情况适合创建索引
mysql
jun_bai14 小时前
postgresql数据库免安装版安装到windows系统
数据库·postgresql