【MySQL】数据库中这么多数据类型你真的了解吗?一文看懂不同数据类型有何区别

news/2024/11/16 7:54:37/

【MySQL】数据类型

  • 一、常见数据类型
  • 二、数值类型
    • 2.1 整型
      • 2.1.1 小结
    • 2.2 bit类型
    • 2.3 float 类型
    • 2.4 decimal类型---精度更高
  • 三、字符串类型
    • 3.1 char---固定字符串
    • 3.2 varchar---变长字符串
      • 3.2.1 char和varchar区别
    • 3.3 日期和时间类型
    • 3.4 enum和set
      • 3.4.1 set查询----find_in_set

一、常见数据类型

在这里插入图片描述

二、数值类型

在这里插入图片描述

2.1 整型

  1. 创建表t1,将name列数据类型设置为要tinyint
    在这里插入图片描述
  2. 插入属性值:由于这里是tinyint类型,取值范围是【-128–127】,当插入这个范围内的数据显示成功,范围之外失败
    在这里插入图片描述
  3. 使用tinyint unsigned类型创建表t2
    在这里插入图片描述
    无符号类型取值范围【0,255】,这点与C/C++一样

2.1.1 小结

  • MySQL对于数据类型不合法行为采取直接报错,阻止我们继续操作
  • 这也说明了我们插入表里面的数据一定是合法的
  • 在MySQL中,数据类型本身也是一种约束:逼着程序员合法使用,保证数据库中的数据是可预期,完整的
  • 创建表的时候,使用无符号类型需要在后面定义,这点与C/C++不同

其余整型使用方法和约束与tinyint一样

2.2 bit类型

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

  1. 创建表t3
    在这里插入图片描述

  2. 插入数据
    在这里插入图片描述
    可以发现插入2的时候报错,这是因为2无法用1个bit位表示;
    查表发现,gender没有显示任何属性,这是因为bit类型的数据默认以ASCLL码显示,但是ASCLL码0、1不可见,可以通过select id,hex(gender) from t3;进行十进制查看
    在这里插入图片描述

  3. 修改列的属性
    在这里插入图片描述

  4. 修改列的属性
    将gender列bit位改为10位,插入
    在这里插入图片描述
    对比之下可以发现:bit字段在显示时,是按照ASCII码对应的值显示
    在这里插入图片描述

2.3 float 类型

float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节
小数:float(4,2)表示的范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入。

这里我创建了一个表t4:要求其salary字段是float类型,并且显示长度为4,小数位数为2
在这里插入图片描述
在这里插入图片描述
无符号测试
这里我在表t4的基础上增加一个字段aneno,并将其设置为无符号float类型
在这里插入图片描述
通过上图可以发现。无符号类型的float,负数是无法插入的

2.4 decimal类型—精度更高

decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数
decimal使用方法和限制条件与float一样,唯一不同的就是精度方面
在这里插入图片描述
float表示的精度大约是7位
decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,
默认是10。(不同平台精度或许不用,仅供参考)

三、字符串类型

3.1 char—固定字符串

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

创建一个表t5将其name字段设置为两个字符,插入英文字符与中文字符实验结果如下
在这里插入图片描述

结论:

  1. char数据类型本身与前面几种一样带有约束(越界报错)
  2. 与C/C++语言中一个字符占一个字节不一样,在GBK中一个汉字占两个字节,UTF-8中一个汉字占三个字节,但是 在mysql中,一个汉字就是一个字符
  3. 由于char固定长度最大为255,建表的时候超过这个数会直接报错

3.2 varchar—变长字符串

varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节,在不同编码中,L的最大长度不同,utf-8中最大是是21845

创建表t7,name字段设置为4个字符,使用方法和char一样在这里插入图片描述

  • varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字
    节数是65532。
  • 当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占
    用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符
    占用2字节)
  • 表的一行也有长度限制如果一行中有其他字段,那么varchar就不能设置为最大值

3.2.1 char和varchar区别

在这里插入图片描述
根据需求,合理选择char/varchar
如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5(密码摘要)
如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。
定长的磁盘空间比较浪费,但是效率高。
变长的磁盘空间比较节省,但是效率低。

定长的意义是,直接开辟好对应的空间
变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。

3.3 日期和时间类型

常用的日期有如下三个:

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

