【MySQL】数据类型(常见类型)-- 详解

一、数据类型分类


二、数值类型


1、tinyint 类型

在 MySQL 中,整型可以指定是有符号的和无符号的,默认是有符号

有符号:

插入数据越界测试:

在 MySQL 表中建立属性列时,我们可以发现列名称在前,类型在后。

比如:num tinyint (unsigned)


无符号(unsigned):

可以通过 unsigned 来说明某个字段是无符号的。 

插入数据越界测试:

char a = 1234567;

  • C/C++ 中,编译器不会报错,最多也就是报警,这里会发生截断,甚至发生隐式转换
  • MySQL 中,在特定的类型中插入不合法的数据,一般会发生拦截,不让我们做对应的操作。

反过来,如果已经有数据被成功插入到 MySQL 中,那么说明插入时一定是合法的。

所以,在 MySQL 中,一般而言,数据类型本身也是一种约束

(能够保证数据库中的数据是可预期、完整的)

注意 :尽量不使用 unsigned,对于 int 类型可能存放不下的数据,int unsigned 同样可能存放不下,与其如此,还不如在设计时,将 int 类型提升为 bigint 类型。

2、bit 类型

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

插入数据越界测试:

 

为什么下图中的 online 列没有显示内容?

因为 online 是位类型,在显示 0/1 时,是按照 ASCII 码值显示的。只不过当前显示的 ASCII 码值是不可显示的。

如果想在 online 列显示内容,可以输入 select id, hex(online) from t3;(让 online 按照十进制方案插入位结构)

修改 online 的 bit 位:

插入成功:

  • bit 字段在显示时,是按照 ASCII 码对应的值显示。
  • 如果我们有这样的值,只存放 0/1,这时可以定义 bit(1),可以节省空间。

3、小数类型

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

插入数据越界测试: 

小数:float(4,2) 表示的范围是 -99.99~99.99默认是有符号浮点数。

MySQL 在保存值时会进行四舍五入

注意:在合法范围内允许五入,但在边界值五入会导致整体的浮点数增多,从而超过浮点数对应的范围,所以不是所有情况都可以五入


unsigned:

如果定义的是 float(4,2) unsigned 这时,因为把它指定为无符号的数,范围是 0~99.99(相当于有符号浮点数删减去负数取值部分)。

插入数据越界测试: 

整数部分也可能有精度损失。


(2)decimal
decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数
  • decimal(5,2) 表示的范围是 -999.99 ~ 999.99
  • decimal(5,2) unsigned 表示的范围 0 ~ 999.99

插入数据越界测试: 

decimal 和 float 的区别:
float 和  decimal  表示的精度不一样。
  • float 表示的精度大约是 位。(会发生截断或四舍五入)​​​​​​​
  • decimal 整数最大位数 为 65。支持小数最大位数 是 30如果 被省略,默认为 0。如果 被省略,默认是 10(完全保证精度准确)
建议如果希望小数的精度高,推荐使用 decimal。

三、字符串类型

1、char

char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255
char(2) 表示可以存放两个字符,可以是字母或汉字,但是不能超过 2 个, 最多只能是 255。​​​​​​​
插入数据越界测试:  ​​​​​​​
  • 在 utf-8 中一个汉字一般占 3 个字节,在 gbk 中一个汉字一般占 2 个字节。
注意:char 类型的单位为字符,MySQL 中的字符和 C/C++ 中的字符概念同,语言上的字符是一个字符对应一个字节,而这里的一个字符就是代表一个符号。

2、varchar

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

插入数据越界测试: 

varchar 长度可以指定为  0~ 65535  之间的值,但是有  1~3 个字节用于记录数据大小,所以说有效字节数是 65532。
  • 当我们的表的编码是 utf-8 时,varchar(n) 的参数 最大值是 65532/3=21844因为在 utf 中,一个字符占用 个字节)。
  • 如果编码是 gbkvarchar(n) 的参数 最大是 65532/2=32766(因为 gbk 中,一个字符占用 字节)。

​​​​​​​


3、char 和 varchar 比较

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

四、日期和时间类型


1、date

