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

MySQL数据类型

文章目录

  • 一、数据类型分类
  • 二、数值类型
    • 1. tinyint 类型
    • 2. bit 类型
    • 3. int 类型
    • 4. float 类型
    • 5. decimal 类型
  • 三、字符串类型
    • 1. char 类型
    • 2. varchar 类型
    • 3. char 和 varchar 比较
    • 4.日期和时间类型
    • 5. enum 和 set

一、数据类型分类

在这里插入图片描述

数据类型本质也是一种约束!
如果插入的数据不满足约束条件,直接终止!

换个角度,就意味着如果满足约束条件,就允许插入。
再换个角度,就意味着给表中的数据提供了极大的确定性。

二、数值类型

如果插入的数据越界了,SQL 会直接终止!这就是数据类型约束了 SQL 的执行

换言之,能插入的数据一定是范围之内的数据。

1. tinyint 类型

tinyint [unsigned]:带符号范围[-128, 127],无符号范围[0, 255]。默认有符号

在这里插入图片描述

tinyint unsigned 类型:

在这里插入图片描述

2. bit 类型

bit[(m)]:位类型,m指定位数,范围[1,64]。若m被忽略,默认为1

bit 字段在显示时,是按照 ASCII 码对应的值显示的。

在这里插入图片描述10 是控制字符。

65 对应字符 ‘A’ 。在这里插入图片描述

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

在这里插入图片描述1 和 0 都是控制字符。

3. int 类型

int [unsigned]:带符号范围[-2^31, 2^31-1],无符号范围[0, 2^32-1]。默认有符号

在这里插入图片描述
在这里插入图片描述

4. float 类型

float[(m, d)] [unsigned]:m指定显示长度,d指定小数位数

float(4,2) 表示的范围是 [-99.99, 99.99],MySQL 在保存 float 值时会进行四舍五入。在这里插入图片描述在这里插入图片描述在这里插入图片描述

float unsigned 类型:

float(4,2) unsigned 表示的范围是 [0, 99.99],负数直接不让插入。在这里插入图片描述

5. decimal 类型

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

decimal(4,2) 表示的范围是 [-99.99, 99.99],MySQL 在保存 decimal 值时会进行四舍五入。在这里插入图片描述

decimal unsigned 类型:

decimal(4,2) unsigned 表示的范围是 [0, 99.99],负数直接不让插入。在这里插入图片描述

decimal 和 float 很像,但是有区别:两者表示的精度不一样,decimal 表示的精度更高

在这里插入图片描述

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

三、字符串类型

1. char 类型

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

char(2) 表示可以存放两个字符(可以是字母或汉字),但是不能超过 2 个。

注:
 ① 在概念上,字符 != 字节。
 ② 在不同的编码格式中,汉字字符所占的字节数不一定相等。在这里插入图片描述
在这里插入图片描述

2. varchar 类型

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

在这里插入图片描述

说明:关于 varchar(L),L 到底是多大,跟表的编码格式密切相关。
 ① varchar 的长度(字节)可以指定为 [0, 65535] 之间的值,但是有 1 - 3 个字节用于记录数据大小,所以有效字节数是 65532 。
 ② 当表的编码是 utf8 时,varchar(L) 的参数 L 最大值是 65532/3=21844(因为在 utf8 中,一个字符占用 3 个字节)。如果编码是 gbk,varchar(L) 的参数 L 最大值是 65532/2=32766(因为在 gbk 中,一个字符占用 2 个字节)。

在这里插入图片描述注:这里采用的默认字符集是 utf8 。

3. char 和 varchar 比较

实际存储char(4)varchar(4)char占用字节varchar占用字节
呵呵哈哈呵呵哈哈呵呵哈哈4*3=124*3+1=13
4*3=121*3+1=4
嘻嘻嘻嘻嘻××数据超过长度数据超过长度

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

  • 如果数据确定长度都一样,就使用定长(char),比如:身份证、手机号、md5 。
  • 如果数据长度有变化,就使用变长(varchar),但是要保证最长的能存得进去,比如:名字、地址。
  • 定长的磁盘空间比较浪费,但是效率高。
  • 变长的磁盘空间比较节省,但是效率低。
  • 定长的意义是,直接开辟好对应的空间。
  • 变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。

4.日期和时间类型

常用的有如下三个:

date:日期,格式为 'yyyy-mm-dd',占用三字节
datetime:时间日期,格式为 'yyyy-mm-dd HH:ii:ss',占用八字节
timestamp:时间戳,格式为 'yyyy-mm-dd HH:ii:ss',占用四字节

