mysql 数据类型----重拾mysql

1.mysql数据类型

mysql定义数据类型是对数据库优化非常重要的手段

mysql支持多种类型,常用的数据类型大致分为三大类:数值类型(包括整数类型、浮点类型和定点类型),日期时间类型,字符串类型,这次主要用于复习这三种类型。

2.数值类型

2.1整数类型

整数类型一共有5,包括TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT

image-20220405112024144

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

2.2浮点类型

 浮点类型是用来处理小数的,当然整数也可以处理,此时可以理解成整数是小数部分为0的小数。

mysql中支持的浮点数类型分别是float,double,real

  • float 表示单精度浮点数
  • double 表示双精度浮点数
  • real 默认就是double。如果你把sql模式设定为启用"REAL_AS_FLOAT",那么,MySQL就认为real是float。不过real 一般并不属于常用浮点类型

FLOAT 和 DOUBLE 这两种数据类型的区别是啥呢?

FLOAT 占用字节数少,大小为4字节,取值范围小;DOUBLE 占用字节数多,大小为8字节,取值范围也大。

注:float(6,2)表示4个整数两个小数,double(6,2)一样的。但这种方法在官方文档中已经明确不推荐使用,并且将来可能被移除。

2.3 定点数类型

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

使用 DECIMAL(M,D) 的方式表示高精度小数。其中,M被称为精度,D被称为标度。0<=M<=65, 0<=D<=30,D<M。例如,定义DECIMAL(5,2)的类型,表示该列取值范围是-999.99~999.99。

DECIMAL(M,D) 的最大取值范围与 DOUBLE 类型一样,但是有效的数据范围是由M和D决定的。DECIMAL 的存储空间并不是固定的,由精度值M决定,总共占用的存储空间为M+2个字节。也就是说,在一些对精度要求不高的场景下,比起占用同样字节长度的定点数,浮点数表达的数值范围可以更大一些。
 

3.日期类型

 

  • YEAR 类型通常用来表示年
  • DATE 类型通常用来表示年、月、日
  • TIME 类型通常用来表示时、分、秒
  • DATETIME 类型通常用来表示年、月、日、时、分、秒
  • TIMESTAMP 类型通常用来表示带时区的年、月、日、时、分、秒,不同时区的人查看也会显示不同值

4.字符串类型

字符串总体上分为 CHAR 、 VARCHAR 、 TINYTEXT 、 TEXT 、MEDIUMTEXT 、 LONGTEXT 、 ENUM 、 SET 等类型。

CHAR和VARCHAR类型都可以存储比较短的字符串。

4.1 CHAR类型

CHAR(M) 类型一般需要预先定义字符串长度。如果不指定(M),则表示长度默认是1个字符。
如果保存时,数据的实际长度比CHAR类型声明的长度小,则会在 右侧填充 空格以达到指定的长度。当MySQL检索CHAR类型的数据时,CHAR类型的字段会去除尾部的空格。
定义CHAR类型字段时,声明的字段长度即为CHAR类型字段所占的存储空间的字节数。
 

4.2 VARCHAR类型

VARCHAR(M) 定义时, 必须指定 长度M,否则报错。
MySQL4.0版本以下,varchar(20):指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) ;MySQL5.0版本以上,varchar(20):指的是20字符。
检索VARCHAR类型的字段数据时,会保留数据尾部的空格。VARCHAR类型的字段所占用的存储空间为字符串实际长度加1个字节。

4.3 TEXT类型

在MySQL中,TEXT用来保存文本类型的字符串,总共包含4种类型,分别为TINYTEXT、TEXT、 MEDIUMTEXT 和 LONGTEXT 类型。

在向TEXT类型的字段保存和查询数据时,系统自动按照实际长度存储,不需要预先定义长度。这一点和VARCHAR类型相同。

每种TEXT类型保存的数据长度和所占用的存储空间不同,如下:

由于实际存储的长度不确定, MySQL 不允许 TEXT 类型的字段做主键。遇到这种情况,你只能采用CHAR(M),或者 VARCHAR(M)。


原文链接:https://blog.csdn.net/qq_43459116/article/details/124135318

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值