date 日期格式:'yyyy-mm-dd',占用 3 字节。​​​​​​​


2、datetime

datetime 时间日期格式:'yyyy-mm-dd HH:ii:ss' 表示范围为 1000~9999 ,占用 8 字节。​​​​​​​​​​​​​​


3、timestamp

timestamp 时间戳会自动更新从 1970 年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用 4 字节。


五、enum 和 set

​​​​​​​

插入数据越界测试: 


1、enum

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

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


2、set

  • set:集合,多选” 类型;
  • set('选项值1', '选项值2', '选项值3', ...);
该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是 “ 数字 ,因为这些选项的每个选项值依次对应如下数字: 1,2,4,8,16,32 ...  最多  64  个。
1 对应的就是 '选项值1',2 对应的是 '选项值2',3 对应的是 '选项值1,选项值2'...跟二进制比特位的计数有关。 比特位由低到高依次对应的是选项值从左向右。
说明:不建议在添加枚举值,集合值的时候采用数字的方式,因为不利于阅读。

3、集合查询使用 find_ in_ set 函数

​​​​​​​

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2805212.html

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

相关文章

NXP实战笔记(九):S32K3xx基于RTD-SDK在S32DS上配置 CRCIRQPower

目录 1、CRC概述 1.1、CRC配置 1.2、代码示例 2、INTCTRL 3、Power 1、CRC概述 硬件CRC产生16或者32bit的,S32K3提供了可编程多项式与其他参数需求。 CRC图示如下 1.1、CRC配置 暂时DMA不怎么会用,所以没有启用DMA CRC的选择 这点需要十分注意&…

在Ubuntu系统下搭建TDengine集群

目录 一、Ubuntu虚拟机创建 二、系统相关配置 1、设置系统hostname 2、网络配置及IP规划 3、配置FQDN(etc/hosts) 4、服务端口设置 三、TDengine server安装 1、服务安装 2、修改配置 3、启动taosd 4、服务卸载 四、客户端安装 1、client安…

(HAL)STM32F103C8T6——RC522与主机进行SPI通信(RFID门禁系统入门必备)

目录 一、MFRC522简介 二、接线 三、存储结构说明 四、代码解析 1、rc522.h 2、rc522.c 3、spi.h 4、spi.c 5、main.c 一、MFRC522简介 店家提供的资料: 链接: 百度网盘 请输入提取码 提取码:su3m 简言之,MFRCC522是基于…

代码随想录刷题笔记-Day22

1. 修剪二叉搜索树 669. 修剪二叉搜索树https://leetcode.cn/problems/trim-a-binary-search-tree/ 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留…

【Flink精讲】Flink任务调度机制

Graph 的概念 Flink 中的执行图可以分成四层: StreamGraph -> JobGraph -> ExecutionGraph -> 物理执 行图。 StreamGraph:是根据用户通过 Stream API 编写的代码生成的最初的图。用来表示程序的拓扑结构。JobGraph: StreamGraph …

“IT行业职业发展的黄金之路:哪些证书能为你增光添彩?“

