亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mysql中整數(shù)數(shù)據(jù)類型tinyint詳解

 更新時間:2021年12月03日 15:16:58   作者:阿 亮  
大家好,本篇文章主要講的是mysql中整數(shù)數(shù)據(jù)類型tinyint詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

1.1 tinyint類型說明

數(shù)據(jù)類型 顯示長度 占用字節(jié) 有符號 無符號
tinyint 加上unsigned/zerofill:3
不加unsigned/zerofill:4
1(8bit) -128至127 0至255
#### 格式
id       tinyint(M)                 [unsigned]     [zerofill]
字段名  數(shù)據(jù)類型(顯示長度,不指定指定)     無符號          無符號且前導零填充

#### 關于tinyint最大數(shù)值是怎樣得來的
tinyint占用1字節(jié),1字節(jié)占用8位,經(jīng)過換算(2的8次方減1)就是255;

#### 關于加上unsigned后的說明
加上unsigned屬性后就是無符號(范圍是0~255的整數(shù),因為是整數(shù),不會有符號"-",所以就是無符號)

#### 關于加上zerofill后的說明
zerofill屬性會把unsigned屬性也給帶上,這樣就是無符號(范圍是0~255,顯示長度就是3),同時還會
進行前導零填充(沒有達到顯示長度的數(shù)值,例如:你插入1,顯示的是001)。

#### 不加unsigned和zerofill的說明
字段后面不加上這兩個屬性中的任何一個,就表示是有符號(范圍是-128~127,因為有符號"-",所有是有符號)。

1.2 實踐環(huán)境說明

#### 數(shù)據(jù)庫版本和默認的存儲引擎
mysql> select @@version,@@default_storage_engine;
+------------+--------------------------+
| @@version  | @@default_storage_engine |
+------------+--------------------------+
| 5.7.28-log | InnoDB                   |
+------------+--------------------------+
1 row in set (0.00 sec)
 
 
#### 創(chuàng)建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)


#### 查看事務是否自動提交
mysql> select @@global.autocommit;
+---------------------+
| @@global.autocommit |
+---------------------+
|                   1 |
+---------------------+
1 row in set (0.00 sec)

1.3 加unsigned屬性

1.3.1 SQL模式開啟嚴格模式

SQL_MODE中開啟了嚴格模式,即SQL_MODE參數(shù)中包含STRICT_TRANS_TABLES參數(shù)

#### 設置會話模式下的sql_mode中包含strict_trans_tables
mysql> set session sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
Query OK, 0 rows affected (0.00 sec)
 
mysql> select @@sql_mode\G
*************************** 1. row ***************************
@@sql_mode: STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
1 row in set (0.00 sec)


#### 創(chuàng)建test1測試表(這里指定了UNSIGNED,也就是無符號)
mysql> CREATE TABLE IF NOT EXISTS test1(
    ->  id tinyint UNSIGNED
    -> )engine=innodb character set utf8 collate utf8_general_ci;
Query OK, 0 rows affected (0.06 sec)
   
   ## id字段類型是tinyint unsigned,范圍就是0~255,其長度是3;因為255的長度是3;


#### 查看test1表的表結構
mysql> desc test1;
+-------+---------------------+------+-----+---------+-------+
| Field | Type                | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| id    | tinyint(3) unsigned | YES  |     | NULL    |       |
+-------+---------------------+------+-----+---------+-------+
1 row in set (0.03 sec)


#### 測試插入范圍0~255范圍整數(shù)和不在該范圍內的整數(shù)
mysql> insert into test1 values(-1);   # 插入數(shù)值-1,錯誤(不在0~255范圍內)
ERROR 1264 (22003): Out of range value for column 'id' at row 1
 
mysql> insert into test1 values(0);    # 插入數(shù)值0,正常(在0~255范圍內)
Query OK, 1 row affected (0.06 sec)
 
mysql> insert into test1 values(255);  # 插入數(shù)值255,正常(在0~255范圍內)
Query OK, 1 row affected (0.05 sec)
 
mysql> insert into test1 values(256);  # 插入數(shù)值256,錯誤(不在0~255范圍內)
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.3.2 SQL模式未開啟嚴格模式

SQL_MODE未開啟嚴格模式,即SQL_MODE參數(shù)中不包含STRICT_TRANS_TABLES參數(shù)

#### 設置會話模式下sql_mode中不包含strit_trans_tables變量
mysql> set session sql_mode="NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> select @@sql_mode\G
*************************** 1. row ***************************
@@sql_mode: NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
1 row in set (0.00 sec)



