文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  靜默欄位規格變更

15.1.20.7 靜默欄位規格變更

在某些情況下,MySQL 會靜默地變更 CREATE TABLEALTER TABLE 陳述式中給定的欄位規格。這些變更可能是資料類型、與資料類型關聯的屬性或索引規格的變更。

所有變更都受限於 65,535 位元組的內部列大小限制,這可能會導致某些嘗試變更資料類型的操作失敗。請參閱 第 10.4.7 節,「資料表欄位計數和列大小的限制」

  • 屬於 PRIMARY KEY 的欄位會設為 NOT NULL,即使沒有這樣宣告。

  • 建立表格時,系統會自動刪除 ENUMSET 成員值中的尾隨空格。

  • MySQL 會將其他 SQL 資料庫供應商使用的某些資料類型對應到 MySQL 的類型。請參閱第 13.9 節,「使用其他資料庫引擎的資料類型」

  • 如果您包含 USING 子句來指定特定儲存引擎不允許的索引類型,但有另一種引擎可用的索引類型,且不會影響查詢結果,則引擎會使用可用的類型。

  • 如果未啟用嚴格 SQL 模式,長度規格大於 65535 的 VARCHAR 資料行會轉換為 TEXT,而長度規格大於 65535 的 VARBINARY 資料行會轉換為 BLOB。否則,在這些情況下會發生錯誤。

  • 為字元資料類型指定 CHARACTER SET binary 屬性會導致將該資料行建立為對應的二進位資料類型:CHAR 變成 BINARYVARCHAR 變成 VARBINARY,而 TEXT 變成 BLOB。對於 ENUMSET 資料類型,則不會發生這種情況;它們會按照宣告的方式建立。假設您使用以下定義指定表格

    CREATE TABLE t
    (
      c1 VARCHAR(10) CHARACTER SET binary,
      c2 TEXT CHARACTER SET binary,
      c3 ENUM('a','b','c') CHARACTER SET binary
    );

    產生的表格具有以下定義

    CREATE TABLE t
    (
      c1 VARBINARY(10),
      c2 BLOB,
      c3 ENUM('a','b','c') CHARACTER SET binary
    );

若要查看 MySQL 是否使用了您指定的資料類型以外的類型,請在建立或變更表格後,發出 DESCRIBESHOW CREATE TABLE 陳述式。

如果您使用 myisampack 壓縮表格,則可能會發生某些其他資料類型變更。請參閱第 18.2.3.3 節,「壓縮表格的特性」