文章目录 每日一句正能量前言1、浙大计算机程序设计能力考试证书(PAT)2、全国计算机等级考试证书(NCRE)3、计算机技术与软件专业资格考试证书(软考)4、通信专业技术人员职业水平证书5、全国计算机应用水平考试证书(NIT…

IDEA生成Java Doc帮助文档

使用场景 使用IDEA(本次使用2020.3版)将自己写的常用的工具类打成jar包,安装到maven本地仓库,最后生成对应的doc参考文档。 操作流程 方法一 选中项目 右键 show in Explor,如下图: 选中地址栏 cmd 输入…

Studio One 6 for Mac v6.5.1激活破解版(音乐制作工具)

Studio One是一款专业的音乐制作软件,由美国PreSonus公司开发。该软件提供了全面的音频编辑和混音功能,包括录制、编曲、合成、采样等多种工具,可用于制作各种类型的音乐,如流行音乐、电子音乐、摇滚乐等。 Studio One 6是一款功…

通俗易懂理解GhostNetV2轻量级神经网络模型

一、参考资料 原始论文:[1] NeurIPS22 Spotlight | 已开源 | 华为GhostNetV2:端侧小模型性能新SOTA 二、术语解析 廉价的线性变换/线性运算:cheap linear operations; 线性变换的线性内核:linear kernels&#xf…

[极客挑战2019]HTTP

这道题考察的是http请求头字段的含义和使用; 具体如下 Referer:来源地址 User-Agent:客户端配置信息:浏览器类型、版本、系统类型等 X-Forwarded-For:代理地址,即数据发出的地址 开始解题:(对我这初学者真的烧脑&a…

基于DPU和HADOS-RACE加速Spark 3.x

背景简介 Apache Spark(下文简称Spark)是一种开源集群计算引擎,支持批/流计算、SQL分析、机器学习、图计算等计算范式,以其强大的容错能力、可扩展性、函数式API、多语言支持(SQL、Python、Java、Scala、R&#xff09…

使用向量数据库pinecone构建应用04:混合搜索 Hybrid Search

Building Applications with Vector Databases 下面是这门课的学习笔记:https://www.deeplearning.ai/short-courses/building-applications-vector-databases/ Learn to create six exciting applications of vector databases and implement them using Pinecon…

番外篇 | YOLOv5+DeepSort实现行人目标跟踪检测

前言:Hello大家好,我是小哥谈。DeepSort是一种用于目标跟踪的深度学习算法。它结合了目标检测和目标跟踪的技术,能够在视频中准确地跟踪多个目标,并为每个目标分配一个唯一的ID。DeepSort的核心思想是将目标检测和目标跟踪两个任务进行联合训练,以提高跟踪的准确性和稳定性…

基于SVM的功率分类,基于支持向量机SVM的功率分类识别,Libsvm工具箱详解

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 完整代码和数据下载链接:基于SVM的功率分类,基于支持向量机SVM的功率分类识别资源-CSDN文库 https://download.csdn.net/download/abc991835105/88862836 SVM应用实例, 基于…

自动化超级英雄:码垛机器人在智能生产线中的角色与挑战

在当代工业生产中,自动化技术的进步促使了一系列智能化设备的发展和应用,其中码垛机器人便是一个典型的代表。码垛机器人主要指用于实现物品自动堆叠、搬运和整理的工业机器人,其集成了机械工程、电子技术和计算机编程等多学科领域的最新研究…

制造执行系统(MOM):生产过程大屏联动、一目了然。

大家好,我是大美B端工场,本期继续分享常见的制作执行系统,欢迎大家关注,如有B端写系统界面的设计和前端需求,可以联络我们。 一、什么是MOM MOM系统是制造执行系统(Manufacturing Operations Management S…

应急响应实战笔记03权限维持篇(3)

0x00 前言 攻击者在获取服务器权限后,会通过一些技巧来隐藏自己的踪迹和后门文件,本文介绍Linux下的几种隐藏技术。 0x01 隐藏文件 Linux 下创建一个隐藏文件:touch .test.txt touch 命令可以创建一个文件,文件名前面加一个 点…

C# If与Switch的区别

在 switch 语句中使用表达式比较时,编译器会生成一个查找表,其中包含所有表达式的值和对应的 case 标签。因此,与使用常量或字面量比较相比,使用表达式比较可能会略微降低性能。 只有当 switch 语句中的所有 case 标签都使用常量或…

SIP 会话发起协议

目录 会话发起协议 SIP SIP 系统的构件 SIP 的地址 SIP 特点 一个简单的 SIP 会话 会话描述协议 SDP 会话发起协议 SIP H.323 过于复杂,不便于发展基于 IP 的新业务。 会话发起协议 SIP (Session Initiation Protocol) 是一套较为简单且实用的标准&#xff0…

Redis篇之缓存雪崩、击穿、穿透详解

学习材料:https://xiaolincoding.com/redis/cluster/cache_problem.html 缓存雪崩 什么是缓存雪崩 在面对业务量较大的查询场景时,会把数据库中的数据缓存至redis中,避免大量的读写请求同时访问mysql客户端导致系统崩溃。这种情况下&#x…