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

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

(Last modified: )

NOT NULL 制約の使い方

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

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

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

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

create table user (id int, name varchar(10) not null);

NOT NULL 制約の使い方(1)

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

show columns from user;

NOT NULL 制約の使い方(2)

Null カラムの値をみていただくと、 id カラムが Yes 、 name カラムが No となっています。

それではテーブルにデータを追加してみます。最初は name カラムの値が NULL ではない値です。

insert into user values(1, 'Yamada');

NOT NULL 制約の使い方(3)

問題なくテーブルにデータが追加できました。次に name カラムの値に禁止されている NULL を指定してデータを追加してみます。

insert into user values(2, NULL);

NOT NULL 制約の使い方(4)

「Column 'name' cannot be null」というエラーが表示されてデータの追加が失敗しました。 NULL が許可されていないカラムに対して NULL を追加しようとしたためです。

このようにカラムに対して NOT NULL 制約を設定することで、対象のカラムに NULL が設定されたデータを追加することを禁止することができます。

-- --

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

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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