阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL整型数据类型详解

218次阅读
没有评论

共计 1669 个字符,预计需要花费 5 分钟才能阅读完成。

1. 对整数类型, MySQL 还支持类型名称后面的小括号内指定的显示宽度,例如 int(5) 表示宽度小于 5 位时填满宽度,如果不显示指定宽度默认是 int(11), 一般配合 zerofill 使用下面来描述下

— 创建表 t1 有 id1 和 id2 字段,指定数值宽度分别为 int 和 int(5)
CREATE TABLE t1(id1 INT, id2 INT(5));
— 在里面都插入 1
INSERT INTO t1 VALUES(1,1);
— 查询格式没有异常, 值是 id1=1, id2=1
SELECT * FROM t1;
— 分别修改 id1 和 id2 字段类型, 加入 zerofill 参数
ALTER TABLE t1 MODIFY id1 INT ZEROFILL;
ALTER TABLE t1 MODIFY id2 INT(5) ZEROFILL;
— 再次查询时  id1=0000000001, id2=00001
SELECT * FROM t1;

2. 整数类型还有一个属性 auto_increment。产生唯一标识,值一般从 1 开始,每行增加 1. 定义为 not null , 并且定义 primary key 或 unique 键如下:

CREATE TABLE a1 (id INT AUTO_INCREMENT NOT NULL,PRIMARY KEY);
CREATE TABLE a1 (id INT AUTO_INCREMENT NOT NULL,PRIMARY KEY(id));
CREATE TABLE a1 (id INT AUTO_INCREMENT NOT NULL,UNIQUE(id));

3. 对于小数表示, MySQL 分为浮点数和定点数

浮点数包括 float,double。定点数 decimal 它是以字符串形式存放的,比浮点数精确, 用于倾向等精度高的数据。

浮点数和定点数都可以加 (M,D) 如:float(7,4)  值 -999.9999 保存时进行了四舍五入,如果插入是 999.00009,值结果是 999.0001。注意浮点数据后面跟(M,D) 是非标准用法。

定点数 deciaml 不指定精度时,默认整数为 10, 默认小数位为 0。

 

MySQL 整型数据类型详解

MySQL 的数据类型

在翻看老的数据表设计时,发现一个问题:数据表结构中存在 bigint(20) 类型的字段,但是 Java 中 Long 的最大值为 9223372036854775807,总共 19 位长度,那么问题来了,bigint(20) 的数据类型设计是否会造成 Java 类型的精度溢出问题?下面我们来分析一下这个问题,如有不正之处,欢迎批评指正。

MySQL 整型类型

数据格式:类型  [(M)]  [UNSIGNED]  [ZEROFILL]

TINYINT

M 默认值为 4

8 位二进制数。
带符号数据范围:-128 到 127。
无符号数据范围:0 到 255。

SMALLINT

M 默认值为 6

16 位二进制数。
带符号数据范围:-32768 到 32767。
无符号数据范围:0 到 65535。

MEDIUMINT

M 默认值为 9

24 位二进制数。
带符号数据范围:-8388608 到 8388607。
无符号数据范围:0 到 16777215。

INT

M 默认值为 11

32 位二进制数。
带符号数据范围:-2147483648 到 2147483647。
无符号数据范围:0 到 4294967295。

BIGINT

M 默认值为 20

64 位二进制数。
带符号数据范围:-9223372036854775808 到 9223372036854775807。
无符号数据范围:0 到 18446744073709551615。

注意

我们进行数据表设计时,喜欢用 bigint(20)、int(10)、tinyint(2)之类的数据类型,类型后的数字并不表示数据存储长度,而是表示字段要显示的长度,只有在字段设置为 zerofill(以 0 填充)时,显示长度才会生效。

例如:
int(5):假如列的值为 99,如果该列指定了 zerofill,则在查询结果中会显示为 00099。

其他类型

BIT[M]

bit 位类型,M 表示 bit 的位数,范围从 1 到 64,如果 M 被忽略,默认为 1。

BOOLEAN

MySQL 会将 BOOLEAN 类型转换为 TINYINT(4)。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1669字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中