#### 創(chuàng)建test11表(這里指定了UNSIGNED,也就是無符號)
mysql> create table if not exists test11(
    -> id tinyint unsigned
    -> )engine=innodb character set utf8 collate utf8_general_ci;
Query OK, 0 rows affected (0.00 sec)
  ## id字段類型是tinyint unsigned,范圍就是0~255,其長度是3;因為255的長度是3;



#### 查看test11表的表結構
mysql> desc test11;
+-------+---------------------+------+-----+---------+-------+
| Field | Type                | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| id    | tinyint(3) unsigned | YES  |     | NULL    |       |
+-------+---------------------+------+-----+---------+-------+
1 row in set (0.00 sec)



#### 測試插入范圍0~255范圍整數(shù)和不在該范圍內的整數(shù)
mysql> insert into test11(id) values(-1);
Query OK, 1 row affected, 1 warning (0.00 sec)
   ## 不在范圍內,插入沒有報錯(因為sql_mode中沒有開啟嚴格模式)
   ## 插入到表中的數(shù)據(jù)不是-1,而是0
 
mysql> insert into test11(id) values(0);
Query OK, 1 row affected (0.01 sec)
    ## 沒報錯,因為在范圍內,插入到表中的也是0
 
mysql> insert into test11(id) values(255);
Query OK, 1 row affected (0.01 sec)
    ## 沒報錯,因為在范圍內,插入到表中的也是255
 
mysql> insert into test11(id) values(256);
Query OK, 1 row affected, 1 warning (0.00 sec)
   ## 不在范圍內,插入沒有報錯(因為sql_mode中沒有開啟嚴格模式)
   ## 插入到表中的數(shù)據(jù)不是256,而是255
  
mysql> select * from test11;
+------+
| id   |
+------+
|    0 |
|    0 |
|  255 |
|  255 |
+------+
4 rows in set (0.00 sec)

1.4 加zerofill屬性

1.4.1 SQL模式開啟嚴格模式

SQL_MODE中開啟了嚴格模式,即SQL_MODE參數(shù)中包含STRICT_TRANS_TABLES參數(shù)

## 設置會話模式下的sql_mode中包含strict_trans_tables
mysql> set session sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
Query OK, 0 rows affected (0.00 sec)
 
mysql> select @@sql_mode\G
*************************** 1. row ***************************
@@sql_mode: STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
1 row in set (0.00 sec)
 
## 創(chuàng)建test2測試表(這里指定了zerofill,會前導零填充,同時還會帶上unsigned)
mysql> CREATE TABLE IF NOT EXISTS test2(
    -> id tinyint zerofill
    -> )engine=innodb character set utf8 collate utf8_general_ci;
Query OK, 0 rows affected (0.01 sec)
     ## id字段類型是tinyint zerofill,范圍就是0~255,其長度是3;因為255的長度是3;

 ## 查看test2表的表結構
mysql> desc test2;
+-------+------------------------------+------+-----+---------+-------+
| Field | Type                         | Null | Key | Default | Extra |
+-------+------------------------------+------+-----+---------+-------+
| id    | tinyint(3) unsigned zerofill | YES  |     | NULL    |       |
+-------+------------------------------+------+-----+---------+-------+
1 row in set (0.00 sec)
 
## 測試插入范圍0~255范圍整數(shù)和不在該范圍內的整數(shù)
mysql> insert into test2 values(-1);   # 插入數(shù)值-1,錯誤(不在0~255范圍內)
ERROR 1264 (22003): Out of range value for column 'id' at row 1
 
mysql> insert into test2 values(0);    # 插入數(shù)值0,正常(在0~255范圍內)
Query OK, 1 row affected (0.06 sec)
 
mysql> insert into test2 values(255);  # 插入數(shù)值255,正常(在0~255范圍內)
Query OK, 1 row affected (0.05 sec)
 
mysql> insert into test2 values(256);  # 插入數(shù)值256,錯誤(不在0~255范圍內)
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.4.2 SQL模式未開啟嚴格模式

SQL_MODE未開啟嚴格模式,即SQL_MODE參數(shù)中不包含STRICT_TRANS_TABLES參數(shù)

## 設置會話模式下sql_mode中不包含strit_trans_tables變量
mysql> set session sql_mode="NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";

Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> select @@sql_mode\G
*************************** 1. row ***************************
@@sql_mode: NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
1 row in set (0.00 sec)

