文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【mysql】—— 数据类型详解

2023-08-31 19:34

关注

序言:

本期我将大家认识关于 mysql 数据库中的基本数据类型的学习。通过本篇文章,我相信大家对mysql 数据类型的理解都会更加深刻。

MySQL标志矢量图 - 设计之家

目录

(一)数据类型分类

(二)数值类型

1、tinyint类型

2、bit类型

3、小数类型

float类型

decimal

4、字符串类型

char

varchar

char和varchar比较

日期和时间类型

enum和set

总结


(一)数据类型分类

首先,在我们正式的学习数据类型之前,我们需要知道有哪些数据类型在mysql数据库中。因此,接下来我首先带大家认识具体有哪些数据类型。

💨 MySQL中的数据类型可以分为以下几个主要分类:

1️⃣数值类型

2️⃣字符串类型

3️⃣日期和时间类型

4️⃣ 布尔类型

5️⃣枚举和集合类型

6️⃣二进制类型

7️⃣ JSON类型:用于存储和处理JSON格式的数据。

 8️⃣空间数据类型:用于处理地理空间数据。

最后,我给大家整理总结了一张表,大家可以直观的去感受(对于其中红色的是需要大家掌握的,其余的等到需要用到的时候在学习不迟!!)

MySQL的数据类型都有哪些?它们分别用在什么的场景?_人山人海肉最可爱的博客-CSDN博客_数据类型有哪几种

【小结】

这些数据类型可以根据需求在MySQL表的列定义中使用。在选择数据类型时,需要考虑存储需求、数据的精度要求、操作和计算的效率等因素。此外,MySQL还支持一些特殊的数据类型和存储引擎相关的数据类型,如GEOMETRY、POINT、XML等,可以根据具体需求选择使用。


(二)数值类型

下面是一些常用的数据类型值:

MySQL常见数据类型详解_mysql中 数值数据类型包括2种,分别是( )数据类型和( )数据类型。_你走开``的博客-CSDN博客


1、tinyint类型

MySQL中的 TINYINT 类型是一种整数类型,用于存储小整数值,占用1个字节的存储空间。

下面是关于TINYINT类型的详解

数据范围和存储空间:

用途:

有符号和无符号:

存储方式:

💨 示例:

①创建一个TINYINT列:

 

②插入数据:

 

 ③查询数据:

【小结】 

但是接下来,我在插入这样的数据,看最终是否还能成功的插入呢?

 【说明】

  1. MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。
  2. 可以通过UNSIGNED来说明某个字段是无符号的
①创建一个TINYINT列:

 ②插入数据(注意范围):

 ③查询数据:

 

 

【注意】
【小结】 总之,TINYINT类型是MySQL中的一种整数类型,适用于存储布尔值或较小的整数。 它占用较少的存储空间,查询和计算效率高。可以根据需要选择是否使用有符号或无符号的TINYINT类型。

2、bit类型

MySQL中的BIT类型是一种用于存储位字段(bit fields)的数据类型。

下面是关于BIT类型的详解

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

存储空间

位数限制

存储方式

使用场景

查询和计算操作

默认值

💨 示例:

①创建一个 bit 列:

 

 ②插入数据(注意范围):

  ③查询数据:

 【说明】

  1. 此时我们会发现很怪异的现象,a的数据10没有出现;
  2. 其实 bit 字段在显示时,是按照ASCII码对应的值显示,因此当我们插入 10之后没有任何显示

 

【注意】

如果我们有这样的值,只存放 0 1 ,这时可以定义 bit(1) 。这样可以节省空间

 

【小结】

总之,BIT类型是用于存储位字段的数据类型,可以指定位数范围,并以二进制形式进行存储。

它适用于存储布尔值或位掩码,并可以使用位运算操作符进行查询和计算操作。

需要注意的是:在操作BIT类型数据时,需要使用适当的位运算操作符来处理位级别的操作。


3、小数类型

float类型

MySQL中的FLOAT类型是一种浮点数类型,用于存储单精度浮点数。

下面是有关FLOAT类型的详解

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

存储范围和精度

精度和舍入错误

默认值

查询和操作

存储方式

💨 示例1:

 

💨 示例2:

 

【小结】

总之,FLOAT类型是MySQL中的一种浮点数类型,适用于存储具有小数部分的数值。

它占用较少的存储空间,并提供了一定的范围和精度。

然而,在进行浮点数计算时,需要注意舍入误差和精度损失可能带来的影响。如果需要更高的精度,可以考虑使用DOUBLE类型。


decimal

MySQL中的DECIMAL类型是一种精确数值类型,用于存储固定精度的小数值

下面是关于DECIMAL类型的详解

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

