カラムにNULLを格納できないようにするには「NOT NULL」を使います。
ここでは MySQLコマンド「NOT NULL」の具体的な使い方を解説していきます。
目次
「NOT NULL」の基本
「NOT NULL」は、テーブルの作成時にNULLを格納できないようにしたいカラム名の後ろにつけて使います。
CREATE TABLE テーブル名 (カラム名 データ型 NOT NULL);
CREATE TABLE 文の詳しい使い方はこちら。
テーブル作成時にカラムにNULLを格納できないようにする
実際にMySQLサーバーに接続し、動作を確認してみましょう。
あらかじめ「shopping」データベースが作られている例で進めていきます。
データベースを作成し、選択するコマンド例
CREATE DATABASE shopping;
USE shopping;
それでは「items」テーブルを作成し、「price」カラムにNULLを格納できないようにしてみましょう。コマンドは以下。
CREATE TABLE items (name VARCHAR(100), price INT NOT NULL);
次に作成したテーブルに、「price」カラムの値は設定せずにデータを追加してみます。
INSERT INTO items (name) VALUES ('牛乳');
INSERT INTO 文の詳しい使い方はこちら。
以下のコマンドで、追加したデータを確認してみます。
SELECT * FROM items;
SELECT 文の詳しい使い方はこちら。
値を設定しなかった「price」カラムには、通常の場合のNULLではなく、自動的に 0
が設定されていることが確認できます。
今度は明示的に「price」カラムに NULL を指定してデータ追加してみましょう。
すると以下のようにエラーとなることが確認できます。
カラムにNULLが格納できないようになっているかどうかを確認する
今度はカラムにNULLが格納できないようになっているかどうかを確認してみましょう。
以下のコマンドで「items」テーブルの内容を確認できます。
DESC items;
DESC の詳しい使い方はこちら。
コマンドの実行結果は以下。「price」カラムの「Null」の項目が NO
になっているので、NULLが格納できない設定になっていることが確認できます。
ここまでが「NOT NULL」の基本!
理解をさらに深めたい方は以下からの内容もご覧ください。
すでに作成してあるカラムにNULLを格納できないようにする
すでに作成してあるカラムにNULLを格納できないようにしたい場合は、以下のコマンドを使います。
ALTER TABLE テーブル名 MODIFY COLUMN カラム名 データ型 NOT NULL;
「items」テーブルの「price」カラムにNULLを格納できないようにするコマンド例
ALTER TABLE items MODIFY COLUMN price INT NOT NULL;
NULLを格納できないようにする制約を削除する
NULLを格納できないようにする制約を削除したい場合は、以下のコマンドを使います。
ALTER TABLE テーブル名 MODIFY COLUMN カラム名 型名;
「items」テーブルの「price」カラムの NOT NULL 制約を削除するコマンド例
ALTER TABLE items MODIFY COLUMN price INT;
まとめ
以上、MySQLコマンド「NOT NULL」の使い方でした!
ここまでの内容をまとめておきます。
- 「NOT NULL」でカラムにNULLを格納できないようにすることができる。
- カラムに NOT NULL 制約がついているかどうかは「DESC」を使って確認できる。