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

news2024/11/18 14:43:06

【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.coloradmin.cn/o/641714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

入门编程其实也简单

随着信息技术的快速发展,编程已经成为一个越来越重要的技能。那么,我们该如何入门编程呢? 编程是指使用计算机语言编写计算机程序的过程。计算机程序是一系列指令的集合,这些指令告诉计算机要执行的操作。编程的目的是创建计算机…

2023-6-13-第四式建造者模式

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…

Openharmony使用hdc提效

告别串口卡顿调试🐸hdc增效大法🐸,工作环境主要是Linux,所以主要是介绍Linux环境下使用喔~ 文章目录 HDC1.1 简单介绍1.2 搭建环境1.2.1 设备机1.2.2 pc机1.2.3 操作 AuthorDateVersionDescription陈梓归2023-06-13V1.0第一个版本…

详解模板模式

目录 1.概述 2.实际业务场景示例 2.1.需求和实现思路 2.1.完整代码实现 1.概述 模板模式是一种常用的设计模式,它定义了一个操作中的算法的骨架,将某些步骤延迟到子类中实现。模板模式使得子类可以在不改变算法结构的情况下重新定义算法中的某些步骤…

【ubuntu】vscode上jupter notebook的使用

1.安装vscode 2.安装python环境和插件 系统要有Python环境:conda install python 或者 pip都可以 在vsode里安装如下插件 3.安装jupter conda install jupyter notebook 安装完之后试着打开 输入jupyter note 打开才行,如果安装失败,就…

【IoT】降低硬件创业风险的 6 个小建议

目录 第一个是聘用多名独立的工程师 第二个是从小批量开始做 第三个是使用电子模块 第四个是充分利用制造商资源 第五个是在构建产品之前先建立客户群体 第六个是预售你的产品 无论你提前做了多么充分的准备。 将全新的硬件产品推向市场就一定会引入风险。 这里的全新是…

AntDB 企业增强特性介绍——读写分离

面对日益增加的系统访问量,读写分离可以充分利用备机资源,有效地提升数据库的吞吐量。过去常用的手段是通过应用层来控制数据库的读写流量。 AntDB 通过在 Coordinator 组件的 SQL 解析路由层增加对读写流量的精确访问控制且对应用透明,做到…

CMU-Multimodal SDK Version 1.2.0(mmsdk)Windows配置与使用+pytorch代码demo

最近做实验要用到CMU-MOSI数据集,网上搜到的教程很少,经过一天时间的探索,最终成功安装配置数据集,这篇文章完整地整理一下该数据集的下载与使用方法。 配置环境: window10,anaconda 1. 需要下载的内容 …

DVWA-15.Open HTTP Redirect

OWASP将其定义为: 当 Web 应用程序接受不受信任的输入时,可能会导致 Web 应用程序将请求重定向到不受信任输入中包含的 URL,则可能会出现未经验证的重定向和转发。通过修改恶意站点的不受信任的 URL 输入,攻击者可以成功发起网络钓…

NeRF 模型评价指标PSNR,MS-SSIM, LPIPS 详解和python实现

PSNR: PSNR(Peak Signal-to-Noise Ratio,峰值信噪比)是一种常用于衡量图像或视频质量的指标。它用于比较原始图像与经过处理或压缩后的图像之间的差异。PSNR通过计算原始图像与重建图像之间的均方误差(Mean Squared E…

python爬各平台评论并数据分析——数据采集、评论情绪分析、新闻热度

一、爬取数据 小问题汇总 1.python之matplotlib使用系统字体 用于解决python绘图中,中文字体显示问题 2.cookie与视频页面id(b站、微博等)查看 F12打开网页开发者模式,然后F5刷新,进入控制台中的网络,…

618什么值得囤?这些刚需数码好物必囤!

​目前,618活动已经正式拉开帷幕了,相信很多小伙伴已经按耐不住想要入手了!但如果目前还没什么头绪,不知道买什么的话,现在就不妨来抄一下作业吧!近期我整理了一份618数码好物清单,都是精心挑选…

插件化工程R文件瘦身技术方案 | 京东云技术团队

随着业务的发展及版本迭代,客户端工程中不断增加新的业务逻辑、引入新的资源,随之而来的问题就是安装包体积变大,前期各个业务模块通过无用资源删减、大图压缩或转上云、AB实验业务逻辑下线或其他手段在降低包体积上取得了一定的成果。 在瘦…

Window域控环境之账号误删恢复

文章目录 背景信息问题分析操作步骤 文章内容已做脱敏处理 背景信息 8:30,收到联络反馈客户误删除部门领导域控账户,希望紧急实施VM整机恢复工作。收到联络时,我是觉得这个事情挺严重的。毕竟现在域控账号是企业里面重要的身份与…

深度学习数据处理中,标量、向量、张量的区别与联系

计算机中的标量机是指只是一个数一个数地进行计算的加工处理方法,区别于向量机能够对一批数据同时进行加工处理。标量机比向量机的运算速度慢,因此,向量机更适合于演算数据量多的大型科学、工程计算问题。 计算机可以进行数值计算&#xff0c…

5.2.11 IP分组的转发(二)IP分组转发算法

5.2.11 IP分组的转发(二)IP分组转发算法 我们前面已经了解了路由器的结构以及直接交付和间接交付的概念,明白了路由器会根据路由协议生成路由表再根据路由表生成转发表,当路由器收到一个待转发的IP分组以后,会根据分组…

Background-1 基础知识 sqli-Labs Less1-Less-4

文章目录 一、Less-1二、Less-2三、Less-3四、Less-4总结 一、Less-1 http://sqli:8080/Less-1/?id1在第一关我们可以尝试增加一个单引号进行尝试 http://sqli:8080/Less-1/?id1错误显示如下: near 1 LIMIT 0,1 at line 1推测语法的结构 select *from where **…

2009年iMac装64位windows7

单位领导会花屏的iMac(24寸 2009年初版)我捡来用,应该大约是在2020年安装了32位windows7,发现不安装显卡驱动便不会花屏死机,于是就当简单的上网机用着,毕竟iMac的显示屏还是蛮不错的。现在要使用的1个软件…

linux中那些常用好玩的命令

前言 大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第66篇文章,今天要分享是多个命令,在工作中不常用,但好玩。 专栏地址:[linux基本功-基础命令专栏] &#xff0c…

华为OD机试真题B卷 Java 实现【二叉树的所有路径】,附详细解题思路

一、题目描述 给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 二、思路与算法 最直观的方法是使用深度优先搜索。在深度优先搜索遍历二叉树时,我们需要考虑当前的节点以及它的孩子节点。 如果当前节点不是…