【MySQL】:数据类型

数据类型

一.数值类型

1.整数

1.tinyint

正常插入

越界插入

如果我们向mysql特定的类型中插入不合法的数据,MySQL一般都是直接拦截我们,不让我们做对应的操作!

2.bit类型

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

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

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

2.浮点类型

1.float

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

例子

小数:float(4,2)表示的范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入。

注意:float取无符号就是去掉负数。

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表示的精度不一样。

可以看到decimal其实更加准确,float表示的精度大约是7位。

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

二.字符串类型

1.char类型

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

在UTF8里虽然一个汉字是3个字节,但在mysql里仍被解释为一个字符。

2.varchar类型

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

说明:

关于varchar(len),len到底是多大,这个len值,和表的编码密切相关(注意len代表的是上限,并非一定开len个空间):

1.varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字节数是65532。

2.当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占用3个字节,如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符占用2字节)。

3.char和varchar的区别

4.日期和时间类型

可以发现t3我们根本没有进行插入,但它自动生成了,也就是说时间戳是自动生成的。

5.enum和set

简而言之enum相当于单选,set相当于多选。

一般使用

枚举类型不仅可以写枚举常量,也可以写它的下标。

同样set也能用数字表示,但是它是按照比特位表示的。例如0001->登山,0010->游泳,0011->登山,游泳。

三.集合查询

按性别筛选

如果我们要筛选爱好里有武术的怎么做呢?这就需要find_ in_ set函数了。它会查找含有该子集的集合。

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

如果要求爱好里有登山和游泳呢?

相关推荐
Ren_xixi1 小时前
redis和mysql的区别
数据库·redis·mysql
众拾达人2 小时前
Android自动化测试实战 Java篇 主流工具 框架 脚本
android·java·开发语言
追逐时光者3 小时前
免费、简单、直观的数据库设计工具和 SQL 生成器
后端·mysql
吃着火锅x唱着歌3 小时前
PHP7内核剖析 学习笔记 第四章 内存管理(1)
android·笔记·学习
drebander3 小时前
MySQL 查询优化案例分享
数据库·mysql
_Shirley4 小时前
鸿蒙设置app更新跳转华为市场
android·华为·kotlin·harmonyos·鸿蒙
小林coding6 小时前
阿里云 Java 后端一面,什么难度?
java·后端·mysql·spring·阿里云
hedalei6 小时前
RK3576 Android14编译OTA包提示java.lang.UnsupportedClassVersionError问题
android·android14·rk3576
锋风Fengfeng6 小时前
安卓多渠道apk配置不同签名
android
18号房客6 小时前
高级sql技巧进阶教程
大数据·数据库·数据仓库·sql·mysql·时序数据库·数据库架构