数据类型之【数值类型】的整数型 tinyint
1.1 tinyint说明
id tinyint(M) [UNSIGNED] [ZEROFILL]
字段名 字段类型(长度) [无符号] [前导填充]
unsigned:
01:tinyint(M)后面加上unsigned参数后,就是无符号(tinyint范围就是0~255)
02:tinyint(M)后面不加unsigned参数,且不加zerofill参数,就是有符号(tinyint范围就是-128~127)
zerofill:
01:进行前导零填充
02:tinyint(M)加上zerofile后,同时也会把unsigned参数也带上(tinyint范围0~255)
1.2 tinying实践
1.2.1 环境准备
##创建chenliang库
mysql> create database if not exists chenliang;
Query OK, 1 row affected (0.03 sec)
mysql> show databases like "ch b60 enliang";
+----------------------+
| Database (chenliang) |
+----------------------+
| chenliang |
+----------------------+
1 row in set (0.03 sec)
##进入chenliang库
mysql> use chenliang;
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| chenliang |
+------------+
1 row in set (0.01 sec)
1.2.2 加unsigned参数
##创建test1测试表(这里指定了UNSIGNED,也就是无符号)
mysql> CREATE TABLE IF NOT EXISTS test1(
-> id tinyint(3) UNSIGNED
-> );
Query OK, 0 rows affected (0.06 sec)
^==表test1的id字段加了unsigned参数,那么id字段的范围就是0~255
mysql> desc test1;
+-------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| id | tinyint(3) unsigned | YES | | NULL | |
+-------+---------------------+------+-----+---------+-------+
1 row in set (0.03 sec)
****测试01:测试插入范围0~255的正整数和超过255的正整数
mysql> INSERT INTO test1 values(0); #插入数值0,正常(没有超过范围)
Query OK, 1 row affected (0.06 sec)
mysql> INSERT INTO test1 values(255); #插入数值255,正常(没有超过范围)
Query OK, 1 row affected (0.05 sec)
mysql> INSERT INTO test1 values(256); #插入数值256,错误(超过了tinyint的范围)
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> select * from test1;
+------+
| id |
+------+
| 0 |
| 255 |
+------+
2 rows in set (0.00 sec)
***测试02:测试插入范围-1~-128范围的负整数
mysql> INSERT INTO test1 values(-1); #插入负整数-1,报错
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> INSERT INTO test1 values(-128); #插入负整数-128,报错
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> INSERT INTO test1 values(-129); #插入负整数-129,报错
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> select * from test1;
+------+
| id |
+------+
| 0 |
| 255 |
+------+
2 rows in set (0.00 sec)
1.2.3 加zerofill参数
##创建test2表(这里指定了zerofill,也就是前导零填充)
mysql> CREATE TABLE IF NOT EXISTS test2(
-> id tinyint(3) ZEROFILL
-> );
Query OK, 0 rows affected (0.07 sec)
^==表test2的id字段加了zerofill参数,那么id字段的范围为0~255,因为加
上了zerofill参数后,会同时把unsigned参数也带上
mysql> desc test2;
+-------+------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------------------+------+-----+---------+-------+
| id | tinyint(3) unsigned zerofill | YES | | NULL | |
+-------+------------------------------+------+-----+---------+-------+
1 row in set (0.00 sec)
****测试01:测试插入范围0~255的正整数和超过255的整数
mysql> INSERT INTO test2 values(0); #插入数值0,正常(没有超过范围)
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO test2 values(255); #插入数值255,正常(没有超过范围)
Query OK, 1 row affected (0.08 sec)
mysql> INSERT INTO test2 values(256); #插入数值256,错误(超过范围)
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> select * from test2;
+------+
| id |
+------+
| 000 |
| 255 |
+------+
2 rows in set (0.00 sec)
***测试02:测试插入-1~-128范围的负整数
mysql> INSERT INTO test2 values(-1); #插入负整数-1,报错
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> INSERT INTO test2 values(-128); #插入负整数-128,报错
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> INSERT INTO test2 values(-129); #插入负整数-129,报错
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> select * from test2;
+------+
| id |
+------+
| 000 |
| 255 |
+------+
2 rows in set (0.00 sec)
1.2.4 不加unsigned和zerofill参数
##创建test3表(不加unsigned和zerofill)
mysql> CREATE TABLE test3(
-> id tinyint(3)
-> );
Query OK, 0 rows affected (0.06 sec)
^==表test3的id字段没有加unsigned和zerofill参数,那么id字段的范围为
-128~127
mysql> desc test3;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id | tinyint(3) | YES | | NULL | 3ea8 |
+-------+------------+------+-----+---------+-------+
1 row in set (0.01 sec)
****测试01:测试插入0~127的正整数和超过127的正整数
mysql> INSERT INTO test3 values(0);
Query OK, 1 row affected (0.05 sec)
mysql> INSERT INTO test3 values(128);
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> select * from test3;
+------+
| id |
+------+
| 0 |
+------+
1 row in set (0.01 sec)
***测试02:测试插入-1~-128的负整和小于-128的负整数
mysql> INSERT INTO test3 values(-1);
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO test3 values(-128);
Query OK, 1 row affected (0.02 sec)
mysql> INSERT INTO test3 values(-129);
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> select * from test3;
+------+
| id |
+------+
| 0 |
| -1 |
| -128 |
+------+
3 rows in set (0.00 sec)
1.3 tinyint总结
格式:
id tinyint(M) [UNSIGNED] [ZEROFILL]
字段名 字段类型(长度) [无符号] [前导填充]
unsigned:
01:tinyint(M)后面加上unsigned参数后,就是无符号(tinyint范围就是0~255)
02:tinyint(M)后面不加上unsigned参数,且不加zerofill参数,就是有符号(tinyint范围就是-128~127)
zerofill:
01:进行前导零填充(插入数值1,表中显示的是001,因为tinyint的长度为3)
02:tinyint(M)加上zerofile后,同时也会把unsigned参数也带上(tinyint的范围是0~255)
- 数据类型之【数值类型】的整数型 tinyint
- 数据类型之【数值类型】的整数型 smallint
- char、varchar、text、ntext、bigint、int、smallint、tinyint和bit的区别及数据库的数据类型
- char、varchar、text、ntext、bigint、int、smallint、tinyint和bit的区别及数据库的数据类型
- mysql的数据类型int、bigint、smallint 和 tinyint及id 类型变换
- mysql数据类型-数值型
- python 数据类型之数值型
- java 各数据类型数值范围
- 转 SQL server数据库数据类型tinyint,smallint,int和bigint的区别
- numpy判断数值类型、过滤出数值型数据的方法
- 数值数据类型
- mysql的数据类型int、bigint、smallint 和 tinyint取值范围
- SQL Server数据类型int、bigint、smallint和tinyint范围简析
- MySQL 的数值数据类型
- SQL server数据类型int、bigint、smallint、tinyint
- numpy判断数值类型、过滤出数值型数据
- vb.net 教程 1-6 数据类型:数值数据转换2
- 数据类型int、bigint、smallint 和 tinyint范围(sqlserver)
- 关于MySQL的TinyInt数据类型在Delphi中作为Boolean类型的一个要注意的问题
- 关于freemarker获取后台数值类型数据到前台出现逗号