MySQL-MySQL数据类型


〇. 数据类型分类

在这里插入图片描述

一、整形

整形我们今天只讲两个,bit和tinyint,知道了这两个如何使用,整形家族就都会使用了。
在这里插入图片描述

1. tinyint [unsigned]

因为tinyint只占一个字节,所以如果是有符号的tinyint,取值范围就是[-128,127]。
在这里插入图片描述
那如果我们想让它定义为无符号的应该怎么办呢?
在这里插入图片描述
无符号的tiny它的取值范围就是[0,255]。
在这里插入图片描述

2. bit[(M)]

M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。

在这里插入图片描述
如果插入的数据出现了溢出,数据库就会不让你进行插入,例如这里的bit默认只是一个比特位,但是我输入3,数据库直接提醒我数据太大并拦截此次插入。


现在我将bit的位数设置为10,再插入下面一些列数据,其中比较特别的是我还能插入’a’,因为我们学过C语言可以知道,其实字符也是根据ASCII值来表示的。
在这里插入图片描述


二、浮点数类型

float[(m, d)] [unsigned]

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

示例:float(4,2)表示的范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入
在这里插入图片描述
但是float有一个比较明显的问题,由于float的实现原理,它对一些精度细致的数据会丢失精度。
在这里插入图片描述
在这里插入图片描述

当然我们的float也是可以设置为unsigned的,大家下来可以自己尝试一下。
在这里插入图片描述

decimal(m, d) [unsigned]

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

其精度更细,用法与float一样。

三、字符串类型

1.char(L)

char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255。 注意不是字节而是字符!!!

在这里插入图片描述
这里我仅仅将char设置成了两个字符,但是不仅可以插入’ab’两个字符,还可以插入‘你好’两个字符,这说明这里的char类型是与我们学习的C语言的char数组是不同的,char数组开辟的是字节空间,数据库的char开辟的是字符长度。


2.varchar(L)

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

那么varchar与char有什么区别呢?

  • char(L):L设置多少,你插入的对应数据的长度就一定是这么长,即使你仅仅只插入了1个字符,但是实际长度还是L字符长度。
  • varchar(L)作为可变字符串,其设置的L长度代表的是你可以插入的最多字符长度,即设置其字符上限,你插入数据的时候,可以只插入1个字符,2个字符,最终的长度不会以L长度为准,而是根据你实际插入的字符长度来计算,就有点类似于我们C++的string,但是由于要实现string的动态控制字节长度,就需要有其他的辅助成员变量来帮助我们实现可变的功能,varchar也一样,所以它内部也注定有1 - 3 个字节用于记录数据大小。
    在这里插入图片描述

所以我们就要根据实际情况来选择使用char还是varchar,

  • 如果保存电话号码,我们就可以选择用char定长字符串。
  • 如果保存姓名,由于我国是多民族国家,名字有长有短,所以更适合用varchar可变字符串来保存姓名。

在这里插入图片描述


四、日期类型

  • date :日期 ‘yyyy-mm-dd’ ,占用三字节。
  • datetime 时间日期格式 ‘yyyy-mm-dd HH:ii:ss’ 表示范围从 1000 到 9999 ,占用八字节。
  • timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节。

这些都很好理解,但是这里需要讲的是datatime和timestamp的区别,他们所表现的形式都是 ‘yyyy-mm-dd HH:ii:ss’ ,可是timestamp有些特殊,它有一个特性,当设置了DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
当程序员对表中的数据进行增删改的时候,同时它也会更新自己的时间戳,将时间更新为当前的时间。
在这里插入图片描述

五、enum和set

  • enum:枚举,“单选”类型;enum(‘选项1’,‘选项2’,‘选项3’,…);
  • set:集合,“多选”类型;set(‘选项值1’,‘选项值2’,‘选项值3’, …);

在这里插入图片描述
enum还有一种选择方式,可以传下标。不过这里的下标是从1开始的,可不是像C++一样从0开始哦。
set也还有一种选择方式,可以传一个位图来表示每一个选项。
在这里插入图片描述

查询enum和set

在这里插入图片描述
在这里插入图片描述
这里使用了find_in_set(set1 , set2),如果set1集合被set2包含,那么就返回真。
如果想查询hoppy既有足球又有羽毛球又有跑步的,使用 and 即可。and与我们C语言的&&很像。

总结

本章主要详细讲解了MySQL数据类型,大多数情况都在图片中展现了出来。 其中一个非常重要的结论是,在mysql中插入数据,如果插入的数据超出的该类型的取值范围,mysql是会直接将你这次的错误插入拦截的,所以mysql的数据是比较具有合法性的。

相关推荐

  1. MYSQL数据类型详解

    2024-07-13 21:02:01       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 21:02:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 21:02:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 21:02:01       45 阅读
  4. Python语言-面向对象

    2024-07-13 21:02:01       55 阅读

热门阅读

  1. 设计模式的七项原则

    2024-07-13 21:02:01       18 阅读
  2. 力扣2381.字母移位II

    2024-07-13 21:02:01       19 阅读
  3. Transformer模型:WordEmbedding实现

    2024-07-13 21:02:01       15 阅读
  4. stm32高级定时器

    2024-07-13 21:02:01       13 阅读
  5. Jupyter Notebook 使用教程

    2024-07-13 21:02:01       18 阅读
  6. 基于SpringBoot就医管理系统设计与实现(测试项)

    2024-07-13 21:02:01       18 阅读
  7. C语言 求两个整数的最大公约数和最小公倍数

    2024-07-13 21:02:01       15 阅读
  8. 《我的编程学习之旅启程》

    2024-07-13 21:02:01       19 阅读
  9. Python基础-循环语句

    2024-07-13 21:02:01       16 阅读
  10. 深入理解C++ 中的可调⽤对象

    2024-07-13 21:02:01       16 阅读