tft每日頭條

 > 生活

 > int代表多少字符

int代表多少字符

生活 更新时间:2024-07-31 22:19:59

在 mysql 數據庫的使用中,我們常常指定數據庫表的字段的類型為整型int和可變字符串varchar,如下面一段 ddl (Data Definition Language)語法:

CREATE TABLE `test` ( `id` bigint NOT NULL AUTO_INCREMENT, `age` int(5) DEFAULT NULL, `age1` int DEFAULT NULL, `name` varchar(5) DEFAULT NULL, `name1` varchar(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

varchar(n)

針對varchar(n)很多人都知道,n是指字符串長度,我們先實驗一下:

INSERT INTO `test`(`age`, `age1`, `name`, `name1`) VALUES (12345, 12345, 'ganhuojun', 'ganhuojun');

運行結果如下:

1406 - Data too long for column 'name' at row 1, Time: 0.001000s

可見數據長度過大,varchar(5)隻能允許5個字符長度,修改下 sql 語句:

INSERT INTO `test`(`age`, `age1`, `name`, `name1`) VALUES (12345, 12345, 'ganhu', 'ganhuojun');

運行結果如下,說明降低了 name 字段的長度到5是可以成功存儲的

Affected rows: 1, Time: 0.001000s

驗證了varchar(n)中的n确實是指字符串長度

int(n)

在mysql數據庫中,int占四個字節,一個字節 8 位,也就是 4 * 8 = 32,即2^32個數字。

那int(n)當中的n會不會和varchar(n)含義一樣,下面将age字段輸入123456來執行一下:

INSERT INTO `test`(`age`, `age1`, `name`, `name1`) VALUES (123456, 123456, 'ganhu', 'ganhuojun');

執行結果如下,發現竟然成功了,說明與varchar(n)含義不一樣,并非限制數據長度。

Affected rows: 1, Time: 0.001000s

那麼這個int(n)中的n到底是什麼含義呢?

int(n) 中的n其實是指最大顯示寬度,最大有效顯示寬度是 255,且顯示寬度與存儲大小或類型包含的值的範圍無關。

下面我們來驗證一下,為了直觀顯示,使用ZEROFILL關鍵字,ZEROFILL的作用是插入數據時,當該字段的值的長度小于定義的長度時,會在該值的前面補上相應的0,重新定義一張表:

CREATE TABLE `test1` ( `id` bigint NOT NULL AUTO_INCREMENT, `age` int(5) ZEROFILL DEFAULT NULL, `age1` int ZEROFILL DEFAULT NULL, `name` varchar(5) DEFAULT NULL, `name1` varchar(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

此時,我們插入2組數據對比下結果:

INSERT INTO `test1`(`age`, `age1`, `name`, `name1`) VALUES (1, 123456, 'ganhu', 'ganhuojun'); INSERT INTO `test1`(`age`, `age1`, `name`, `name1`) VALUES (123456, 123456, 'ganhu', 'ganhuojun');

執行後結果如下圖,看到1由于隻有1個寬度,前面補充來4個0,達到了5位,而123456已經是6位了,顯示正常。

int代表多少字符(你真的了解intn當中n的含義嗎)1

此處驗證了插入數據寬度小于定義n時,前面會用0補全,當超過定義的寬度n時,也能正常顯示;注意int(n)并不會限制實際int的存儲大小,依舊可以存4個字節的數據。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved