sql >> データベース >  >> RDS >> Mysql

MySQLENUMタイプと結合テーブル

    • ENUMの値のセットを変更するには、ALTER TABLEが必要です。 これにより、テーブルの再構築が発生する可能性があります-非常にコストのかかる操作です(ENUM定義の最後に新しい値を1つ追加するだけではテーブルの再構築は行われませんが、1つを削除するか、順序を変更すると、テーブルが実行されます再構築)。一方、ルックアップテーブルの値のセットの変更は、INSERTまたはDELETEと同じくらい簡単です。

    • 他の属性をENUMの値に関連付ける方法はありません。たとえば、どの属性が廃止され、どの属性がユーザーインターフェイスのドロップダウンリストに配置される資格があるかなどです。ただし、ルックアップテーブルには、そのような属性の追加の列を含めることができます。

    • 個別の値のリストを取得するためにENUMを照会することは非常に困難であり、基本的にINFORMATION_SCHEMAからデータ型定義を照会する必要があります。 、および返されたBLOBからリストを解析します。 SELECT DISTINCT statusを試すことができます テーブルから取得しますが、現在使用中のステータス値のみを取得します。これは、ENUMのすべての値ではない可能性があります。ただし、ルックアップテーブルに値を保持すると、クエリや並べ替えなどが簡単になります。

    お分かりのように、私はENUMの大ファンではありません。 :-)

    同じことが、列を固定値のセットと単純に比較するCHECK制約にも当てはまります。 MySQLはとにかくCHECK制約をサポートしていませんが。

    更新:MySQL8.0.16はチェックを実装するようになりました制約 。



    1. PHPでSQL変数をバインドする方法は?

    2. クエリプランは何を伝えることができますか?

    3. BufferedInputStreamを画像に変換します

    4. PostgreSQLマテリアライズドビュー