mysql数据类型--[整数类型]--tinyint类型

tinyint类型说明

类   型:tinyint
长   度:3
占用字节:1字节
有 符 号:-128~127
无 符 号:0~255
不指定长度时的长度为:4(实际长度还是3)

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)

实践环境准备

-- 创建chenliang库,字符集为utf8
mysql> create database if not exists chenliang character set utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.01 sec)

mysql> show databases like "chenliang";
+----------------------+
| Database (chenliang) |
+----------------------+
| chenliang            |
+----------------------+
1 row in set (0.00 sec)

-- 进入chenliang库,并查看是否成功进入到了chenliang库
mysql> use chenliang;
Database changed

mysql> select database();
+------------+
| database() |
+------------+
| chenliang  |
+------------+
1 row in set (0.00 sec)

测试1【加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)

测试2【加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)

测试3【不加zerofill和unsigned参数】

-- 创建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    |       |
+-------+------------+------+-----+---------+-------+
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(127);
Query OK, 1 row affected (0.00 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 |
|  127 |
+------+
2 rows in set (0.00 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|
|   127|
|    -1|
|  -128|
+------+
4 rows in set (0.00 sec)

总结

格式:

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)

转载于:https://www.cnblogs.com/chenliangc/articles/11107091.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值