萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql中int、bigint、smallint、tinyint區別與長度

mysql中int、bigint、smallint、tinyint區別與長度

最近使用mysql數據庫的時候遇到了多種數字的類型,主要有int,bigint,smallint和tinyint。其中比較迷惑的是int和smallint的差別。今天就在網上仔細找了找,找到如下內容,留檔做個總結:

使用整數數據的精確數字數據類型。

bigint

從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型數據(所有數字)。存儲大小為 8 個字節。

P.S. bigint已經有長度了,在mysql建表中的length,只是用於顯示的位數

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 字節。-2^7到2^7-1:-128到127

注釋

在支持整數值的地方支持 bigint 數據類型。但是,bigint 用於某些特殊的情況,當整數值超過 int 數據類型支持的范圍時,就可以采用 bigint。在 SQL Server 中,int 數據類型是主要的整數數據類型。

在數據類型優先次序表中,bigint 位於 smallmoney 和 int 之間。

只有當參數表達式是 bigint 數據類型時,函數才返回 bigint。SQL Server 不會自動將其它整數數據類型(tinyint、smallint 和 int)提升為 bigint。

int(M) 在 integer 數據類型中,M 表示最大顯示寬度。在 int(M) 中,M 的值跟 int(M) 所占多少存儲空間並無任何關系。和數字位數也無關系 int(3)、int(4)、int(8) 在磁盤上都是占用 4 btyes 的存儲空間

ps:一個字節(Byte)等於8位(bit)二進制數

Mysql Varchar(500) 放了700個字符

RECORD_CONTENT VARCHAR(500)

文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的13213文字的文字的文字的文字的文字12312312321

什麼字符集?700個漢字?

utf8_general_ci

varchar(n) 長度為 n 個字節的可變長度且非 Unicode 的字符數據。n 必須是一個介於 1 和 8,000 之間的數值。存儲大小為輸入數據的字節的實際長度,而不是 n 個字節。
你出現的那種情況,主要是字符和字節造成的,500個字符,utf8的每個漢字需要3個字節,而用length查看某個字段長度時,是按照字節進行的,原因就在這裡了

哈哈,最新的MYSQL 的 varchar 支持 65535 個字符。
去查MYSQL手冊吧

varchar(300)只是定義顯示結果的邊框的長度,不是變量的長度

copyright © 萬盛學電腦網 all rights reserved