[MySQL]数据类型

数据类型

1.数据类型分类

接下来就对上面的四种类型进行介绍

2.数值类型

数值类型就和我们c语言中的整形类型一样,tinyint就是char类型,smallint就是short类型,这里我们拿tinyint类型来举例

2.1 tinyint类型

当我们创建的时候没有写是无符号还是有符号类型,系统默认的就是有符号类型。

可以看到tinyint类型最大就是127了,超过上限之后mysql不允许我们插入数值(这就是一种约束后面会提到)。

无符号类型举例

这里无符号类型就不允许我们插入负数。

3.bit类型

3.1 基本语法

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

bit类型是要自己去定这个类型的位数的。

这里很奇怪,bit里面我们填入了10,但是并没有给我们显示出来, 这是因为bit字段在显示时,是按照ASCII码对应的值显示

所以bit的一般用法就是定义bit的大小为1,只存放0和1的值,这样更节省我们的空间。

4. 小数类型

4.1 float语法

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

举例:

小数:float(4,2)表示的范围是-99.99 ~ 99.99

另外,我们存入100.0,看似是长度是4,但是系统会在插入时判断这个数字为100.00,所以还是不可以插入的。

cpp 复制代码
float是会四舍五入的。
如果float是无符号的,
例如float(4,2),那表示的范围就是0~99.99,并不会扩大范围!

4.2 decimal语法

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

decimal(5,2) 表示的范围是 -999.99 ~ 999.99

decimal(5,2) unsigned 表示的范围 0 ~ 999.99

cpp 复制代码
float在存入数据的时候会出现精度损失的问题,所以引入decimal。

可以看出在存储精确度很高小数的时候用decimal更有优势。

float表示的精度大约是7位。

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

5.字符串类型

5.1 char类型

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

可以看到在mysql中,一个汉字就代表了一个字符,和字母是一样的。

5.2 varchar

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

关于varchar(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字节)。

这里要重点一下:变长的意义就是定上限,没有达到上限之前,那么这里的值就是存的数据的大小,但是存入的数据不能超过我们输入的值。

6.日期类型

可以看到这里我们没有插入t3的值,但是它却有值,所以timestamp就是一种时间戳当我们插入数据的时候时间戳就会自动补齐。我们再来实验一下

更新数据的时候t3也会自动更新。

7.enum和set

说了那么多,其实就是enum就是单选,set就是多选

例子:有一个调查表votes,需要调查人的喜好, 比如(登山,游泳,篮球,武术)中去选择(可以多选),(男,女)[单选]

查询语句

cpp 复制代码
 select * from votes where hobby='登山';

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

相关推荐
qq_336313937 小时前
HashMap
java·开发语言
StarRocks_labs7 小时前
从小文件困局到“花小钱办大事”:StarRocks 存算分离批量导入优化实践
数据库·starrocks·compaction·memtable·本地磁盘 spill
专注VB编程开发20年7 小时前
C# int*指向 int 的指针类型(unsafe 上下文)
java·开发语言·c#
唯道行7 小时前
计算机图形学·25 消隐2 区域子分算法-光线投射算法
人工智能·算法·计算机视觉·计算机图形学·opengl
帝吃藕和7 小时前
MySQL 知识点复习- 6.MySQL语法顺序
数据库·mysql
计算机学姐7 小时前
基于SSM的生鲜食品商城系统【2026最新】
java·vue.js·后端·mysql·java-ee·tomcat·mybatis
不会写程序的未来程序员7 小时前
Redis 主从同步原理详解
数据库·redis·缓存
游戏开发爱好者87 小时前
苹果App Store应用程序上架方式全面指南
android·小程序·https·uni-app·iphone·webview
jinxinyuuuus7 小时前
FIRE之旅 财务计算器:实时交互式建模与前端性能工程
前端·人工智能·算法·自动化
要站在顶端7 小时前
iOS自动化测试全流程教程(基于WebDriverAgent+go-ios)
开发语言·ios·golang