## 創(chuàng)建test22表(這里指定了zerofill,會前導零填充,同時還會帶上unsigned)
mysql> create table if not exists test22(
    -> id tinyint zerofill
    -> )engine=innodb character set utf8 collate utf8_general_ci;
Query OK, 0 rows affected (0.00 sec)
  ## id字段類型是tinyint unsigned,范圍就是0~255,其長度是3;因為255的長度是3;
 
## 查看test22表的表結構
mysql> desc test22;
+-------+------------------------------+------+-----+---------+-------+
| Field | Type                         | Null | Key | Default | Extra |
+-------+------------------------------+------+-----+---------+-------+
| id    | tinyint(3) unsigned zerofill | YES  |     | NULL    |       |
+-------+------------------------------+------+-----+---------+-------+
1 row in set (0.00 sec)
 
## 測試插入范圍0~255范圍整數(shù)和不在該范圍內的整數(shù)
mysql> insert into test22(id) values(-1);
Query OK, 1 row affected, 1 warning (0.00 sec)
  ## 不在范圍,插入沒報錯(因為sql_mode中沒有開啟嚴格模式);
  ## 但到表中的不是-1,而是0,但因為有zerofill參數(shù),所以顯示時會前導零序填充;
 
mysql> insert into test22(id) values(0);
Query OK, 1 row affected (0.01 sec)
  ## 沒報錯,因為在范圍內,插入到表中的也是0
 
mysql> insert into test22(id) values(255);
Query OK, 1 row affected (0.01 sec)
  ## 沒報錯,因為在范圍內,插入到表中的也是255
 
mysql> insert into test22(id) values(256); 
Query OK, 1 row affected, 1 warning (0.00 sec)
  ## 不在范圍,插入沒報錯(sql_mode中沒有開啟嚴格模式)
  ## 但到表中的數(shù)據(jù)不是256,而是255
 
mysql> select * from test22;
+------+
| id   |
+------+
|  000 |
|  000 |
|  255 |
|  255 |
+------+
4 rows in set (0.00 sec)

1.5 不加unsigned和zerofill屬性

1.5.1 SQL模式開啟嚴格模式

SQL_MODE中開啟了嚴格模式,即SQL_MODE參數(shù)中包含STRICT_TRANS_TABLES參數(shù)

## 設置會話模式下的sql_mode中包含strict_trans_tables
mysql> set session sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
Query OK, 0 rows affected (0.00 sec)
 
mysql> select @@sql_mode\G
*************************** 1. row ***************************
@@sql_mode: STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
1 row in set (0.00 sec)
 
## 創(chuàng)建test3表(不加unsigned和zerofill)
mysql> CREATE TABLE test3(
    -> id tinyint
    -> )engine=innodb character set utf8 collate utf8_general_ci;
Query OK, 0 rows affected (0.06 sec)
   ## id字段的類型為tinyint,其范圍是-128至127,其顯示長度是4,因為要顯示符號("-")
 
## 查看test3表的表結構
mysql> desc test3;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id    | tinyint(4) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
1 row in set (0.01 sec)
 
## 測試插入-128~127范圍的整數(shù)和不在該范圍內的整數(shù)
mysql> insert into test3(id) values(-129);  # 插入數(shù)值-129,錯誤,不在范圍內
ERROR 1264 (22003): Out of range value for column 'id' at row 1
 
mysql> insert into test3(id) values(-128);  # 插入數(shù)值-128,正確,在范圍內
Query OK, 1 row affected (0.00 sec)

mysql> insert into test3(id) values(127);   # 插入數(shù)值127,正確,在范圍內
Query OK, 1 row affected (0.01 sec)
 
mysql> insert into test3(id) values(128);   # 插入數(shù)值128,錯誤,不在范圍內
ERROR 1264 (22003): Out of range value for column 'id' at row 1
 
mysql> select * from test3;
+------+
| id   |
+------+
| -128 |
|  127 |
+------+
2 rows in set (0.00 sec)

1.5.2 SQL模式未開啟嚴格模式

SQL_MODE中未開啟嚴格模式,即SQL_MODE參數(shù)中不包含STRICT_TRANS_TABLES參數(shù)

## 設置會話模式下sql_mode中不包含strit_trans_tables變量
mysql> set session sql_mode="NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
Query OK, 0 rows affected, 1 warning (0.00 sec)
 
mysql> select @@sql_mode\G
*************************** 1. row ***************************
@@sql_mode: NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
1 row in set (0.00 sec)
 
