

 **最終的にやりたいこと**  
NULLを除いて、「デフォルト値なし」のカラムのみ抽出したい

* * *

**Q1.phpMyAdminで「デフォルト値なし」と表示されるカラムがあるのですが、どういう意味ですか？
「デフォルト値なし」が内部的にどう処理されているかを知りたいです。**

下記コマンド実行したら、「NOT NULLで デフォルト値なし」のカラムは「Default NULL」と表示されました。

[code]

    show columns from テーブル名;
    
[/code]

> Default フィールドは、このカラムに割り当てられているデフォルト値を示します。このカラムの明示的なデフォルト値が NULL  
>  である場合や、カラム定義に DEFAULT 句が含まれていない場合、これは NULL です。

[SHOW COLUMNS 構文](https://dev.mysql.com/doc/refman/5.6/ja/show-columns.html)

「カラム定義に DEFAULT 句が含まれていない場合、これは NULL です」の意味は、下記何れですか？

  * デフォルト値なしとNULLの意味は同じ
  * デフォルト値なしとNULLの意味は異なるが、SHOW COLUMNS 実行結果としては同じ

* * *

**Q2.カラムに対して「NOT NULLで デフォルト値ありなし」と「NOT NULL制約を設定しているかどうか」の情報はどこにありますか？**  
`INFORMATION_SCHEMA`.`COLUMNS`にあるのかと思い下記SQLを試してみましたが、よくわかりませんでした

[code]

    select * from `INFORMATION_SCHEMA`.`COLUMNS` where `TABLE_SCHEMA`='テーブル名'
    
[/code]


CC BY-SA 4.0
2019-06-17T00:02:45.423
55859
2022-04-14T20:02:55.363
7886
question
mysql
カラムのデフォルト値が「なし」について


おそらくですが、 MySQL 側では、「デフォルト値が NULL」であることと、「デフォルト値が指定されていないこと」は等価であると思っています。

> Q2. カラムに対して「NOT NULLで デフォルト値ありなし」と「NOT NULL制約を設定しているかどうか」の情報はどこにありますか？
[code]

    select IS_NULLABLE,  COLUMN_DEFAULT from information_schema.columns where table_schema = 'テーブル名';
    
[/code]

がそれぞれ、「NULL が許可されているか」と「カラムのデフォルト値」を表します。つまり、「NOT NULLである」とは、 `IS_NULLABLE` が
`NO` であることです。


CC BY-SA 4.0
2019-09-24T01:22:36.183
59228
2019-09-24T01:22:36.183
754
55859
answer