创建表t8,带有三个字段,分别是日期、日期时间、时间戳;前两个字段需要传入,时间戳不需要
在这里插入图片描述
更新数据或新插入数据,时间戳也会被改变,如下图
在这里插入图片描述
日期时间类型适用于不需要改变时间的场景:上下班打卡
时间戳类型适应于频繁改变时间场景:发帖子

3.4 enum和set

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


有一个调查表,需要调查人的喜好, 比如(唱,跳,rap,篮球)中去选择(可以多选),(男,女)[单选]

enum插入可以选择直接用枚举常量,也可以选择常量下标,但是注意,枚举常量下标默认从1开始;对于非枚举常量,mysql直接报错
在这里插入图片描述


set插入特点:可以直接用选项值,也可以用数字,但是插入的数据必须是集合里面的

在这里插入图片描述


使用数字进行插入,结合linux权限理解
在这里插入图片描述


这个数字使用位图来表示的,比如以上爱好中全选对应的位图结构就是1111(15)
在这里插入图片描述

3.4.1 set查询----find_in_set

find_in_set(sub,str_list) :如果 sub 在 str_list 中,则返回下标;如果不在,返回0;
str_list 用逗号分隔的字符串。


绝对查询:结果是只含有特定字段的信息,如:select * from t9 where hobby='唱';
在这里插入图片描述

查询包含有特定字段的的信息
在这里插入图片描述


http://www.ppmy.cn/news/363544.html

相关文章

python自动化测试框架:unittest测试用例编写及执行

本文将介绍 unittest 自动化测试用例编写及执行的相关内容,包括测试用例编写、测试用例执行、测试报告等内容。 官方文档: https://docs.python.org/zh-cn/3/library/unittest.mock.html 1. 测试用例编写 在 unittest 中,一个测试用例通常…

喜马拉雅xm文件转换为mp3?

我看了几种方法有检查网页代码复制下载的 有下载软件转换的,改文件名的 但是从源头上我还是推荐插件 喜马拉雅专辑下载器 (greasyfork.org) 直接转化下载

mp3转为pcm工具

首选需要引入依赖&#xff1a; <dependency><groupId>com.googlecode.soundlibs</groupId><artifactId>mp3spi</artifactId><version>1.9.5.4</version></dependency>再导入以下工具类&#xff0c;就可以开始玩耍了 import …

html教程转换mp3,kgm转换mp3图文版教程,值得收藏

KGM格式是酷狗音乐开通VIP后订阅后会员下载后的音乐存储格式。默认情况下只有酷狗音乐可以打开它。那么如何将kgm其转换为MP3&#xff1f;小编尝试了几种转换工具&#xff0c;只有格式工厂才有可以成功。下面对kgm转换mp3格式感兴趣的朋友随小编一起看看吧&#xff0c;希望对大…

音频如何转换mp3格式?

音频如何转换mp3格式&#xff1f;音频文件的格式可谓五花八门&#xff0c;种类比图片格式还要多很多&#xff0c;这也导致很多不常用的音频格式根本不好使用&#xff0c;因为很多播放器或者平台设置根本支持这些不常用的音频格式。不过大家也知道&#xff0c;mp3属于最常用的音…

怎样把mp3转换成mp4?

怎样把mp3转换成mp4&#xff1f;在日常电脑使用过程中&#xff0c;我们如果需要将mp3格式的音频文件转成mp4视频该怎么操作呢&#xff1f;很多人对音频和视频文件的编辑或者转换操作还一无所知&#xff0c;那是因为你还没有找到方法。 要想将MP3音乐转换为MP4格式&#xff0c;其…

杰林码在荧光细胞识别中的应用(一)

一、杰林码轮廓预测算法 本算法是基于我的《一种全新的图像变换理论的实验》系列博客中的算法构造的轮廓预测算法&#xff0c;能有效的进行细胞轮廓预测&#xff0c;而且从前景到背景支持50个深度层次的轮廓预测。优点&#xff1a; 1、支持各种清晰度和分辨率&#xff0c;通过…

mp3怎么转换成mp4?

大家都知道现在的自媒体平台特别多&#xff0c;很多伙伴不仅热衷于刷视频打发无聊的时间&#xff0c;更把发视频作为一种业余爱好&#xff0c;为忙碌的生活增添了些许的悠闲和快乐。但是很多小伙伴仅仅有音频文件&#xff0c;不会自己做视频&#xff0c;所以这个时候将音频MP3文…