【说明】

  1. decimal(5,2) 表示的范围是 -999.99 ~ 999.99
  2. decimal(5,2) unsigned 表示的范围 0 ~ 999.99
  3. decimalfloat很像,但是有区别: floatdecimal表示的精度不一样

存储空间

精度和小数位数

范围

存储方式

精确计算

使用场景

💨 示例:

【说明】

  1. float表示的精度大约是7位;
  2. decimal整数最大位数m65。支持小数最大位数d30。如果d被省略,默认为0.如果m被省略, 默认是10

💨 建议:如果希望小数的精度高,推荐使用decimal

【小结】

总之,DECIMAL类型是MySQL中的一种精确数值类型,用于存储固定精度的小数值。

它提供了精确的计算和存储,并适用于需要高精度和准确性的场景。

在定义DECIMAL列时,需要指定精度和小数位数,以满足具体的业务需求。


4、字符串类型

char

MySQL中的CHAR类型是一种固定长度的字符串类型,用于存储定长的字符数据。

下面是关于CHAR类型的详解

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

存储空间

长度限制

填充空格

查询效率

存储方式

使用场景

💨 示例:

 

【说明】

 

【小结】

CHAR类型是MySQL中的一种固定长度字符串类型,适用于存储定长的字符数据。

它占用固定的存储空间,效率较高,并且适合存储长度不变的字符串。

在定义CHAR列时,需要指定长度以满足具体的业务需求。


varchar

MySQL中的VARCHAR类型是一种可变长度的字符串类型,用于存储可变长度的字符数据。

下面是关于VARCHAR类型的详解

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

存储空间

长度限制

存储效率

查询效率

  1. 由于VARCHAR类型是可变长度的,查询效率相对于CHAR类型可能稍低;
  2. 因为在检索和比较时,需要计算实际存储的字符串长度。

存储方式

使用场景

  1. 适用于存储长度可变的字符串,如用户名、电子邮件地址、文章内容等。
  2. VARCHAR类型通常用于存储较长的字符串,尤其是长度不确定的情况。

💨 示例:

 

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

 

【小结】

总之,VARCHAR类型是MySQL中的一种可变长度字符串类型,适用于存储可变长度的字符数据

它根据实际存储内容的长度来占用存储空间,效率较高,并适用于存储长度不确定的字符串。

 


charvarchar比较

我给大家整理了一张表格帮助大家理解记忆:

 

如何选择定长或变长字符串?

日期和时间类型

MySQL中提供了多种日期和时间类型,用于存储日期、时间和日期时间数据

下面是关于MySQL日期和时间类型的详解

  1. DATE类型:用于存储日期值(年、月、日),格式为'YYYY-MM-DD'。范围从'1000-01-01'到'9999-12-31'。

  2. TIME类型:用于存储时间值(时、分、秒),格式为'HH:MM:SS'。范围从'-838:59:59'到'838:59:59'。

  3. DATETIME类型:用于存储日期和时间值,格式为'YYYY-MM-DD HH:MM:SS'。范围从'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。

  4. TIMESTAMP类型:与DATETIME类型类似,但范围限制为'1970-01-01 00:00:01'到'2038-01-19 03:14:07'。通常用于记录某条数据的创建或修改时间。

  5. YEAR类型:存储年份值,格式为'YYYY'。范围从1901到2155。

  6. INTERVAL类型:用于表示时间间隔或时间差,可以与日期或时间类型相加或相减。

💨 示例:

 

【小结】

MySQL提供了多种日期和时间类型,可根据具体需求选择合适的类型来存储日期、时间和日期时间数据。


enumset

MySQL中的ENUM和SET类型是用于存储具有固定取值的数据的列类型

下面是关于ENUM和SET类型的详解

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

【说明】

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

【说明】

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

说明:不建议在添加枚举值,集合值的时候采用数字的方式,因为不利于阅读。

💨 示例:

有一个调查表 votes ,需要调查人的喜好, 比如(登山,游泳,篮球,武术)中去选择 ( 可以多选 ) , (男,女)[ 单选 ]

集合查询使用 find_ in_ set 函数: find_in_set(sub,str_list)
  1. 如果 sub str_list 中,则返回下标;如果不在,返回0
  2. str_list 用逗号分隔的字符串。
mysql> select find_in_set('a', 'a,b,c');+---------------------------+| find_in_set('a', 'a,b,c') |+---------------------------+| 1 |+---------------------------+mysql> select find_in_set('d', 'a,b,c');+---------------------------+| find_in_set('d', 'a,b,c') |+---------------------------+| 0 |+---------------------------+

查询爱好登山的人:

 


总结

以上便是mysql数据类型的全部知识。感谢大家的支持与观看!!!

 

来源地址:https://blog.csdn.net/m0_56069910/article/details/132020111

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