第五站:MySQL常用典型数据类型

数值类型

tinyint类型

java 复制代码
tinyint:默认有符号整数,范围为-128~127
tingint unsigned:无符号整数,0~255;

注意:如果我们向MySQL中插入的值超过数据类型的定义时,插入不成功。反之如果插入成功了则数据一定是合法的。所以,mysql中,数据类型一般而言也是一种约束。这保证了数据库中的数据是可预期(数据在一定范围内),完整的(没有发生截断)。

bit类型

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

注意:插入的值不能超出二进制M位所能表示出来的十进制数大小

java 复制代码
若插入的值位bit类型,简单使用select * from 表名,是不能查出bit类型那一列的元素的,需要改成这样:
以十六进制输出:select hex(属性列类型为bit的列名) from 表名;
#HEX:以十六进制输出
以十进制输出:select 属性列类型位bit的列名+0 from 表名;

注意:插入字母是按照对应的ascll码表上的数值插入的。

小数类型

float类型

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

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

如上图所示,当我们插入大的值时,缺缺失一些位上的值。

如上图:出现了四舍五入,我的MySQL中float的精度为6位数,从前往后算,后面多余的位数就进行四舍五入。

decimal类型

java 复制代码
decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数

decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略, 默认是10

注意: decimal和float很像,但是有区别: float和decimal表示的精度不一样 , 如果希望小数的精度高,推荐使用decimal。

char类型

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

注意: char(2) 表示可以存放两个字符,可以是字母或汉字,但是不能超过2个, 最多只能是255

char:长度固定,varchar:有上限,但是是用多少给你多少

varchar类型

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

注意:一个中文字符占3个字节

小结:

varchar 总字节上限为 65535,其中会占用 1~3 字节存储数据长度,实际可用数据字节为 65532。编码决定单字符占用字节,进而限制 varchar (n) 最大 n:

utf8:1 字符占 3 字节,最大 n = 65532 ÷ 3 = 21844

gbk:1 字符占 2 字节,最大 n = 65532 ÷ 2 = 32766

定长 char:直接开辟对应固定长度存储空间,预先分配固定空间,磁盘空间浪费,但查询效率更高

变长 varchar:不超过设定上限前提下,实际占用多少就开辟多少空间,用多少占多少,节省磁盘空间,但查询效率更低

enum和set

java 复制代码
enum:枚举,"单选"类型;
set:集合,"多选"类型;

集合类型:;在插入值时,可以是对应值,也可以是数值,这个数字最终转为二进制形式,从第一位开始对应于我所列举的集合中元素,若对应位为1,则插入该数;查询时同理。数字0代表着空串,占着位置。

集合查询使用find_ in_ set函数:

使用find_in_set函数一次只能查一个元素在一个集合中,若要查多个,可使用sql语言中的and做链接。

java 复制代码
find_in_set(sub,str_list) :如果sub 在str_list 中,则返回下标;
如果不在,返回0;str_list 用逗号分隔的字符串。
相关推荐
CableTech_SQH34 分钟前
行业运维新标杆:百盛3D全场景运维系统
运维·数据库·信息与通信·综合布线
毕业设计70338 分钟前
(免费领源码)基于node的学生公寓管理系统06412- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·mysql·node.js·maven·mybatis·express·b/s
ITOM运维行者44 分钟前
WAN监控怎么做?从链路质量指标到路径级定位的完整方法
数据库·人工智能·机器学习
太理摆烂哥1 小时前
MySQL库的操作
数据库·mysql
Dreamboat-L1 小时前
日志级别基础 + Spring Boot 日志实践指南
java·服务器·数据库·java-ee·springboot
野生数据人1 小时前
ES DSL 转 SQL 速查表:20 条子句对照 + 一条能直接跑的改写示例
大数据·数据库
野生数据人2 小时前
采集链路改投 Doris 速查手册:三条路径对照、output 配置项清单、报错处理表
大数据·数据库
救救孩子把2 小时前
AI面试八股文-07_6-向量数据库索引详解
数据库·人工智能·面试·向量数据库·hnsw
李白客2 小时前
国产数据库"实际用户增长"怎么核验?先定口径,再谈第一
数据库
数据工匠老o3 小时前
一张 5 亿行的表按月分区后,清理历史数据从几小时变成了几秒
数据库·sql