MySQL数据类型--------整数类型实战
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,1. 背景* MySQL支持SQL标准整数类型整数(或INT)和SMALLINT。作为标准的扩展,MySQL还支持整数类型TINYINT、MEDIUMINT和BIGINT2. 整数类型所需的存储和值范
千家信息网最后更新 2025年01月22日MySQL数据类型--------整数类型实战
1. 背景
* MySQL支持SQL标准整数类型整数(或INT)和SMALLINT。作为标准的扩展,MySQL还支持整数类型TINYINT、MEDIUMINT和BIGINT
2. 整数类型所需的存储和值范围
类型 | 占用空间 | 最小值 | 最大值 |
(字节) | (signed/Unsigned) | (signed/Unsigned) | |
TINYINT | 1 | -128 | 127 |
0 | 255 | ||
SMALLINT | 2 | -32768 | 32767 |
0 | 65535 | ||
MEDIUMINT | 3 | -8388608 | 8388607 |
0 | 16777215 | ||
INT | 4 | -2147483648 | 2147483647 |
0 | 4294967295 | ||
BIGINT | 8 | -9223372036854775808 | 9223372036854775807 |
0 | 18446744073709551615 |
3. zerofill 属性遇到整数类型应用
* 创建zerofill测试表 zerofill_test
mysql> CREATE TABLE zerofill_test( -> `id` INT(6) ZEROFILL -> )ENGINE=INNODB CHARSET=utf8mb4;Query OK, 0 rows affected (0.08 sec)
* 插入数值长度小于6的值
mysql> INSERT INTO zerofill_test SELECT 11111;Query OK, 1 row affected (0.03 sec)Records: 1 Duplicates: 0 Warnings: 0
* 插入数值长度大于6的值
mysql> INSERT INTO zerofill_test SELECT 2222222;Query OK, 1 row affected (0.04 sec)Records: 1 Duplicates: 0 Warnings: 0
* 查看zerofill_test表所有的数据
mysql> SELECT * FROM zerofill_test;+---------+| id |+---------+| 011111 || 2222222 |+---------+2 rows in set (0.01 sec)
* zerofill总结
* 当显示的值长度小于定义时INT定义的长度,高位补0显示
* 当显示的值长度大于定义时INT定义的长度,照常显示
* zerofill显示属性,值不做任何修改
4. Unsigned 类型溢出现象
* 创建unsigned测试表 unsigned_test
mysql> CREATE TABLE unsigned_test( -> id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT, -> data INT UNSIGNED -> )ENGINE=INNODB CHARSET=utf8mb4;Query OK, 0 rows affected (0.12 sec)
* 插入两行一大一小的值
mysql> INSERT INTO unsigned_test SELECT null, 1;Query OK, 1 row affected (0.03 sec)Records: 1 Duplicates: 0 Warnings: 0mysql> INSERT INTO unsigned_test SELECT null, 2;Query OK, 1 row affected (0.01 sec)Records: 1 Duplicates: 0 Warnings: 0
* 查看表中插入的数据值
mysql> SELECT * FROM unsigned_test;+----+------+| id | data |+----+------+| 1 | 1 || 2 | 2 |+----+------+2 rows in set (0.00 sec)
* 利用小数值对大数值做减运算
mysql> SELECT data - (SELECT data FROM unsigned_test where id=2) FROM unsigned_test where id=1;ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in '(`mytest`.`unsigned_test`.`data` - (select `mytest`.`unsigned_test`.`data` from `mytest`.`unsigned_test` where 1))'
5. 整数类型应用总结
* signed/Unsigned: 是否有符号
* ZEROFILL: 显示属性,值不做任何修改
* 推荐不要使用UNSIGNED, 范围本质上没有大的改变
* UNSIGNED可能会有溢出现象发生
* 自增INT 类型主键建议使用BIGINT
6. 总结
以需求驱动技术,技术本身没有优略之分,只有业务之分。
类型
整数
长度
数值
属性
数据
技术
标准
现象
范围
应用
支持
测试
最大
最小
业务
只有
字节
对大
建议
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
oa访问服务器u8
数据库体系结构是指
青岛统计年鉴数据库
网络安全企业创新
河海大学软件开发
前端页面服务器管理软件
武汉大学网络安全示范
工商银行软件开发薪资
数据库什么是中间表
青海住房和城乡建设厅数据库
关于软件开发公司的建议
网络安全自检员
监控数据库性能语句
scratch 数据库结合
清华大学出版网络安全第九章
加入我们 软件开发
mssql 服务器
数据库锁库数据审核
二道区通用网络技术品质保障
软件开发逾期违约
数据库性能模型
excel表导入数据库中
荣耀7x连接不到服务器
洛阳软件开发最新招聘
饥荒在别人服务器打代码
怎样将服务器的程序弄出来
上海嘉定网络技术公司招聘
.db 数据库
招商数据库系统
dnf台服灰服务器