mysql中tinyint、smallint、int和bigint型別的用法區別
mysql中tinyint、smallint、int和bigint型別的用法區別:
在MySQL的資料型別中,Tinyint的取值範圍是:帶符號的範圍是-128到127。無符號的範圍是0到255(見官方《MySQL 5.1參考手冊》
Tinyint佔用1位元組的儲存空間,即8位(bit)。那麼Tinyint的取值範圍怎麼來的呢?我們先看無符號的情況。無符號的最小值即全部8位(bit)都為0,換算成十進位制就是0,所以無符號的Tinyint的最小值為0.無符號的最大值即全部8bit都為1,11111111,換算成十進位制就是255.這很好理解。
有符號的Tinyint的取值範圍是怎麼來的呢?在計算機中,用最高位表示符號。0表示正,1表示負,剩下的表示數值。那麼有符號的8bit的最小值就是
11111111=-127
表示負值
最大值:
01111111=+127
表示正值
怎麼有符號的最小值是-127,而不是-128呢?這就是本文要說的關鍵地方了,在計算機中,表示負值是用補碼(正碼、反碼、補碼的概念見 http://indian.blog.163.com/blog/static/1088158200610942745817/)
為什麼有符號的TINYINT的最小值是-128?雖然“-0”也是“0”,但根據正、反、補碼體系,“-0”的補碼和“+0”是不同的,這樣就出現兩個補碼代表一個數值的情況。為了將補碼與數字一一對應,所以人為規定“0”一律用“+0”代表。同時為了充分利用資源,就將原來本應該表示“-0”的補碼規定為代表-128。
使用整數資料的精確數字資料型別。
bigint
從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型資料(所有數字)。儲存大小為 8 個位元組。
int
從 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型資料(所有數字)。儲存大小為 4 個位元組。int 的 SQL-92 同義字為 integer。
smallint
從 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型資料。儲存大小為 2 個位元組。
tinyint
從 0 到 255 的整型資料。儲存大小為 1 位元組。
說明:
在支援整數值的地方支援 bigint 資料型別。但是,bigint 用於某些特殊的情況,當整數值超過 int 資料型別支援的範圍時,就可以採用 bigint。在 SQL Server 中,int 資料型別是主要的整數資料型別。
在資料型別優先次序表中,bigint 位於 smallmoney 和 int 之間。
只有當參數列達式是 bigint 資料型別時,函式才返回 bigint。SQL Server 不會自動將其它整數資料型別(tinyint、smallint 和 int)提升為 bigint。
在MySQL的資料型別中,Tinyint的取值範圍是:帶符號的範圍是-128到127。無符號的範圍是0到255(見官方《MySQL 5.1參考手冊》
Tinyint佔用1位元組的儲存空間,即8位(bit)。那麼Tinyint的取值範圍怎麼來的呢?我們先看無符號的情況。無符號的最小值即全部8位(bit)都為0,換算成十進位制就是0,所以無符號的Tinyint的最小值為0.無符號的最大值即全部8bit都為1,11111111,換算成十進位制就是255.這很好理解。
有符號的Tinyint的取值範圍是怎麼來的呢?在計算機中,用最高位表示符號。0表示正,1表示負,剩下的表示數值。那麼有符號的8bit的最小值就是
11111111=-127
表示負值
最大值:
01111111=+127
表示正值
怎麼有符號的最小值是-127,而不是-128呢?這就是本文要說的關鍵地方了,在計算機中,表示負值是用補碼(正碼、反碼、補碼的概念見 http://indian.blog.163.com/blog/static/1088158200610942745817/)
為什麼有符號的TINYINT的最小值是-128?雖然“-0”也是“0”,但根據正、反、補碼體系,“-0”的補碼和“+0”是不同的,這樣就出現兩個補碼代表一個數值的情況。為了將補碼與數字一一對應,所以人為規定“0”一律用“+0”代表。同時為了充分利用資源,就將原來本應該表示“-0”的補碼規定為代表-128。
使用整數資料的精確數字資料型別。
bigint
從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型資料(所有數字)。儲存大小為 8 個位元組。
int
從 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型資料(所有數字)。儲存大小為 4 個位元組。int 的 SQL-92 同義字為 integer。
smallint
從 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型資料。儲存大小為 2 個位元組。
tinyint
從 0 到 255 的整型資料。儲存大小為 1 位元組。
說明:
在支援整數值的地方支援 bigint 資料型別。但是,bigint 用於某些特殊的情況,當整數值超過 int 資料型別支援的範圍時,就可以採用 bigint。在 SQL Server 中,int 資料型別是主要的整數資料型別。
在資料型別優先次序表中,bigint 位於 smallmoney 和 int 之間。
只有當參數列達式是 bigint 資料型別時,函式才返回 bigint。SQL Server 不會自動將其它整數資料型別(tinyint、smallint 和 int)提升為 bigint。
相關文章
- mysql中int、bigint、smallint 和 tinyint的區別與長度的含義MySql
- MySQL 五種整型資料型別的範圍與區別 tinyint smallint mediumint int bigintMySql資料型別
- SQL SERVER數值型別int、bigint、smallint 和 tinyint範圍SQLServer型別
- mysql中bigint、int、mediumint、smallint 和 tinyint的取值範圍MySql
- 關於mysql中欄位定義的型別int、tinyint區別MySql型別
- Mysql中tinyint(1)和tinyint(4)的區別詳析WIFRMySql
- Mysql中 int(10)和int(11)的區別MySql
- MySQL 修改int型別為bigint SQL語句拼接MySql型別
- mysql bigint型別和datetime型別的轉換MySql型別
- 強制型別轉換(int)、(int&)和(int*)的區別型別
- extern int a 和int a的區別
- MySQL 中 int (10) 和 int (11) 到底有什麼區別?MySql
- TKMySQL中int?(10)?和?int?(11)?的區別zceMySql
- PHP中MySQL、MySQLi和PDO的用法和區別PHPMySql
- MySQL數字型別int與tinyint、float與decimal如何選擇MySql型別Decimal
- int和Integer的區別
- mysql 中資料型別tinyint(2)括號中的數字意思MySql資料型別
- SQLserver-MySQL的區別和用法ServerMySql
- (int)a、&a、(int)&a、(int&)a的區別
- MYSQL INNODB主鍵使用varchar和int的區別MySql
- JS中的!=、== 、!==、=== 的用法和區別JS
- JS中的!=、== 、!==、===的用法和區別。JS
- int[] 、 list<int> 、 list<int>[] 的區別
- mysql中!=和is not的區別MySql
- mysql中“ ‘ “和 “ ` “的區別MySql
- js中!和!!的區別與用法JS
- SQL中IN和EXISTS用法的區別SQL
- MySQL裡 沒有 boolean型別 怎麼辦?MySQL 裡的 tinyint(1)MySqlBoolean型別
- MySQL資料庫int型別的那些事MySql資料庫型別
- JQuery中html()和val()的用法區別jQueryHTML
- MySQL中TEXT與BLOB欄位型別的區別MySql型別
- int型別和long long型別運算執行時間的差別型別
- NTMySQL中varchar和char型別的區別heeMySql型別
- 型別轉換(int 和 String)型別
- 【MySQL】資料型別的基本用法MySql資料型別
- 測試Java中的long,int基本型別Java型別
- Mysql 中 MyISAM 和 InnoDB 的區別MySql
- mysql 中set和enum的區別MySql