第五站: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 小时前
MySQL库与表的操作
linux·数据库·mysql
lilihuigz2 小时前
产品附加选项插件WooCommerce Product Add-Ons:9种字段类型与3种定价模式提升销售 - 易服客工作室
数据库·mysql·wordpress插件·woocommerce扩展·定制选项
360智汇云3 小时前
Valkey 9.1上线:从Redis兼容到AI数据能力探索
数据库
标致的自行车3 小时前
Entity Framework之问题收集
jvm·数据库·oracle
啵啵鱼爱吃小猫咪3 小时前
Franka机械臂安装实时内核
数据库·postgresql
今天也是元气满满的一天呢4 小时前
从单机架构到负载均衡的互联网架构全流程
数据库·系统架构
SelectDB4 小时前
快手 AB 场景提速 145 倍,从 Spark 到 Apache Doris 的加速实践
数据库·spark·开源
SelectDB4 小时前
阶跃星辰 Agent 可观测实践:为什么 Trace 数据底座选择 SelectDB?
大数据·数据库·agent
冷静的楼房4 小时前
使用ThreadPool发起同步的调用
数据库
一个天蝎座 白勺 程序猿4 小时前
自动SQL优化实战|吃透调优接口+报告配置+统计+索引全流程落地
数据库·sql·sql优化