MySQL NOT NULL 制約
1. MySQL NOT NULL 制約の概要
NOT NULL 制約は、カラム(列)が NULL 値を受け入れないように強制するためのルールです。
これにより、特定のフィールドには常に何らかの値が含まれていることが保証されます。つまり、この制約が課されたフィールドに値を指定せずに、新しいレコードを挿入したり、既存のレコードを更新したりすることはできなくなります。
なお、デフォルトの設定では、カラムは NULL 値を保持できるようになっています。
2. CREATE TABLE 時の NOT NULL 設定
テーブルを作成する際に NOT NULL 制約を定義するには、カラム名のデータ型の直後に NOT NULL を記述します。
以下の SQL は "Persons"(個人情報)テーブルを作成する例です。「ID」「LastName(苗字)」「FirstName(名前)」の各カラムが NULL 値を受け付けないように設定しています。
実行例
/* 自分専用の SQL サーバーを取得 */
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Age int
);3. ALTER TABLE 時の NOT NULL 設定
すでに作成済みのテーブルに対して NOT NULL 制約を定義する場合は、ALTER TABLE ステートメントを使用し、データ型の後に NOT NULL を追加して定義を修正します。
以下の SQL は、作成済みの "Persons" テーブルの "Age"(年齢)カラムに対して、後から NOT NULL 制約を追加する例です。
実行例
ALTER TABLE Persons
MODIFY Age int NOT NULL;4. NOT NULL 制約の解除
カラムから NOT NULL 制約を削除し、再び NULL 値を許容するように設定を変更するには、以下の構文を使用します。
実行例
/* MODIFY を使用して NULL 許容に変更 */
ALTER TABLE Persons
MODIFY Age int NULL;