MySQL中的数据类型

1,Tinyint

在Mysql中有许多衍生的int类型,比如Tinyint就是其中一个,他的最小值是-128 最大值是127

那么为什么Mysql中要对这些数据做如此详细的处理?是为了让程序员对数据的合法插入,数据类型本身也是一种约束。

可以看到,一旦插入数据超过范围,就会报错。

说明:

在MySQL中类型分为无符号和有符号,默认是有符号;

可以通过unsigened来某个字段是无符号的;

例子:

可以看到,该类型就不可插入带符号数字。

int类型衍生中还有:smallint 最小值是-32768,最大值是32767;

mediumint,最小值是-8388608,最大值是8388607;

还有int,bigint。

2,bit类型/字节类型(位类型)

name bit(1); 只能插入0和1,只在二进制位上开了一位,所以取值范围是0和1;

3,浮点类型

1,float

用法:float(m,d);其中m表示显示长度,d表示精度,占用空间四个字节

如果用unsigend定义,那么float的取值范围就是0-99.99,double用法也是一样的就不多说了。

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的进度要高,当插入精度大的数字时可以选用decimal。

4,字符串类型

1,char

固定长度字符串

用法:char(L);L表示字符串的长度,该类型字符串的最大长度位255:

该字符为固定长度,就是在表中定义了多少空间他就给你开多少固定的空间;

从图中可以看到,2并不是开了两个字节的长度,而是可以存两个字符,可以是汉字或英文。

2,varchar

用法:varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节(注意是字节)

用法和char类似:

其中,与char不一样的是,如果给varchar开了长20的长度,但是只给里面塞一个字符,这个时候varchar的长度是1,而不是20.这就是变长字符的优势;其中,大小为65535跟字节,但是要用三个字节来存字符的长度等内容,实际长度是65532,而最长的字符数是21844字符:

5,日期和时间类型

date :日期 'yyyy-mm-dd' ,占用三字节

datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用八字节

timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用 四字节

可以看到timestamp它显示的是时事的时间,每次跟新表的时候t3会跟着变

6,enum 和 set类型

语法: enum:枚举,"单选"类型;

enum('选项1','选项2','选项3',...);

set:集合,"多选"类型;

set('选项值1','选项值2','选项值3', ...);

以下是调用方法之一:

当然enum可以使用下标来指代(注意不能使用零下标):

set可以指定多个内容进行写入,具体操作如下:

enum和set只能插入在建表之前定好的量,定义其他会报错。

set还可以使用数字标下标,但是set是以位来当下标,要注意:

可以看到,set并不以数字为下标:

1-->00001;

2-->00010;

7-->00111;

31-->11111;

案例:

set也可插入零号位,但是插入时就不是null而是'',代表插入过的意思。

7,enum 和 set类型查找

操作:

enum:

set:

可以看到,set用where查找时,时按严格匹配来查找,那些含有羽毛球的多个集合里不会被查找出来。

我们可以用关键字 find_in_set 可以看元素集合

方法:

可以用and的方式组合多个查询条件:

希望可以对你们有帮助.

相关推荐
Leighteen6 分钟前
MongoDB 文档模型设计:从关系型思维到文档型思维的转变
数据库·mongodb
Ethan010728 分钟前
隔离级别管读,乐观锁管写——RC/RR 与写冲突的本质
mysql
CodexDave36 分钟前
数据库连接池耗尽:排查顺序与三层兜底
服务器·前端·数据库·git·云原生·容器·kubernetes
播播资源1 小时前
智能路由(AI Router):用“虚拟模型”撬动无限算力,从此告别手动切换
数据库
熊文豪1 小时前
【金仓数据库征文】不装中间件的 MySQL→金仓在线迁移,mysql_fdw 全流程,和一个差点漏掉的 emoji
数据库·mysql·中间件·电科金仓
C++、Java和Python的菜鸟1 小时前
第5章 后端Web基础 (MySQL基础)
前端·mysql·adb
一个儒雅随和的男子2 小时前
多租户方案的选型
数据库·oracle
listening7772 小时前
HarmonyOS 6.1 跨设备数据库实战:分布式账本的落地与一致性校验
数据库·harmonyos·分布式账本
147API2 小时前
Claude Tag 进入 Slack 后,团队智能体需要哪些任务与审计字段
java·开发语言·数据库
Database_Cool_2 小时前
AI Agent 应用数据库选型:阿里云 PolarDB-X 高并发分布式数据底座
数据库·人工智能·阿里云