最近使用mysql數(shù)據(jù)庫的時候遇到了多種數(shù)字的類型,主要有int,bigint,smallint和tinyint,其中比較迷惑的是int和smallint的差別,今天就在網(wǎng)上仔細找了找,找到如下內(nèi)容,留檔做個總結.
使用整數(shù)數(shù)據(jù)的精確數(shù)字數(shù)據(jù)類型.
bigint:從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型數(shù)據(jù)(所有數(shù)字)。存儲大小為 8 個字節(jié)。
P.S.bigint已經(jīng)有長度了,在mysql建表中的length,只是用于顯示的位數(shù)
int:從 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型數(shù)據(jù)(所有數(shù)字)。存儲大小為 4 個字節(jié)。int 的 SQL-92 同義字為 integer。
smallint:從 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型數(shù)據(jù)。存儲大小為 2 個字節(jié)。
tinyint:從 0 到 255 的整型數(shù)據(jù),存儲大小為 1 字節(jié)。-2^7到2^7-1:-128到127
注釋:在支持整數(shù)值的地方支持 bigint 數(shù)據(jù)類型。但是,bigint 用于某些特殊的情況,當整數(shù)值超過 int 數(shù)據(jù)類型支持的范圍時,就可以采用 bigint。在 SQL Server 中,int 數(shù)據(jù)類型是主要的整數(shù)數(shù)據(jù)類型。
在數(shù)據(jù)類型優(yōu)先次序表中,bigint 位于 smallmoney 和 int 之間。
只有當參數(shù)表達式是 bigint 數(shù)據(jù)類型時,函數(shù)才返回 bigint。SQL Server 不會自動將其它整數(shù)數(shù)據(jù)類型(tinyint、smallint 和 int)提升為 bigint。
int(M) 在 integer 數(shù)據(jù)類型中,M 表示最大顯示寬度,在 int(M) 中,M 的值跟 int(M) 所占多少存儲空間并無任何關系,和數(shù)字位數(shù)也無關系 int(3)、int(4)、int(8) 在磁盤上都是占用 4 btyes 的存儲空間.
ps:一個字節(jié)(Byte)等于8位(bit)二進制數(shù)
Mysql Varchar(500) 放了700個字符
RECORD_CONTENT VARCHAR(500)
文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的文字的13213文字的文字的文字的文字的文字12312312321
什么字符集?700個漢字?
utf8_general_ci:varchar(n) 長度為 n 個字節(jié)的可變長度且非 Unicode 的字符數(shù)據(jù)。n 必須是一個介于 1 和 8,000 之間的數(shù)值。存儲大小為輸入數(shù)據(jù)的字節(jié)的實際長度,而不是 n 個字節(jié)。
你出現(xiàn)的那種情況,主要是字符和字節(jié)造成的,500個字符,utf8的每個漢字需要3個字節(jié),而用length查看某個字段長度時,是按照字節(jié)進行的,原因就在這里了
最新的MYSQL 的 varchar 支持 65535 個字符,去查MYSQL手冊吧,varchar(300)只是定義顯示結果的邊框的長度,不是變量的長度.
新聞熱點
疑難解答
圖片精選