mysql数据库基础:数据类型介绍

mysql数据库基础

分类

常见数据类型
在这里插入图片描述

类型分类
整数类型TINYINT、SMALLINT、MEDIUMINT、INT、INTEGER、BIGINT
浮点类型FLOAT、DOUBLE
定点数类型DECIMAL
位类型BIT
日期类型YEAR、TIME、DATE、DATETIME、TIMESTAMP
字符串类型CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT
枚举类型ENUM
集合类型SET
二进制字符串类型BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB
JSON类型JSON对象、JSON数组
空间数据类型单值类型:GEOMETRY、POINT、 LINESTRING、POLYGON;
集合类型:MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、 GEOMETRYCOLLECTION

常见数据属性
在这里插入图片描述

属性名称含义
NULL数据列可包含NULL值
NOT NULL数据列不允许包含NULL值
DEFAULT默认值
PRIMARY KEY主键
AUTO_INCREMENT自动递增,使用于整数类型
UNSIGNED无符号
CHARACTER SET name指定一个字符集

1、整型

分类

整数类型字节范围
Tinyint1有符号:-128~ 127
无符号:0~255
Smallint2有符号:-32768~32767
无符号:0 ~65535
Mediumint3有符号:-8388608~ 8388607
无符号:0 ~ 16777215
Int / integer4有符号:-2147483648 ~ 2147483647
无符号:0 ~ 4294967295
Bigint8有符号:-9223372036854775808 ~ 9223372036854775807
无符号:0~ 9223372036854775807*2+1

特点

1、如何设置无符号和有符号
通过UNSIGNED属性设置整形无符号

create table 表名(
	t1 INT, # 设置有符号(默认)
	t2 INT UNSIGNED # 设置无符号
	# 如果添加的是负数,那么结果查询后显示为0
)

2、如果插入的数据超过整型的取值范围,会报out of range异常

3、如果不认为设置长度,那么系统会自动赋予默认长度

4、使用场景:
(1)TINYINT一般用于枚举数据,比如系统设定取值范围很小且固定的场景。
(2)SMALLINT :可以用于较小范围的统计数据,比如统计工厂的固定资产库存数量等。
(3)MEDIUMINT :用于较大整数的计算,比如车站每日的客流量等。
(4)INT、INTEGER :取值范围足够大,一般情况下不用考虑超限问题,用得最多。比如商品编号。
(5)BIGINT :只有当你处理特别巨大的整数时才会用到。比如双十一的交易量、大型门户网站点击量、证券公司衍生产品持仓等

2、小数

2.1 分类

浮点型
浮点数类型字节范围
float(M,D)4±1.75494351E^ 38~±3.402823466EE^38
double(M,D)8很大~~~
定点型

MySQL中的定点数类型只有 DECIMAL 一种类型

定点数类型字节范围
DECIMAL(M,D)M+2最大取值范围与double相同,给定decimal的有效取值范围由M和D决定

2.2 特点

(1)M和D的含义
M:整数部分位数+小数部分位数
D:保留的小数位数(四舍五入)
(2)M和D都可以省略
(3)如果时decimal定点型,则M默认为10,D默认为0
如果是float和double类型,则会根据插入的数值的精度来决定精度
(4)定点型的精确度较高,如果要求插入数值的精度较高,如货币运算等则考虑使用定点型。
(5)从MySQL 8.0.17开始,FLOAT(M,D) 和DOUBLE(M,D)用法在官方文档中已经明确不推荐使用,将来可能被移除。另外,关于浮点型FLOAT和DOUBLE的UNSIGNED也不推荐使用了,将来也可能被移除。
(6)定点数在MySQL内部是以 字符串的形式进行存储,这就决定了它一定是精准的。

浮点数相对于定点数的优点是在长度一定的情况下,浮点类型取值范围大,但是不精准,适用于需要取值范围大,又可以容忍微小误差的科学计算场景(比如计算化学、分子建模、流体动力学等);
定点数类型取值范围相对小,但是精准,没有误差,适合于对精度要求极高的场景 (比如涉及金额计算的场景)

3、字符型

3.1 较短的文本

字符串类型最多字符数描述及存储需求区别
char(M)MM为0~255之间的整数固定长度的字符,比较耗费空间,效率高点
varchar(M)MM为0~65535之间的整数可变长度的字符,没那么耗费空间,效率低点

3.2 较长的文本

字符串类型描述及存储需求
text存储长文本类型
blob存储图片类型

4、日期型

4.1 分类

日期类型字节数最小值最大值
date4100-1-019999-12-31
time3-838:59:59838:59:59
year119012155
datetime81000-01-01 00:00:009999-12-31 23:59:59
timestamp419702038年的某个时刻

补充:
datetime和timestamp的区别
(1)timestamp支持的时间范围较小,datetime的取值范围相对较大
(2)timestamp和实际时区有关,更能反映实际的日期,而datetime则只能反映出插入时的当地时区
(3)timestamp的属性受mysql版本和sqlMode的影响很大

5、枚举类型(Enum)

要求插入的值必须属于列表中指定的值之一。
例如:

# 建表,定义一个枚举类型的数据
create table tab_char(
	c1 ENUM('a','b','c')
);

# 插入值
insert into tob_char values('a'),('b'),('c');
# 如果插入列表意外的值,则会报错
insert into tob_char values('m'); # 报错

6、set(类型)

set用来保存集合
和Enum类型类似,里面可以保存0~64个成员。
和Enum类型最大的区别是:set类型一次可以选取多个成员,而Enum只能选一个。根据成员个数不同,存储所占的字节也不同
在这里插入图片描述

  • 例如
create table tab_set(
	s1 SET('a','b','c','d')
)

insert into tab_set values('a');
insert into tab_set values('a,b');
insert into tab_set values('a,b,c');

结果
在这里插入图片描述

7、位类型介绍
BIT类型中存储的是二进制值

类型长度长度范围占用空间
BIT(M)M1<=M<=64约为(M+7)/8个字节

BIT类型,如果没有指定(M),默认是1位。这个1位,表示只能存1位的二进制值。这里(M)是表示二进制的位数,位数最小值为1,最大值为64。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值