MySQLのNOT NULL制約とは?テーブル作成時にカラムをNOT NULLとして宣言する方法
MySQLにおけるNOT NULL制約とは
MySQLのNOT NULL制約は、テーブルのカラムにNULL値が格納されることを禁止する制約です。一度NOT NULL制約を適用したカラムには、NULL値を渡すことができなくなります。
なお、NOT NULL制約はテーブル全体に対して宣言できるものではなく、個々のカラムに対してのみ設定できます。つまり、NOT NULLは「カラムレベルの制約」であるという点に注意してください。
フィールドをNOT NULLとして宣言する方法
カラムをNOT NULLとして宣言するには、CREATE TABLE文でカラムを定義する際にNOT NULLキーワードを指定します。
例
mysql> CREATE TABLE Employee(ID INT NOT NULL, First_Name VARCHAR(20), Last_Name VARCHAR(20), Designation VARCHAR(15));
Query OK, 0 rows affected (0.59 sec)
上記のクエリでは、「Employee」テーブルの「ID」フィールドにNOT NULL制約を適用しています。これにより、「ID」カラムにはNULL値を格納できなくなります。
実際にDESCRIBE文を実行すると、IDフィールドがNULLを受け付けない設定になっていることを確認できます。
mysql> DESCRIBE Employee\G
*************************** 1. row ***************************
Field: ID
Type: int
Null: NO
Key:
Default: NULL
Extra:
*************************** 2. row ***************************
Field: First_Name
Type: varchar(20)
Null: YES
Key:
Default: NULL
Extra:
*************************** 3. row ***************************
Field: Last_name
Type: varchar(20)
Null: YES
Key:
Default: NULL
Extra:
*************************** 4. row ***************************
Field: Designation
Type: varchar(15)
Null: YES
Key:
Default: NULL
Extra:
4 rows in set (0.03 sec)
出力結果の見方
DESCRIVE文の出力にある「Null」列に注目してください。「ID」フィールドのNull値は「NO」と表示されており、NULL値が許可されていないことが分かります。一方、他のフィールド(First_Name、Last_name、Designation)は「YES」と表示されており、これらのカラムにはNULL値を格納することが可能です。
このように、NOT NULL制約を活用することで、必ず値が入っていなければならない重要なカラム(主キーや社員番号など)のデータ整合性を保つことができます。
-
MySQLのENUM型とNOT NULL:デフォルト値の挙動を具体例で解説
MySQLのENUM型におけるNOT NULLの役割MySQLのENUM(列挙型)データ型では、NOT NULL制約を宣言するかどうかによって、値を指定せずにINSERTした場合のデフォルト値の挙動が変わります。NOT NULLを宣言しない場合:デフォルト値はNULLになります。NOT NULLを宣言した場合:ENUMで定義した最初の値が自動的にデフォルト値として設定されます。それぞれのケースについて、実際のSQL実行例を見ていきましょう。CASE 1:NOT NULLなし → NULLが格納されるケースまず、通常のENUMカラムを持つテーブルを作成します。mysql> create t
-
MySQLにおける「!=NULL」と「IS NOT NULL」の違いとは?
MySQLでは、値を!=NULLと比較すると、結果は必ずNULLになります。つまり、!=NULLという比較は意味を持ちません。NULLは「不明な値」を表すため、通常の比較演算子では判定できないのです。NULL値を判定するには、専用の演算子であるIS NOT NULLを使用します。ここでは、!=NULLとIS NOT NULLの違いを実際に確認するために、まずテーブルを作成します。テーブルの作成まず、次のコマンドでテーブルを作成します。mysql> create table DemoTable1970 (