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


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

15.1.20.7 靜默欄位規格變更

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

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

  • 屬於 PRIMARY KEY 的欄位,即使未宣告為 NOT NULL,也會被設為 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 節「壓縮表格特性」