第五站: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 用逗号分隔的字符串。
相关推荐
知行合一。。。2 小时前
RAG--03--Milvus基本用法
数据库·oracle·milvus
TDengine (老段)3 小时前
TDengine 线程模型 — 网络、调度、执行
大数据·数据库·物联网·制造·时序数据库·tdengine·涛思数据
上学的小垃圾4 小时前
01-数据库系统概述
数据库
二进制漫游记4 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
2501_928996224 小时前
GPT-4o换DeepSeek迁移成本多少?中科热备解析API聚合平台技术账本
前端·数据库·人工智能
泡干脆面就番茄6 小时前
MySQL_子查询_分页查询与联合查询详解
数据库·mysql
devpotato8 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis
天若有情6738 小时前
Node+MySQL小型全栈笔记项目实战课程分享
数据库·笔记·mysql
wxwx_bscxy3228 小时前
基于springboot宠物领养系统的设计与实现
数据库·spring boot·后端·spring·宠物
九月要晚安9 小时前
达梦DW与AFC对比
数据库