文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
手冊頁 (TGZ) - 258.2Kb
手冊頁 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  數值型別屬性

13.1.6 數值型別屬性

MySQL 支援一個擴充功能,可以選擇性地在型別的基本關鍵字之後,以括號指定整數資料型別的顯示寬度。例如,INT(4) 指定一個顯示寬度為四位數的 INT。應用程式可以使用這個選擇性的顯示寬度,以空格在左側填補寬度小於欄位指定寬度的整數值。(也就是說,這個寬度存在於隨著結果集傳回的中繼資料中。是否使用取決於應用程式。)

顯示寬度會限制可以儲存在欄位中的值的範圍。也不會阻止寬度超出欄位顯示寬度的值正確顯示。例如,指定為 SMALLINT(3) 的欄位具有 SMALLINT 的通常範圍 -3276832767,而超出三位數所允許範圍的值會以超過三位數的完整方式顯示。

當與選擇性(非標準)的 ZEROFILL 屬性結合使用時,預設的空格填補會被零取代。例如,對於宣告為 INT(4) ZEROFILL 的欄位,值 5 會擷取為 0005

注意

對於涉及運算式或 UNION 查詢的欄位,會忽略 ZEROFILL 屬性。

如果您在具有 ZEROFILL 屬性的整數欄位中儲存大於顯示寬度的值,當 MySQL 為某些複雜的聯結產生暫存資料表時,您可能會遇到問題。在這些情況下,MySQL 會假設資料值符合欄位顯示寬度。

對於數值資料型別,ZEROFILL 屬性已被棄用,整數資料型別的顯示寬度屬性也是如此。您應該預期在未來版本的 MySQL 中會移除對 ZEROFILL 和整數資料型別顯示寬度的支援。請考慮使用替代方法來產生這些屬性的效果。例如,應用程式可以使用 LPAD() 函數將數字以零填補到所需的寬度,或者他們可以將格式化的數字儲存在 CHAR 欄位中。

所有整數型別都可以具有選擇性(非標準)的 UNSIGNED 屬性。可以使用無符號型別,以僅允許在欄位中使用非負數,或者當您需要欄位較大的數值上限範圍時。例如,如果 INT 欄位是 UNSIGNED,則欄位範圍的大小相同,但其端點會向上移動,從 -2147483648214748364704294967295

浮點和定點型別也可以是 UNSIGNED。與整數型別一樣,此屬性可防止將負值儲存在欄位中。與整數型別不同,欄位值的上限範圍保持不變。對於 FLOATDOUBLEDECIMAL 型別(以及任何同義詞)的欄位,UNSIGNED 已被棄用,您應該預期在未來版本的 MySQL 中會移除對它的支援。請考慮改為對此類欄位使用簡單的 CHECK 條件約束。

如果您為數值欄位指定 ZEROFILL,MySQL 會自動新增 UNSIGNED 屬性。

整數或浮點資料型別可以具有 AUTO_INCREMENT 屬性。當您將 NULL 值插入索引的 AUTO_INCREMENT 欄位時,該欄位會設定為下一個序列值。通常這是 +1,其中 是資料表中目前欄位的最大值。(AUTO_INCREMENT 序列從 1 開始。)

0 儲存到 AUTO_INCREMENT 欄位具有與儲存 NULL 相同的效果,除非啟用 NO_AUTO_VALUE_ON_ZERO SQL 模式。

插入 NULL 以產生 AUTO_INCREMENT 值需要將欄位宣告為 NOT NULL。如果欄位宣告為 NULL,插入 NULL 會儲存 NULL。當您將任何其他值插入 AUTO_INCREMENT 欄位時,該欄位會設定為該值,並且會重設序列,以便下一個自動產生值按順序從插入的值開始。

不支援 AUTO_INCREMENT 欄位的負值。

CHECK 條件約束不能參考具有 AUTO_INCREMENT 屬性的欄位,也不能將 AUTO_INCREMENT 屬性新增到 CHECK 條件約束中使用的現有欄位。

對於 FLOATDOUBLE 欄位,AUTO_INCREMENT 已被棄用;您應該預期在未來版本的 MySQL 中會移除對它的支援。請考慮從這類欄位中移除 AUTO_INCREMENT 屬性以避免潛在的相容性問題,或將它們轉換為整數型別。