MySQL数据类型--------整数类型实战

1. 背景

 * MySQL支持SQL标准整数类型整数(或INT)和SMALLINT。作为标准的扩展,MySQL还支持整数类型TINYINT、MEDIUMINT和BIGINT

2.  整数类型所需的存储和值范围

   类型    占用空间    最小值    最大值
   (字节) (signed/Unsigned) (signed/Unsigned)
TINYINT -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: 0

mysql> 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. 总结

以需求驱动技术,技术本身没有优略之分,只有业务之分。

时间: 2024-10-07 09:13:49

MySQL数据类型--------整数类型实战的相关文章

MySQL数据类型--------浮点类型实战

1. 背景 * MySQL支持的浮点类型中有单精度类型(float), 双精度类型(double),和高精度类型(decimal),在数字货币类型中推荐使用高精度类型(decimal)来进行应用. * MySQL浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001.FLOAT和DOUBLE在不指

MySQL数据类型--------字符串类型实战

1. 背景 * MySQL支持的字符串类型有CHAR.VARCHAR.二进制.var二进制.BLOB.文本等等. 2. 字符串类型所需的存储和值范围 类型 说明 N的含义 是否有字符集 最大长度 CHAR(N) 定义字符 字符 是 255 VARCHAR(N) 变长字符 字符 是 16384 BINARY(N) 定长二进制字节 字节 否 255 VARBINARY(N) 变长二进制字节 字节 否 16384 TINYBLOB 二进制大对象 字节 否 256 BLOB 二进制大对象 字节 否 16

两大基本数据类型 - 整数类型 / 浮点数类型

一.整数与浮点数之间的区别 两者的存储方式不一样,整数是直接以二进制形式进行存储,对于浮点数,需要将小数部分和指数部分分开存储.两者之间的区别还有如下: 1-整数没有小数部分,浮点数有小数部分: 2-浮点数可以表示的范围比整数大: 3-对于一些算术运算(两个很大的数相减),浮点数损失的精度更多: 4-在任何区间内都存在着无数个实数,所以计算机的浮点数不能表示区间内的所有值,通常只是实际值的近似值: 5-过去,浮点运算比整数运算慢,不过,有了浮点处理器,速度上的差距有了一定的缩小. 二.整数 in

C语言的数据类型——整数类型和浮点类型

??基本数据类型分为整数类型和浮点类型两大类.其中,整数类型又可以被细分成有符号整型与无符号整型. 1.整数类型 有符号整型 short int int long int long long int char(使用整数存储字符) 无符号整型 unsigned short int unsigned int unsigned long int unsigned long long int unsigned char(使用整数存储字符) ??其中,后面的类型不能小于前面的类型,即short int占用

mysql数据类型——时间类型

四种日期格式: 每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值. YEAR         0000 YYYY 年  '2015' DATE         0000-00-00  YYYY-MM-DD     日期 '2015-04-24' TIME          00:00:00  HH:MM:SS        时间'12:25:36' DATETIME       0000-00-00 00:00:00  

MYSQL——数据类型

MYSQL——数据类型 整数类型 日期类型 字符串类型

69期-Java SE-031_MySQL-001-002 创建表、MySQL数据类型、数据的管理(数据库结构、数据表、数据)、SQL 函数

### 创建表 1.创建数据库 ```sql create database mstest default character set utf8 collate utf8_general_ci ``` 2.创建数据表 ```sql create table user( id int, name varchar(11) ) ``` Java 数据类型:基本数据类型 byte short int long double float boolean char ? 引用类型 MySQL 数据类型 - 整

三、MySQL数据类型

.MySQL数据类型数值类型        语句        大小    范围(有符号)     范围(无符号)微小整数    tinyint    1k     -128-127        0~255小整数        smallint    2k    -32768~32767        0~65535中整数        mediumint    3k    -2(23)~2(23)-1    0~2(24)-1大整数        int        4k    -2(31

mysql 数据库服务概述 、 构建MySQL服务器 、 数据库基本管理 、 MySQL数据类型 、

08:30------09:0009:00------12:00ftp服务器:172.40.50.117 7000软件 softpackage/mysql笔记 nsd1710/课程名称练习 homework 庞丽静 静静老师第四阶段:数据库管理 7天 DBA 安全与监控 6天 IDC监控集群与存储 5天+++++++++++++++++++++数据库管理:一 搭数据库服务器二 MySQL数据库服务的基本管理三 数据管理四 用户授权与权限撤销五 数据备份与恢复六 MySQL主从同步七 数据读写分离