數據類型之【數值類型】的整數型 int

目錄

1.1 int說明

1.2 int實踐

  1.2.1 環境準備

  1.2.2 加UNSIGNED參數

  1.2.3 加ZEROFILL參數

  1.2.4 不加UNSIGNED和ZEROFILL參數

1.3 int總結

1.1 int說明

2.png

id       int(M)       [UNSIGNED] [ZEROFILL]

字段名 字段類型(長度) [無符號]   [前導填充]


unsigned

01:int(M)後面加上unsigned,就是無符號(int的範圍就是0~4294967295)

02:int(M)後面不加上unsigned,並且不加ZEROFILL參數,就是有符號(int的範圍就是

-2147483648~2147483647)


zerofill

01:進行前導零填充

02:int(M)加上zerofile後,同時也會把unsigned參數也帶上(int範圍0~4294967295)

1.2 int實踐

1.2.1 環境準備

##創建chenliang

mysql> create database if not exists chenliang;

Query OK, 1 row affected (0.03 sec)


mysql> show databases like "chenliang";

+----------------------+

| 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 int(10) unsigned

-> );

Query OK, 0 rows affected (0.02 sec)


mysql> desc test1;

+-------+------------------+------+-----+---------+-------+

| Field | Type             | Null | Key | Default | Extra |

+-------+------------------+------+-----+---------+-------+

| id    | int(10) unsigned | YES  |     | NULL    |       |

+-------+------------------+------+-----+---------+-------+

1 row in set (0.01 sec)


**測試01:測試插入範圍0~4294967295的整數以及超過4294967295的整數

mysql> insert into test1 values(0);

Query OK, 1 row affected (0.05 sec)

<=插入整數0,正確(沒有超過範圍0~4294967295)


mysql> insert into test1 values(4294967295);

Query OK, 1 row affected (0.01 sec)

<=插入數值4294967295,正確(沒有超過範圍0~4294967295)


mysql> insert into test1 values(4294967296);

ERROR 1264 (22003): Out of range value for column 'id' at row 1

<=插入數值4294967296,錯誤(超出範圍0~4294967295)


mysql> select * from test1;

+------------+

| id         |

+------------+

| 0          |

| 4294967295 |

+------------+

2 rows in set (0.00 sec)


**測試02:測試-1~-2147483648範圍的數據是否能夠正常插入

mysql> insert into test1 values(-1);

ERROR 1264 (22003): Out of range value for column 'id' at row 1

<=插入負數報錯(因爲建表時,id字段加了unsigned參數,int的範圍爲0~4294967295)


mysql> insert into test1 values(-2147483648);

ERROR 1264 (22003): Out of range value for column 'id' at row 1

^==插入負數報錯(因爲建表時,在id字段加了unsigned參數,int的範圍爲0~4294967295)


mysql> select * from test1;

+------------+

| id         |

+------------+

| 0          |

| 4294967295 |

+------------+

2 rows in set (0.00 sec)

1.2.3 加ZEROFILL參數

##創建test2表,(這裏指定了zerofill,也就是前導零填充

mysql> create table if not exists test2(

-> id int(10) zerofill

-> );

Query OK, 0 rows affected (0.03 sec)


mysql> desc test2;

+-------+---------------------------+------+-----+---------+-------+

| Field | Type                      | Null | Key | Default | Extra |

+-------+---------------------------+------+-----+---------+-------+

| id    | int(10) unsigned zerofill | YES  |     | NULL    |       |

+-------+---------------------------+------+-----+---------+-------+

1 row in set (0.03 sec)

<=只指定unsigned,不會有zerofill

<=只指定zerofill時,會帶上unsigned


**測試01:測試插入範圍0~4294967295的整數和超過4294967295的整數

mysql> insert into test2 values(0);

Query OK, 1 row affected (0.04 sec)

<=插入整數0,在0~4294967295範圍內,正確


mysql> insert into test2 values(4294967295);

Query OK, 1 row affected (0.02 sec)

<=插入整數4294967295,在0~4294967295範圍內,正確


