当前位置: 首页 > news >正文

【MySQL】数据类型

在这里插入图片描述

文章目录

  • MySQL 数据类型表
    • 1. 数值类型
      • tinyint类型
      • BIT类型
      • float类型和decimal类型
    • 2. 日期和时间类型
    • 3. 字符串类型
      • char和varchar类型
    • 3. 枚举和集合类型
      • enum和set

MySQL 数据类型表

1. 数值类型

类型字节说明
TINYINT18 位整数,范围 -128127(无符号时 0255
SMALLINT216 位整数,范围 -32,76832,767(无符号时 065,535
MEDIUMINT324 位整数,范围 -8,388,6088,388,607(无符号时 016,777,215
INT / INTEGER432 位整数,范围 -2,147,483,6482,147,483,647(无符号时 04,294,967,295
BIGINT864 位整数,范围 -9,223,372,036,854,775,8089,223,372,036,854,775,807(无符号时 018,446,744,073,709,551,615
DECIMAL(M, D) / NUMERIC(M, D)变长精确浮点数,M 是总位数,D 是小数位数
FLOAT4单精度浮点数,精度约 7
DOUBLE / REAL8双精度浮点数,精度约 16

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

tinyint类型

tinyint类型和C++中的char的范围是一样的,当我们需要一个小的数值类型时,我们可以选择tinyint。
我们创建一个只有tinyint的表,然后向其插入数据:
验证tinyint类型的范围
在这里插入图片描述
在创建表的时候我们可以在tinyint类型后面加上unsigned,使其变成无符号类型:
无符号类型的数据返回时由以前的-128到127变成了0到255
在这里插入图片描述

BIT类型

基本语法:

bit[(M)] : 位字段类型。M表示每个值的位数,范围从164。如果M被忽略,默认为1

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

float类型和decimal类型

float类型
基本语法:

float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节

我们创建一张表:
注意:中括号中的第一个数字表示最高有多少位数字,包含小数点后的数字,第二个数字表示小数点后一共有多少位数字
在这里插入图片描述
我们这里创建的是最多4个数,最多显示两位小数:
在这里插入图片描述
上面这个是最坏的情况,当我们插入非法的数据的时候也会被阻止:
在这里插入图片描述

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


decimal
float类型和decimal类型都是小数类,有什么区别呢,有个很大的区别就是精度问题,当我们需要的精度很大时最好还是选择decimal,这里我们做一个测试,测试一下decimal和float的精度:
我们创建一张同时有float类型和decimal类型的表
在这里插入图片描述
向两张表中插入相同的数据,然后比较精度:
在这里插入图片描述
可以看到decimal完全符合要求。

2. 日期和时间类型

类型字节说明
DATE3仅存储日期,格式 YYYY-MM-DD,范围 1000-01-019999-12-31
DATETIME8日期 + 时间,格式 YYYY-MM-DD HH:MM:SS
TIMESTAMP4时间戳,格式 YYYY-MM-DD HH:MM:SS,自动更新,范围 1970-01-012038-01-19
TIME3仅存储时间,格式 HH:MM:SS,范围 -838:59:59838:59:59
YEAR1存储 4 位年份(19012155
date :日期 'yyyy-mm-dd' ,占用三字节
datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 10009999 ,占用八字节
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类型
基本语法:

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

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


varchar类型
基本语法:

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有多个爱好,所以我们应该用一个函数:
在这里插入图片描述
在这里插入图片描述
假如我们需要筛选两个标准:
在这里插入图片描述

相关文章:

  • API调用comfyui工作流,做一个自己的app,chatgpt给我写的前端,一键创建自己的卡通形象,附源码
  • 利用axios库的爬虫程序如何使用HTTP
  • 【Go | 从0实现简单分布式缓存】-7:增加etcd和gRPC功能
  • Windows控制台函数:设置区域属性函数FillConsoleOutputAttribute()
  • 静态路由配置实验相关过程
  • SOAP和REST的区别
  • 全方位 JVM 调优参数详解
  • 【BUG分析】微服务无法读取Nacos中的共享配置
  • MySQL事务及索引复习笔记
  • 笔记本电脑开机自动启用自定义电源计划方法
  • 利用java实现数据分析
  • FX-std::vector
  • 共享内存(System V)——进程通信
  • 计算机:基于深度学习的Web应用安全漏洞检测与扫描
  • Spark eventlog
  • AI重塑视觉艺术:DeepSeek与蓝耘通义万相2.1的图生视频奇迹
  • 神经网络的探秘:从基础到实战
  • ClickHouse 学习笔记
  • DataEase:一款国产开源数据可视化分析工具
  • Copy AI 技术浅析(一)
  • 上影节公布今年IMAX片单:暗涌、重生与感官的史诗
  • 河北邯郸回应被曝涉生猪未检疫、注水问题:将严厉查处违法行为
  • 巴基斯坦副总理兼外长达尔将访华
  • 国家统计局:中美大幅降低关税有利于双方贸易增长,也有利于世界经济复苏
  • 慢品巴陵,看总编辑眼中的岳阳如何书写“山水人文答卷”
  • 浙江理工大学传播系原系主任刘曦逝世,年仅44岁