2.2 不同的数据类型

把mysql常用的数据类型做了一个归类,那么用来保存数字的数据类型都有什么?下面咱们就来看一下这个表格吧。

一、数字

类型

大小

说明

TINYINT

1字节

小整数

SMALLINT

2字节

普通整数

MEDIUMINT

3字节

普通整数

INT

4字节

较大整数

BIGINT

8字节

大整数

FLOAT

4字节

单精度浮点数

DOUBLE

8字节

双精度浮点数

DECIMAL

-------

DECIMAL(10,2)

TINYINT:这个类型,保存一个整数,占用一个字节的空间,也就是8个二进制位,那么一个字节的存储空间,能保存多大范围的整数?就是负2的7次幂到2的7次幂减-1,就是负的128到正的127这个范畴

SMALLINT:它保存数字是占用两个字节的空间,那么也就是16个二进制位,

MEDIUMINT:它是用3个字节来保存整数,

INT:它是用4个字节来保存整数,它的这个范畴是可以到几十亿,所以说保存数据是足够了,而且这个int它的存储空间又不是占的特别大,是4个字节,所以平时我们在定义整数的时候,如果没有特殊指定的话,一般用的都是默认的这个int类型

BIGINT:我们是保存特别大的整数的时候,才会把字段定义成big int,否则的话,一般我们用int类型儿就足够了,big int占用的存储空间确实太大了

FLOAT:叫做单精度的浮点数,那么DOUBLE叫做双精度的浮点数,它们的区别也是存储空间的大小,这个float是4个字节,而这个double是8个字节。单精度也好,还是双精度类型也好,他们在表示数字的时候并不是很精确,是有误差的。所以说我们保存一些这个对精度要求不是很高的这个数据,多的这个数据,或者不是很重要的数据,用这个float或者double去定义浮点数是没有问题的

DECIMAL:这个类型,它为什么能精确?而float double为什么是不精确?我们把这个十进制的浮点数转成这个二进制浮点数的时候会丢数据的。十进制的浮点数转成二进制的浮点数会丢数据,那么我们这个decimal它怎么保证的说这个数据不丢失?因为这个decimal在保存这个数字的时候,无论是整数还是浮点数,它都是按照字符串儿的方式来保存,比如说我保存是1500.01,那么在这里边这些数字,一个的数字就是一个的字符儿,就是字符串儿里边一个一个的字符。它不存在说我从十进制转成二进制,然后再存储到这个数据库里边,这一转换的时候它就有精度的丢失了。

二、数据类型:字符串

类型

大小

说明

CHAR

1-255字符

固定长度字符串

VARCHAR

1-65535字符

不固定长度字符串

TEXT

1-65535字符

不确定长度字符串

MEDIUMTEXT

1-1千6百万字符

不确定长度字符串

LONGTEXT

1-42亿字符

不确定长度字符串

字符串儿一共是有五种的:

CHAR:第一种咱们看一下叫做char,叫做固定长度的字符串,那它保存的字符串的长度都是统一而且固定的,比如说保存性别。比如说保存电话号码,那这些字符串的长度都是固定的,比如说手机号码就是11个字符对吧?那么字符串类型,它保存的这个字符是有范围的,那这个字符数量的范围是1到255个字符之间就行了,那么在使用char的时候,后面要跟上一个小括号儿,里边写上字符串儿的长度,这是char类型。

VARCHAR:我们保存那些不固定长度的字符串儿,比如说姓名,那么有的人的名字是两个字符,也有3个字符,还有4个字符的,如果说是外国同学,他的字符的数量会更多,那么对于这种不固定长度的字符串儿,我们可以选择varchar这个类型。它的这个字符数量的这个范围是1到65535个字符,这个范围还是很大的,那么在使用varchar的时候,也是后面加上一个小括号,然后写上这个字符串的最大长度就行了,这个是不固定长度的字符串。

不确定长度的字符串儿,有三种,一个叫做TEXT,一个叫做MEDIUMTEXT,还有叫做LONGTEXT

什么叫做不确定长度?就是我们说这个varchar,还有一个最大的长度,比如说我规定姓名,那么要求最多是20个字符。比如说保存地址,那地址我比如说规定200个字符,这都是最大的字符的数量。不确定长度的字符串儿,是我根本就没有办法去规定最大的这个字符的数量,那这个字符串儿的最大的字符数,就是咱们这个类型儿的最大的字符数。

TEXT:它可以保存的数量是1到65535的

MEDIUMTEXT:它可以保存到1000多万个字符,如果觉得还不够用,那我们还有一个更大的这个类型叫做long text

LONGTEXT:它可以最大保存42亿个字符

mysql,这个字符串,如果保存的这个字符太多,它的这个读写速度反倒是下降的,所以说,我们一般用这个varchar这个类型就足够了,如果保存的这个字符串儿的内容是超长的,那一般我们会选择nosql数据库来保存,它们的这个读写速度,比mysql的这个超长字符串儿的速度要快很多。

三、数据类型:日期类型

类型

大小

说明

DATE

3字节

日期

TIME

3字节

时间

YEAR

1字节

年份

DATETIME

8字节

日期时间

TIMESTAMP

4字节

时间戳

DATE:保存的是只有日期没有时间,这一点,请大家注意,mysql中的日期是一种特殊的字符串儿,所以我们在书写日期数据的时候,一定要加上引号,单引号,双引号都可以,而且年月日之间要用横线分隔,而不是斜线。

TIME:时间类型,就是纯粹的时间是24小时制的

YEAR:代表的是年份,比如说我们想保存毕业年份什么的,用这个类型就非常的适合了。

DATETIME:它包括了日期和时间,所以说你既想有日期又想有时间的话,比如说我想保存一个电影儿票的这个开始时间,比如说某年,某月,某小时,某分钟,某秒,这个就是一个电影开始的时间,所以说我们用datetime来保存是没有问题的。

TIMESTAMP:它跟datetime类型差不太多,都是包括了和日期和时间的,但是时间戳类型的日期只能是1970年1月1号之后的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值