質問: **最終的にやりたいこと** NULLを除いて、「デフォルト値なし」のカラムのみ抽出したい --- **Q1.phpMyAdminで「デフォルト値なし」と表示されるカラムがあるのですが、どういう意味ですか? 「デフォルト値なし」が内部的にどう処理されているかを知りたいです。** 下記コマンド実行したら、「NOT NULLで デフォルト値なし」のカラムは「Default NULL」と表示されました。 ``` show columns from テーブル名; ``` > > Default フィールドは、このカラムに割り当てられているデフォルト値を示します。このカラムの明示的なデフォルト値が NULL > > である場合や、カラム定義に DEFAULT 句が含まれていない場合、これは NULL です。 > > > SHOW COLUMNS 構文 「カラム定義に DEFAULT 句が含まれていない場合、これは NULL です」の意味は、下記何れですか? * デフォルト値なしとNULLの意味は同じ * デフォルト値なしとNULLの意味は異なるが、SHOW COLUMNS 実行結果としては同じ --- **Q2.カラムに対して「NOT NULLで デフォルト値ありなし」と「NOT NULL制約を設定しているかどうか」の情報はどこにありますか?** `INFORMATION_SCHEMA`.`COLUMNS`にあるのかと思い下記SQLを試してみましたが、よくわかりませんでした ``` select * from `INFORMATION_SCHEMA`.`COLUMNS` where `TABLE_SCHEMA`='テーブル名' ```
回答: おそらくですが、 MySQL 側では、「デフォルト値が NULL」であることと、「デフォルト値が指定されていないこと」は等価であると思っています。 > > Q2. カラムに対して「NOT NULLで デフォルト値ありなし」と「NOT NULL制約を設定しているかどうか」の情報はどこにありますか? > > > ``` select IS_NULLABLE, COLUMN_DEFAULT from information_schema.columns where table_schema = 'テーブル名'; ``` がそれぞれ、「NULL が許可されているか」と「カラムのデフォルト値」を表します。つまり、「NOT NULLである」とは、 `IS_NULLABLE` が `NO` であることです。