【MySQL】カラムにNULLを格納できないようにする(not null の使い方)

カラムに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;
メモ

CREATE DATABASE 文の詳しい使い方はこちら

USE 文の詳しい使い方はこちら

 

それでは「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」を使って確認できる。