前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【MySQL】数据类型

【MySQL】数据类型

作者头像
用户11305458
发布2025-03-13 08:32:26
发布2025-03-13 08:32:26
7000
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

MySQL 数据类型表

1. 数值类型

类型

字节

说明

TINYINT

1

8 位整数,范围 -128 到 127(无符号时 0 到 255)

SMALLINT

2

16 位整数,范围 -32,768 到 32,767(无符号时 0 到 65,535)

MEDIUMINT

3

24 位整数,范围 -8,388,608 到 8,388,607(无符号时 0 到 16,777,215)

INT / INTEGER

4

32 位整数,范围 -2,147,483,648 到 2,147,483,647(无符号时 0 到 4,294,967,295)

BIGINT

8

64 位整数,范围 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807(无符号时 0 到 18,446,744,073,709,551,615)

DECIMAL(M, D) / NUMERIC(M, D)

变长

精确浮点数,M 是总位数,D 是小数位数

FLOAT

4

单精度浮点数,精度约 7 位

DOUBLE / REAL

8

双精度浮点数,精度约 16 位

数值类型中我们着重讲解tinyint类型和int类型还有float类型和decimal类型

tinyint类型

tinyint类型和C++中的char的范围是一样的,当我们需要一个小的数值类型时,我们可以选择tinyint。 我们创建一个只有tinyint的表,然后向其插入数据: 验证tinyint类型的范围

在创建表的时候我们可以在tinyint类型后面加上unsigned,使其变成无符号类型: 无符号类型的数据返回时由以前的-128到127变成了0到255

BIT类型

基本语法:

代码语言:javascript
代码运行次数:0
运行
复制
bit[(M)] : 位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。

我们创建一张表,然后测试BIT类型的范围,可以看见,当超过BIT类型的最大范围的时候,操作是不被允许的。 通常我们查询的时候,前面都带有0X样式的十六进制:

查看十进制样式

float类型和decimal类型

float类型: 基本语法:

代码语言:javascript
代码运行次数:0
运行
复制
float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节

我们创建一张表: 注意:中括号中的第一个数字表示最高有多少位数字,包含小数点后的数字,第二个数字表示小数点后一共有多少位数字

我们这里创建的是最多4个数,最多显示两位小数:

上面这个是最坏的情况,当我们插入非法的数据的时候也会被阻止:

不管是float还是decimal,都是有四舍五入的性质的,假如我们只要求保留2位小数,我们加上第三位小数,这里第三位小数会被四舍五入,如果四舍五入之后的数字是合法的那么会被插入到表中,如果不合法则会报错

decimal float类型和decimal类型都是小数类,有什么区别呢,有个很大的区别就是精度问题,当我们需要的精度很大时最好还是选择decimal,这里我们做一个测试,测试一下decimal和float的精度: 我们创建一张同时有float类型和decimal类型的表

向两张表中插入相同的数据,然后比较精度:

可以看到decimal完全符合要求。

2. 日期和时间类型

类型

字节

说明

DATE

3

仅存储日期,格式 YYYY-MM-DD,范围 1000-01-01 到 9999-12-31

DATETIME

8

日期 + 时间,格式 YYYY-MM-DD HH:MM:SS

TIMESTAMP

4

时间戳,格式 YYYY-MM-DD HH:MM:SS,自动更新,范围 1970-01-01 到 2038-01-19

TIME

3

仅存储时间,格式 HH:MM:SS,范围 -838:59:59 到 838:59:59

YEAR

1

存储 4 位年份(1901 到 2155)

代码语言:javascript
代码运行次数:0
运行
复制
date :日期 'yyyy-mm-dd' ,占用三字节
datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用八字节
timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用
四字节

日期类型没有什么好说的,只是表现形式不同,timestamp可以用来获取当前时间。 我们创建一张三个类型的表:

插入数据:

可以看见,很简单的三个类型。

3. 字符串类型

类型

字节

说明

CHAR(M)

M

固定长度字符串(0-255)

VARCHAR(M)

变长

可变长度字符串(0-65535,取决于 row format)

TEXT

变长

长文本,最大 65535 字节

TINYTEXT

变长

最多存储 255 字节

MEDIUMTEXT

变长

最多存储 16,777,215 字节

LONGTEXT

变长

最多存储 4,294,967,295 字节

BLOB

变长

二进制大对象

TINYBLOB

变长

最多存储 255 字节

MEDIUMBLOB

变长

最多存储 16,777,215 字节

LONGBLOB

变长

最多存储 4,294,967,295 字节

char和varchar类型

char类型: 基本语法:

代码语言:javascript
代码运行次数:0
运行
复制
char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255

注意:char类型括号中代表的是字符串长度,虽然中文汉字占3个字节,但是如果我们定义的char(2)还是可以插入两个汉字,这里的字符是指符号,而不是像C++中的一个字符占几个字节的那种。


varchar类型: 基本语法:

代码语言:javascript
代码运行次数:0
运行
复制
varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节

varchar和char的区别就是char是固定大小的,而varchar是假如我们定义的是varchar(32),我们用多少varchar只开辟多少,而char是原本就是多少,不管我们用多少,这个char都是那么大 但是varchar65535中有3个字节是用来管理的。

3. 枚举和集合类型

类型

说明

ENUM('value1', 'value2', ...)

枚举类型,存储单选值,最多可定义 65,535 个选项

SET('value1', 'value2', ...)

集合类型,存储多选值,最多可定义 64 个选项

enum和set

enum只支持单选1,而set支持多选多 我们创建一张表对比一下这两个类型:

插入数据:

set插入多个数据:

查找数据

我们已set为基准查找:

可以看见mick被排除在外了,因为mick有多个爱好,所以我们应该用一个函数:

假如我们需要筛选两个标准:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySQL 数据类型表
    • 1. 数值类型
      • tinyint类型
      • BIT类型
      • float类型和decimal类型
    • 2. 日期和时间类型
    • 3. 字符串类型
      • char和varchar类型
    • 3. 枚举和集合类型
      • enum和set
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档