## 創(chuàng)建test33表(不加unsigned和zerofill)
mysql> CREATE TABLE test33(
    -> id tinyint
    -> )engine=innodb character set utf8 collate utf8_general_ci;
Query OK, 0 rows affected (0.00 sec)
  ## id字段的類型為tinyint,其范圍是-128至127,其顯示長度是4,因為要顯示符號("-")
 
## 查看test33表的表結構
mysql> desc test33;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id    | tinyint(4) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
1 row in set (0.00 sec)
 

## 測試插入-128~127范圍的整數(shù)和不在該范圍內的整數(shù)
mysql> insert into test33(id) values(-129);
Query OK, 1 row affected, 1 warning (0.00 sec)
  ## 不在范圍內,插入未報錯,因為sql_mode中沒有開啟嚴格模式
  ## 插入到表中的不是-129,而是-128;
 
mysql> insert into test33(id) values(-128);
Query OK, 1 row affected (0.01 sec)
  ## 在范圍內,插入不報錯,插入的是多少就是多少
 
mysql> insert into test33(id) values(127);
Query OK, 1 row affected (0.00 sec)
  ## 在范圍內,插入不報錯,插入的是多少就是多少
 
mysql> insert into test33(id) values(128);
Query OK, 1 row affected, 1 warning (0.01 sec)
  ## 不在范圍內,插入未報錯,因為sql_mode中沒有開啟嚴格模式
  ## 插入到表中的不是128,而是127;
 
mysql> select * from test33;
+------+
| id   |
+------+
| -128 |
| -128 |
|  127 |
|  127 |
+------+
4 rows in set (0.00 sec)

到此這篇關于mysql中整數(shù)數(shù)據(jù)類型tinyint詳解的文章就介紹到這了,更多相關mysql整數(shù)數(shù)據(jù)類型tinyint內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • mysql中event的用法詳解

    mysql中event的用法詳解

    本篇文章是對mysql中event的用法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • 基于Php mysql存儲過程的詳解

    基于Php mysql存儲過程的詳解

    本篇文章是對Php中的mysql存儲過程進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • Windows10下安裝解壓版MySQL教程圖文詳解

    Windows10下安裝解壓版MySQL教程圖文詳解

    MySQL安裝分為安裝版和解壓版,安裝版主要是由一個exe程序式安裝,有界面鼠標點擊安裝即可,這篇文章主要介紹了Windows10下安裝解壓版MySQL教程,需要的朋友可以參考下
    2019-09-09
  • MySQL導出數(shù)據(jù)遇到secure-file-priv問題的解決方法

    MySQL導出數(shù)據(jù)遇到secure-file-priv問題的解決方法

    這篇文章主要為大家詳細介紹了MySQL導出數(shù)據(jù)遇到secure-file-priv問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • MySQL過濾重復數(shù)據(jù)的兩種方法示例

    MySQL過濾重復數(shù)據(jù)的兩種方法示例

    數(shù)據(jù)庫生成環(huán)境中經(jīng)常會遇到表中有重復的數(shù)據(jù),或者進行關聯(lián)過程中產(chǎn)生重復數(shù)據(jù),下面這篇文章主要給大家介紹了關于MySQL過濾重復數(shù)據(jù)的兩種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • MySql中的存儲引擎和索引

    MySql中的存儲引擎和索引

    這篇文章主要介紹了MySql中的存儲引擎和索引,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • Ubuntu系統(tǒng)安裝與配置MySQL

    Ubuntu系統(tǒng)安裝與配置MySQL

    這篇文章介紹了Ubuntu系統(tǒng)安裝與配置MySQL的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • MySQL示例DTID主從原理解析

    MySQL示例DTID主從原理解析

    這篇文章主要介紹了MySQL示例DTID主從原理解析,其實包含了詳細的使用方法說明,有需要的朋友可以借鑒參考下,希望可以有所幫助,感謝閱讀
    2021-09-09
  • MySQL亂碼問題終極指南

    MySQL亂碼問題終極指南

    為了讓大家盡量在工作中少受或者不受亂碼的困擾,這篇文章主要為大家分享了MySQL亂碼問題終極指南,感興趣的小伙伴們可以參考一下
    2016-04-04
  • mysql installer web community 5.7.21.0.msi安裝圖文教程

    mysql installer web community 5.7.21.0.msi安裝圖文教程

    這篇文章主要為大家詳細介紹了mysql installer web community 5.7.21.0.msi,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09

最新評論