NOT NULL制約(カラムにNULLの格納を許可するかどうか)

テーブルを作成するときにカラムに NOT NULL 制約をつけることでカラムに NULL を格納することができなくなります。ここでは MySQL における NOT NULL 制約の使い方について解説します。

(Last modified: )

NOT NULL 制約の使い方

テーブルを作成するときにカラムに対して NOT NULL 制約を付けることができます。書式は次の通りです。

CREATE TABLE db_name.tbl_name
  (col_name data_type [NOT NULL | NULL], ...)

カラムのデータ型のあとに NOT NULL または NULL を記述します。 NOT NULL を記述すると該当のカラムには NULL を格納できなくなります。 NULL を記述すると NULL を格納できるようになります。どちらも記述しなかった場合は NULL が記述されたものとみなされるので、デフォルトでは NULL が格納できます。

では実際に試してみます。次のようなテーブルを作成しました。 name カラムには NOT NULL 制約が設定されています。

create table friends(name varchar(10) not null, address varchar(10));

NOT NULL 制約の使い方(1)

作成したテーブルのカラム情報を確認します。

show columns from friends;

NOT NULL 制約の使い方(2)

Null カラムの値をみていただくと、 name カラムが NO 、 address カラムが YES となっています。

テーブルにデータを追加します。最初に問題のないデータを追加してみます。

insert into friends values('Yamada', 'Tokyo');

NOT NULL 制約の使い方(3)

name カラム、および address カラムの値がどちらも NULL ではないので問題なくデータが追加されました。

次に name カラムの値が NULL のデータを追加してみます。

insert into friends values(NULL, 'Kanagawa');

NOT NULL 制約の使い方(4)

Column 'カラム名' cannot be null というエラーが発生しました。 name カラムには NOT NULL 制約が付いていますので、 NULL を格納しようとするとエラーになります。

最後に address カラムの値が NULL のデータを追加してみます。

insert into friends values('Suzuki', NULL);

NOT NULL 制約の使い方(5)

address カラムに NULL を格納しようとしていますが、 address カラムは NULL を許可しているため問題なくデータを追加することができました。

-- --

NOT NULL 制約の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。