NULL値とは、値が何も定義されていない状態(未定義な値)を意味する。
例えば、usrテーブルでpasswdフィールド(パスワード)やunameフィールド(ユーザー名)に意味のある値が入力されていないのは不都合である。
そこで、NOT NULL 制約を設定しよう。これで、NULL値を禁止できる。
今回は、この「NOT NULL 制約」を設定しよう。
まずは、mysqlクライアントを起動しよう。
C:\Users\vinta>mysql -u root -p
Enter password: *****
続いて、basicデータベースに移動しよう。
mysql> USE basic;
Database changed
NOT NULL 制約を設定しよう
usrテーブルのpasswdフィールドとunameフィールドに対してNOT NULL制約を設定しよう。
以下の通り入力しよう。
mysql> ALTER TABLE usr
-> MODIFY passwd varchar(15) NOT NULL,
-> MODIFY uname varchar(20) NOT NULL;
以下の通り、「Query OK, ・・・」と表示されれば成功である。
mysql> ALTER TABLE usr
-> MODIFY passwd varchar(15) NOT NULL,
-> MODIFY uname varchar(20) NOT NULL;
Query OK, 0 rows affected (0.37 sec)
Records: 0 Duplicates: 0 Warnings: 0
フィールド情報を確認しよう
ここで、usrテーブルのフィールド情報を確認しよう。以下の通り入力しよう。
mysql> SHOW FIELDS FROM usr;
以下の通り、passwdフィールドとunameフィールドのNULL欄に「NO」と表示されている。
mysql> SHOW FIELDS FROM usr;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| uid | varchar(7) | NO | PRI | NULL | |
| passwd | varchar(15) | NO | | NULL | |
| uname | varchar(20) | NO | | NULL | |
| family | int | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.05 sec)
レコードを登録しよう(エラー確認)
usrテーブルにレコードを追加しよう。以下の通り入力しよう。
mysql> INSERT INTO usr (uid,passwd,family)
-> VALUES('mharada','01230',3);
以下の通り、エラーメッセージが表示される。(unameフィールドに値が設定されていないため)
mysql> INSERT INTO usr (uid,passwd,family)
-> VALUES('mharada','01230',3);
ERROR 1364 (HY000): Field 'uname' doesn't have a default value
レコードを登録しよう(成功確認)
続けて、usrテーブルにレコードを追加しよう。以下の通り入力しよう。
mysql> INSERT INTO usr (uid,passwd,uname,family)
-> VALUES('mharada','01230','原田雅彦',3);
以下の通り、「Query OK, 1 row affected」と表示されれば成功である。
mysql> INSERT INTO usr (uid,passwd,uname,family)
-> VALUES('mharada','01230','原田雅彦',3);
Query OK, 1 row affected (0.08 sec)
今回は、ここまでである。mysqlクライアントを終了しよう。
mysql> exit
Bye
(参考)3ステップでしっかり学ぶ MySQL入門 [改訂第3版] 山田奈美(著)山田祥寛(監修)技術評論社
コメント