色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

MySQL保存后int長度變10

榮姿康2年前9瀏覽0評論

最近在使用MySQL時,發現了一個奇怪的問題:在保存INT類型的數據后,長度從原本的10變成了11。我們可以通過以下方法來驗證這個問題。

CREATE TABLE test (id INT(10) NOT NULL);
INSERT INTO test VALUES (9999999999);

在執行完以上代碼后,我們可以通過以下代碼查看table的結構。

DESCRIBE test;

輸出結果如下:

+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | NO   |     | NULL    |       |
+-------+---------+------+-----+---------+-------+

可以看到,之前設置的INT(10)變成了INT(11)。

這是因為在MySQL中,INT類型的長度指的是顯示寬度,也就是數據在顯示時占用的字符數。實際上,INT類型只有以下幾種長度:TINYINT(1 byte),SMALLINT(2 bytes),MEDIUMINT(3 bytes),INT(4 bytes),BIGINT(8 bytes)。而在我們的例子中,數字9999999999需要11個字符才能將其顯示完整,所以MySQL將其長度調整為11。

我們可以通過以下代碼驗證這一點:

CREATE TABLE test (id INT(1) NOT NULL);
INSERT INTO test VALUES (9999999999);

再次執行以上代碼,我們可以再次通過以下代碼查看table的結構。

DESCRIBE test;

此時輸出結果如下:

+-------+-----------+------+-----+---------+-------+
| Field | Type      | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| id    | tinyint(4) | NO   |     | NULL    |       |
+-------+-----------+------+-----+---------+-------+

可以看到,雖然之前設置的是INT(1),但MySQL自動將其調整為了TINYINT(4)。

所以,在使用MySQL時,我們需要注意長度的含義,以避免在保存數據時出現錯誤。