若插入数据时不插入 timestamp 列,则会自动补上当前的时间戳。

在这里插入图片描述

更新数据,时间戳会自动更新成当前的时间戳。

在这里插入图片描述

5. enum 和 set

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

说明:
 ① 该设定只是提供了若干个选项的值,只允许多选一。
 ② 最终一个单元格中,实际只存储了其中一个值,而且出于效率考虑,实际存储的是数字(这些选项的每个选项值依次对应数字 1, 2, 3, …,最多 65535 个)。因此,当我们插入枚举值时,除了可以通过选项值来设置之外,还可以通过数字来设置。

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

说明:
 ① 该设定只是提供了若干个选项的值,可允许多选多。
 ② 最终一个单元格中,实际存储了其中任意多个值,而且出于效率考虑,实际存储的是数字(这些选项的每个选项值依次对应数字 1, 2, 4, …,最多 64 个)。因此,当我们插入集合值时,除了可以通过选项值来设置之外,还可以通过数字来设置。
 ③ 集合中的每个选项值分别对应一个比特位。

若插入的数据超过枚举或集合的范围,则不进行插入,直接报错。

严重不建议在插入枚举值或集合值的时候采用数字的方式,因为不便于阅读!


enum:

在这里插入图片描述

通过数字的方式进行插入或查询。在这里插入图片描述
在这里插入图片描述

set:

在这里插入图片描述

通过数字的方式进行插入(集合中的每个选项值分别对应一个比特位)。在这里插入图片描述
在这里插入图片描述在这里插入图片描述

如果对集合直接进行查询,只会严格匹配。
比如我们想查找爱好 “包含” 游泳的人的信息,但查询结果是爱好 “只有” 游泳的人的信息,这不符合我们的要求。

在这里插入图片描述

对集合进行查询,可使用find_in_set函数。
比如我们想查找爱好 “包含” 游泳的人的信息,可使用该函数来进行查找。

在这里插入图片描述

相关文章:

MySQL数据类型

文章目录一、数据类型分类二、数值类型1. tinyint 类型2. bit 类型3. int 类型4. float 类型5. decimal 类型三、字符串类型1. char 类型2. varchar 类型3. char 和 varchar 比较4.日期和时间类型5. enum 和 set一、数据类型分类 数据类型本质也是一种约束! 如果插入…...

【设计模式】从Mybatis源码中学习到的10种设计模式

文章目录 一、前言二、源码:学设计模式三、类型:创建型模式1. 工厂模式2. 单例模式3. 建造者模式 四、类型:结构型模式1. 适配器模式2. 代理模式3. 组合模式4. 装饰器模式 五、类型:行为型模式1. 模板模式2. 策略模式3. 迭代器模式…...

爬虫攻守道 - 猿人学第20题 - 殊途同归

写在开头 这题也是,自己搞顶多追踪到wasm代码,然后就走不下去了。找了2个参考方案,自己做的过程中还又遇到些新的问题,下面做个记录。解法1参考文章解法2参考文章 解法1:追根溯源 在 JS 代码中追踪到 Payload 赋值位…...

4.11日报

synchronized 和 ReentrantLock 区别是什么? synchronized 早期的实现比较低效,对比 ReentrantLock,大多数场景性能都相差较大,但是在 Java 6 中对 synchronized 进行了非常多的改进。 主要区别如下: ReentrantLock …...

【LeetCode每日一题: 1039. 多边形三角剖分的最低得分 | 暴力递归=>记忆化搜索=>动态规划 | 区间dp 】

🍎作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎 🍎座右…...

Okio 网络提速

文章目录网络数据处理流程Page Cache传统 I/O 拷贝的性能问题零拷贝技术DMA 技术零拷贝技术分类mmapsendfilespliceDirect I/O零拷贝技术性能分析小结OkioOkio 的使用Okio 网络提速的原理Okio 总结总结网络数据处理流程 在讲 Okio 之前,为了能更好的了解 Okio 的优…...

自动驾驶企业面临哪些数据安全挑战?

近期,“特斯拉员工被曝私下分享用户隐私”不可避免地成了新闻热点,据说连马斯克也不能幸免。 据相关媒体报道,9名前特斯拉员工爆料在2019年至2022年期间,特斯拉员工通过内部消息系统私下分享了一些车主车载摄像头记录的隐私视频和…...

Doris(2):Doris编译部署

1 Doris编译 Apache Doris提供直接可以部署的版本压缩包:https://cloud.baidu.com/doc/PALO/s/Ikivhcwb5 也可以自行编译压缩包后使用(推荐) 1.1 使用 Docker 开发镜像编译(推荐) 这个是官方文档推荐的,…...

使用MyBatis实现简单查询

文章目录一,创建数据库与表(一)在Navicat里创建MySQL数据库testdb(二)创建用户表 - t_user(三)在用户表里插入3条记录二,案例演示MyBatis基本使用(一)创建Mav…...

C指针(*point)[4]和char *point[4]

char (*point)[4] // 数组指针。 a[3][4] // 先申明二维数组,用它来指向这个二维数组. char *point[4] // 指针数组。 a[4][5] // 一连串的指针. char (*point)[4] // 一个指针,指向有4个元素的数组;占内存大小为 4 个字节 ch…...

【Bard】谷歌的人工智能工具—Bard初体验

文章目录一、Bard介绍二、Bard体验1、加入Bard的候补名单2、登入Bard篇3、使用Bard篇(1)提供三种预选方式✨(2)创作生成各类文案(3)无生成图画能力(4)支持语音转文本输入✨&#xff…...

2022国赛30:windows脚本题解析

大赛试题内容: ( 九) ) 脚本 【任务描述】 为了减少重复性任务的工作量,节省人力和时间,请采用脚本,实现快速批量的操作。 1.在 windows4 上编写 C:\CreateFile.ps1 的 powershell 脚本,创建20 个文件 C:\test\File00.txt 至 C:\test\File19.txt,如果文件存在,则首先删除…...

Excel常用函数公式20例

目录 一、【IF函数条件判断】 二、【多条件判断】 三、【条件求和】 四、【多条件求和】 五、【条件计数】 六、【多条件计数】 七、【条件查找】 八、【多条件查找】 九、【计算文本算式】 十、【合并多个单元格内容】 十一、【合并带格式的单元格内容】 十二、…...

233:vue+openlayers绘制渐变填充色的圆形、多边形

第233个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayer中绘制带有渐变填充色的圆形、多边形。这里用canvas的方式去渲染,用到了DEVICE_PIXEL_RATIO,设备上的物理像素与设备无关像素 (dips) 之间的比率 (window.devicePixelRatio)。 直接复制下面的 vue+openlayer…...

Flink的窗口机制

窗口机制 tumble(滚动窗口) hop(滑动窗口) session(会话窗口) cumulate(渐进式窗口) Over(聚合窗口) 滚动窗口(tumble) 概念 滚…...

了解分布式Session

大家好,我这名CRUD工程师又来了,最近我的一个同事突然在看分布式Seesion的问题,然后我们两个也是互相讨论了一下,今天我就想着把分布式Session的知识点好好的梳理一下。 在很多系统中,用户的登录功能都是用Session去实…...

仿真创新大赛—国三省一 智能鱼缸(proteus)(stm32)

⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。 ⏩去年下半年参加了全国仿真创新大赛,也是取得了国赛三等奖,省赛一等奖的好成绩。 ⏩本篇文章对我们的参赛作品《智能鱼缸》做一个简介。 ⏩感…...

【ARMv8 编程】A64 数据处理指令——位域字节操作指令

有些指令将字节、半字或字扩展到寄存器大小,可以是 X 或 W。这些指令存在于有符号(SXTB、SXTH、SXTW)和无符号(UXTB、UXTH)变体中,并且是适当的位域操作指令。 这些指令的有符号和无符号变体都将字节、半字…...

ctfshow 愚人杯菜狗杯部分题目(flasksession伪造ssti)

目录 <1>愚人杯 (1) easy_signin (2) easy_ssti(无过滤ssti) (3) easy_flask(flash-session伪造) (4) easy_php(C:开头序列化数据) <2> 菜狗杯 (1) 抽老婆(flask_session伪造) (2) 一言既出&#xff0c;驷马难追(intval) (3) 传说之下&#xff08;js控制台&…...

linux拓展笔记——【补充学习知识点】

文章目录1. ./configure --prefix中的prefix详解1. ./configure --prefix中的prefix详解 源码的安装一般由3个步骤组成&#xff1a;配置(configure)、编译(make)、安装(makeinstall)。 Configure是一个可执行脚本&#xff0c;在待安装的源码路径下使用命令./configure–help输…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘 安装虚拟环境&#xff1a; 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境&#xff1a; virtualenv myenv 3、激活虚拟环境&#xff08;激活环境可以在当前环境下安装包&#xff09; source myenv/bin/activate 此时&#xff0c;终端…...