MYSQlでenumタイプ

5700 ワード

MYSQLにおけるENUMタイプの詳細な説明ENUMタイプENUMは文字列オブジェクトであり、その値は通常、テーブル作成時のカラム仕様説明に明確に列挙された許容値リストから選択される.
次の場合、値は空白列("")またはNULLであってもよい.
  • 無効な値をENUM(すなわち、許容値リストにない文字列)に挿入すると、空の文字列が特殊なエラー値として挿入されます.実際、この文字列は「通常」の空の文字列とは異なり、この文字列には数値インデックス値が0であるためです.詳細は後述する.
  • ENUMNULLNULLとして宣言された場合、カラムのデフォルト値もNULLとなります.ENUMNOT NULLとして宣言された場合、カラムのデフォルト値はリストで許可されている値の最初のメンバーになります.

  • 列挙値ごとにインデックス値があります.
  • 列の説明において、リスト値によって許可されるメンバー値は、1から番号付けされる.
  • 空の文字列エラー値のインデックス値は0です.これは、以下に示すSELECT文を使用して、無効なENUM値に割り当てられたレコード行を見つけることができることを意味します.
    mysql> SELECT * FROM tbl_name WHERE enum_col=0;
  • NULL値のインデックス値はNULLです.

  • たとえば、ENUM("one", "two", "three")として指定されたカラムには、以下に示すいずれかの値があります.各値のインデックス値も次のようになります.

    インデックス値NULL NULL ""
    0 "one"
    1 "two"
    2 "three"
    3
    置換列挙には、最大65535個のメンバー値があります.
    MySQL 3.23.51から、テーブルが作成されると、ENUMの値の末尾のスペースが自動的に削除されます.ENUM列に値を割り当てる場合、アルファベットの大文字と小文字は重要ではありません.ただし、後でカラムから取得した値の大文字と小文字は、テーブルの作成時に指定した許容値に一致します.
    1つのデジタル文脈でENUMが取得されると、カラム値のインデックス値が返されます.たとえば、このように数値値を使用してENUM列を取得できます.
    mysql> SELECT enum_col+0 FROM tbl_name;

    1つの数字がENUMに格納される場合、数字はインデックス値として扱われ、格納された値はインデックス値に対応する列挙メンバーである.(ただし、すべての入力が文字列であるため、LOAD DATAでは動作しません.)ENUM 文字列に数字を格納するのは賢明ではありません.思考を乱す可能性があるからです.ENUMの値は、カラム仕様説明のリスト順に並べ替えられます.(言い換えれば、ENUMの値は、それらのインデックス番号に従って並べ替えられる.)例えば、ENUM("a", "b")に対して"a""b"の後に並んでいるが、ENUM("b", "a") "b"に対して"a"の前に並んでいる.空の文字列は、空でない文字列の前に配置され、NULLの値は、他のすべての列挙値の前に配置されます.予期せぬ結果を防ぐために、ENUM リストをアルファベット順に定義することを推奨します.GROUP BY CONCAT(col)を使用して、インデックス値ではなくアルファベット順に並べ替えることもできる.ENUM列のすべての可能な値を得るには、SHOW COLUMNS FROM table_name LIKE enum_columを使用します.