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

《MySQL数据库基础》4. 数据类型

💡Yupureki:个人主页

✨个人专栏:《C++》 《算法》《Linux系统编程》《高并发内存池》《MySQL数据库》


🌸Yupureki🌸的简介:


目录

1. 数据类型分类

2. 数值类型

2.1 int类型

2.2 bit类型

2.3 浮点数类型

2.3.1 float类型

2.3.2 decimal类型

3. 字符串类型

3.1 char类型

3.2 varchar类型

4. 日期和时间类型

5. enum和set


1. 数据类型分类

MySQL中有许多的数据类型,这些类型有很多我们的"老朋友",如整型,浮点数,字符串等

2. 数值类型

用于存储整数、小数和浮点数,支持算术运算。

类型字节数范围(有符号)作用/特点
TINYINT1-128 ~ 127极小整数,如年龄、状态码
SMALLINT2-32768 ~ 32767小整数,如人口数量、小范围计数器
MEDIUMINT3-8388608 ~ 8388607中等整数,如中等规模的ID
INT4-2147483648 ~ 2147483647标准整数,最常用,如主键、常规ID
BIGINT8-2^63 ~ 2^63-1大整数,如超大表的主键、天文数字
FLOAT4约 ±3.4028E+38单精度浮点数,适合科学计算,有精度误差
DOUBLE8约 ±1.7977E+308双精度浮点数,精度更高,也存在误差
DECIMAL变长取决于精度和小数位数定点数,精确存储,适合金额、财务数据
BIT1~81 ~ 64 位二进制位字段类型,存储二进制标志

2.1 int类型

类型字节数范围(有符号)作用/特点
TINYINT1-128 ~ 127极小整数,如年龄、状态码
SMALLINT2-32768 ~ 32767小整数,如人口数量、小范围计数器
MEDIUMINT3-8388608 ~ 8388607中等整数,如中等规模的ID
INT4-2147483648 ~ 2147483647标准整数,最常用,如主键、常规ID
BIGINT8-2^63 ~ 2^63-1大整数,如超大表的主键、天文数字

tinyint测试范围边界:

说明:

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

无符号案例:

2.2 bit类型

类型字节数范围(无符号)作用/特点
BIT1~81 ~ 64 位二进制位字段类型,存储二进制标志

语法:

bit[(M)] :位字段类型。M表示有几个比特位,范围从164。如果M被忽略,默认为1

2.3 浮点数类型

类型字节数范围(有符号)作用/特点
FLOAT4约 ±3.4028E+38单精度浮点数,适合科学计算,有精度误差
DOUBLE8约 ±1.7977E+308双精度浮点数,精度更高,也存在误差
DECIMAL变长取决于精度和小数位数定点数,精确存储,适合金额、财务数据

2.3.1 float类型

语法:

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

如:float(4,2)表示的范围是-99.99~99.99,MySQL在保存值时会进行四舍五入。

边界:

四舍五入:

99.991->99.99

99.995->100.00,因此会报错

无符号:

如果定义的是float(4,2) unsigned这时,因为把它指定为无符号的数,范围是0 ~ 99.99

2.3.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表示的精度不一样

说明:float表示的精度大约是7位。
decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,
默认是10。

因此如果希望小数的精度高,推荐使用decimal。

3. 字符串类型

类型最大长度作用/特点
CHAR255 字符定长字符串,存储时右补空格,适合长度固定的数据,如性别
VARCHAR65535 字节(受字符集影响)变长字符串,节省空间,适合长度可变的数据,如姓名、地址
BINARY255 字节定长二进制数据,类似 CHAR,但存储字节,适合加密散列值
VARBINARY65535 字节变长二进制数据,适合图片、文件的原始字节
TINYBLOB255 字节极小二进制大对象,适合小图片、小文件
BLOB65535 字节(64KB)二进制大对象,适合中等大小文件
MEDIUMBLOB16777215 字节(16MB)中等二进制对象
LONGBLOB4GB极大二进制对象
TINYTEXT255 字符极短文本
TEXT65535 字符长文本,适合文章内容、评论
MEDIUMTEXT16777215 字符中等长度文本
LONGTEXT4GB 字符极长文本,适合存储大段文字

这么多类型,眼睛都花了。没事,其实常用的就两种:

