1. ホーム
  2. mysql

[解決済み] MySQLのenumとsetの比較

2022-12-01 07:16:54

質問

MySQL のデータ型の "enum" と "set" について、どちらを使用した場合の違いやメリット・デメリットは何ですか?

データ型の例です。

  • enum('A', 'B', 'C')
  • set('A'、'B'、'C')

私が認識している唯一の違いは、ENUMは1つの値しか選択できないのに対して、SETは複数の値を選択できることです。

どのように解決するのですか?

として MySQL ドキュメント は述べています。

ENUMまたはSETカラムの定義は、カラムに入力された値に対する制約として機能します。 に対して制約を与えます。以下の条件を満たさない値に対しては、エラーが発生します。 エラーが発生します。

ENUM値は、列の定義にリストされたものの1つ、または、その内部数値に相当するものでなければなりません。 その内部数値に相当するものでなければなりません。この値は、エラー 値(つまり、0または空文字列)であってはなりません。以下のように定義された列の場合 ENUM('a','b','c') と定義された列では、''、'd'、'ax' などの値は不正であり、拒否されます。 拒否されます。

SET値は、空の文字列か、列の定義に記載された値のみからなる値でなければなりません。 カンマで区切られた列の定義にリストされた値のみからなる値でなければなりません。SET('a','b','c') SET('a','b','c') と定義された列では、'd' または 'a,b,c,d' のような値は不正であり、拒否されます。 などの値は不正であり、拒否されます。