前提
php と MySQL を使っています。
質問
MySQL で CREATE TABLE するときに、値がなくても良いカラムがあるとします。
例えば「ユーザが任意に定めるニックネーム」などです。
そういう値のカラムは NOT NULL にするか否か、どちらが一般的ですか?
・「NOT NULL にする」→ 値が不要なときは空文字を入れる
・「NOT NULL にしない」→ 値が不要なときは NULL を入れる
そして、「NOT NULL にしない」のはどういうケースですか?
個人的な (素人の) 考え
個人的には「NOT NULL にする」で統一した方が良いように思います。
なぜなら、「NOT NULL にしない」と、php のメンバ変数でいちいち?string
のように?
をつけないといけなくて煩わしく思いますし、
php
1class User 2{ 3 protected int $id = 0; 4 protected ?string $nickname = null; 5}
それに「NULL との比較が常に false」となる点に鑑みれば、以下で「何も返されない」という点も扱いにくく思うのです。
SQL
1CREATE TABLE users ( 2 id INT PRIMARY KEY, 3 nickname VARCHAR(255) 4); 5 6INSERT INTO users (id, nickname) VALUES (1, NULL); 7INSERT INTO users (id, nickname) VALUES (2, 'taro'); 8 9SELECT * FROM users WHERE nickname= 'taro'; -- 2行目が返される 10SELECT * FROM users WHERE nickname= NULL; -- 何も返されない
以上のように「NOT NULL にする」で統一した方が良いように思うものの、「NOT NULL にしない」ことができるということは、それなりに活躍の場があるのだろうと思うのですが、どういうケースで便利なのかわかりません。
この辺りについてどながか教えて頂けませんでしょうか?
よろしくお願い致します。
回答4件
あなたの回答
tips
プレビュー