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的方式组合多个查询条件:

希望可以对你们有帮助.

相关推荐
Karoku06621 分钟前
【企业级分布式系统】ELK优化
运维·服务器·数据库·elk·elasticsearch
小技与小术2 小时前
数据库表设计范式
数据库·mysql
安迁岚2 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作
运维·服务器·数据库·sql·mysql
安迁岚2 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验九 触发器
数据库·sql·mysql·oracle·实验报告
Loganer2 小时前
MongoDB分片集群搭建
数据库·mongodb
LKID体2 小时前
Python操作neo4j库py2neo使用之创建和查询(二)
数据库·python·neo4j
刘大浪2 小时前
后端数据增删改查基于Springboot+mybatis mysql 时间根据当时时间自动填充,数据库连接查询不一致,mysql数据库连接不好用
数据库·spring boot·mybatis
一只爱撸猫的程序猿2 小时前
简单实现一个系统升级过程中的数据平滑迁移的场景实例
数据库·spring boot·程序员
无敌岩雀2 小时前
MySQL中的索引
数据库·mysql
a_安徒生3 小时前
linux安装TDengine
linux·数据库·tdengine