MySQL 速習チュートリアル

MySQL NULL値

1. NULL値とは?

テーブルフィールドが任意(オプショナル)である場合、そのフィールドに値を入力せずにレコード挿入(Insert)したり、更新(Update)したりすることが可能です。この場合、フィールドは NULL値 として保存されます。

NULL値は、データベースフィールド内の「不明」「欠損」あるいは「適用不能」なデータを表します。NULL自体は値ではなく、データの欠如を示すプレースホルダーです。

       注意: NULL値は、数値のゼロ(0)や空文字('')とは異なります。NULL値を持つフィールドとは、レコード作成時に空白のままにされたフィールドのことを指します。

2. NULL値を判定する方法

NULL値は、=<<> といった比較演算子を使ってテストすることはできません。

NULL値を判定するためには、代わりに IS NULL および IS NOT NULL オペレーターを使用する必要があります。

2.1 IS NULL の構文

SELECT column_names
FROM table_name
WHERE column_name IS NULL;

2.2 IS NOT NULL の構文

SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;

3. デモ用データベース

本チュートリアルでは、お馴染みの Northwind サンプルデータベースを使用します。
以下は、「Customers」テーブルから抜粋したデータです。

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

4. IS NULL 演算子

IS NULL 演算子は、空の値(NULL値)をテストするために使用されます。

以下のSQLは、「Address」フィールドがNULL値であるすべての顧客をリストアップします。

/* 住所(Address)が未入力(NULL)の
   顧客名、担当者名、住所を取得する */
SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NULL;

       チップ: NULL値を検索する際は、常に IS NULL を使用してください。

5. IS NOT NULL 演算子

IS NOT NULL 演算子は、空ではない値(NULLではない値)をテストするために使用されます。

以下のSQLは、「Address」フィールドに値が入っているすべての顧客をリストアップします。

/* 住所(Address)に値が存在する
   顧客名、担当者名、住所を取得する */
SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NOT NULL;