mysql> insert into test2 values(4294967296);

ERROR 1264 (22003): Out of range value for column 'id' at row 1

<=插入整數4294967296,不在0~4294967295範圍內,錯誤


mysql> select * from test2;

+------------+

| id         |

+------------+

| 0000000000 |

| 4294967295 |

+------------+

2 rows in set (0.02 sec)


**測試02:測試-1~-2147483648圍的數據是否能夠正常插入

mysql> insert into test2 values(-1);

ERROR 1264 (22003): Out of range value for column 'id' at row 1

<=插入負整數-1,錯誤(因爲在id字段加了zerofill參數,它會把unsigned也帶上,所以

id字段的範圍爲0~4294967295)


mysql> insert into test2 values(-2147483648);

ERROR 1264 (22003): Out of range value for column 'id' at row 1

<=插入負整數-2147483648,錯誤(因爲在id字段加了zerofill參數,它會把unsigned也帶

上,所以id字段的範圍爲0~4294967295)


mysql> select * from test2;

+------------+

| id         |

+------------+

| 0000000000 |

| 4294967295 |

+------------+

2 rows in set (0.03 sec)

1.2.4 不加UNSIGNED和ZEROFILL參數

##創建test3表(不加unsigned和zerofill

mysql> create table if not exists test3(

-> id int(10)

-> );

Query OK, 0 rows affected (0.02 sec)


mysql> desc test3;

+-------+---------+------+-----+---------+-------+

| Field | Type    | Null | Key | Default | Extra |

+-------+---------+------+-----+---------+-------+

| id    | int(10) | YES  |     | NULL    |       |

+-------+---------+------+-----+---------+-------+

1 row in set (0.00 sec)1 row in set (0.01 sec)


**測試01:測試插入整數0~4294967295和超過4294967295的整數

mysql> insert into test3 values(0);

Query OK, 1 row affected (0.00 sec)

<=插入整數0,正確(在範圍-2147483648~2147483647範圍內)


mysql> insert into test3 values(2147483647);

Query OK, 1 row affected (0.02 sec)

<=插入整數2147483647,正確(在範圍-2147483648~2147483647範圍內)


mysql> insert into test3 values(2147483648);

ERROR 1264 (22003): Out of range value for column 'id' at row 1

<=插入整數2147483648,錯誤(不在範圍-2147483648~2147483647範圍內)


mysql> select * from test3;

+------------+

| id         |

+------------+

| 0          |

| 2147483647 |

+------------+

2 rows in set (0.00 sec)


**測試02:測試插入負數-1~-2147483648和小於--2147483648的負數

mysql> INSERT INTO test3 values(-1);

Query OK, 1 row affected (0.10 sec)

<=插入負整數-1,正確(在範圍-2147483648~2147483647範圍內)

 

mysql> insert into test3 values(-2147483648);

Query OK, 1 row affected (0.00 sec)

<=插入負整數-2147483648,正確(在範圍-2147483648~2147483647範圍內)


mysql> insert into test3 values(-2147483649);

ERROR 1264 (22003): Out of range value for column 'id' at row 1

<=插入負整數-2147483649,錯誤(不在範圍-2147483648~2147483647範圍內)


mysql> select * from test3;

+-------------+

| id          |

+-------------+

| 0           |

| 2147483647  |

| -1          |

| -2147483648 |

+-------------+

4 rows in set (0.00 sec)

1.3 int總結

格式:

id      int(M)       [UNSIGNED] [ZEROFILL]

字段名 字段類型(長度) [無符號]  [前導填充]


unsigned

01:int(M)後面加上unsigned後,就是無符號(int的範圍就是0~4294967295)

02:int(M)後面不加上unsigned,並且不加zerofill參數,就是有符號(int的範圍就

是-2147483648~2147483647)


zerofill

01:進行前導零填充(插入數值1,字段顯示的是0000000001,因爲int的長度爲10)

02:int(M)加上zerofile後,同時也會把unsigned參數也帶上(int的範圍爲0~4294967295)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章