类型最大长度作用/特点
CHAR255 字符定长字符串,存储时右补空格,适合长度固定的数据,如性别
VARCHAR65535 字节(受字符集影响)变长字符串,节省空间,适合长度可变的数据,如姓名、地址

3.1 char类型

语法:

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

说明:char(2)表示可以存放两个字符,可以是字母或汉字。但是char大小最大只能是255

3.2 varchar类型

语法:

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

说明:

char(6)表示内存中开辟了6个字节的大小

而varchar(6)只表明最大的字节数是6,并不直接开6个字节的大小,而是你用多少开多少。比如你只需要3个字节,那么他就只会开3个字节,这样节省了空间

关于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字节)。

4. 日期和时间类型

用于存储日期、时间或时间戳,支持日期函数运算。

类型格式范围作用/特点
DATEYYYY-MM-DD1000-01-01 ~ 9999-12-31存储日期,如生日、入职日期
TIMEHH:MM:SS-838:59:59 ~ 838:59:59存储时间或时间间隔,如营业时间
DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:59存储日期和时间,不受时区影响
TIMESTAMPYYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC时间戳,受时区影响,自动更新(可配置)
YEARYYYY1901 ~ 2155存储年份,如车辆生产年份

其中时间戳timestamp可自动配置,设置其default默认值等于当前时间即可

5. enum和set

类型最大长度作用/特点
ENUM65535 个成员枚举类型,从预定义列表中选择一个值,节省空间
SET64 个成员集合类型,可从预定义列表中选择多个值,用逗号分隔

语法:

  • enum:枚举,“单选”类型;
  • enum('选项1','选项2,'选项3...);

该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考虑,这些值实际存储的是”数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3..最多65535个;当我们添加枚举值时,也可以添加对应的数字编号。

  • set:集合,“多选”类型;部
  • set('选项值1','选项值2','选项值3',..);

该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字1,2,4,8,16,32,..

set中可以选一个或多个,而enum只能选一个

http://www.jsqmd.com/news/497623/

相关文章:

  • 别再花冤枉钱了!强推10款国内免费降AI神器,一键破解论文AIGC难题(附传送门)
  • 基于Vue.js的实验室耗材管理系统设计与实现 毕业设计源码+论文+PPT
  • 基础 语法
  • 机器人关节润滑脂如何选择?工程师必须了解的技术指标
  • 数组指针:高效操作多维数组
  • MATLAB与CST联合仿真:快速建模超表面阵列,涡旋波生成与雷达散射优化
  • 分享两道关于运算符号的题目
  • 全息医疗诊断测试:医生在空中操作器官模型的精度验证
  • 嘎嘎降AI升级双引擎技术,9大检测平台达标率超99%
  • Java面试八股文问答集——大厂必备含金量20题
  • 挖洞必看!40 个漏洞挖掘姿势吐血整理,小白也能快速挖到洞
  • ASP.NET公交车管理系统的实现与设计(源代码+论文)
  • 基于springboot的作业批改系统设计与实现 毕业设计源码+论文+PPT
  • TPC标准基准测试:如何评估并建立TDengine时序数据库的性能基线
  • 【苍穹外卖|项目日记】 第二天
  • Day2 java的基础语法
  • 论文降AIGC太难?这10个国内免费降AI工具一键搞定降重(附全套传送门)
  • 第六:Jmeter - 从入门到精通 - 创建网络测试计划
  • (部分转载)电视端多邻国专用浏览器:轻量化+大屏适配+遥控器直接用
  • RAG核心技术全解析:Embedding选型、面试高频问题与Rerank重排序原理
  • 科学备孕——吃点好的,生健康宝宝! - 企业推荐官【官方】
  • 图像处理原理
  • 2026西南金刚砂地坪材料厂家推荐榜附本地地址:环氧地坪双包施工、环氧地坪施工队、环氧地坪材料哪家好、环氧地坪材料生产选择指南 - 优质品牌商家
  • AI Agent在企业架构领域应用研究
  • 论文AI率飙高?这10款降AI率工具亲测有效,轻松搞定论文检测!
  • java并发
  • 手持终端PDA怎么选?一篇讲清核心要点与实用推荐 - 企业推荐官【官方】
  • python-flask大学生家教管理系统
  • 关于@overload装饰器的几点理解
  • 运维转行网络安全:从优势切入,6-12个月实战转型指南