MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのNOT NULL制約付き文字型列に「NULL」という値を挿入する方法

NOT NULL制約が設定された文字型列に「NULL」というキーワードを値として挿入することは十分に可能です。なぜなら、この場合のNULLは特殊な値ではなく、それ自体が一つの文字列(値)として扱われるためです。以下の例で具体的に確認していきましょう。

具体例

ここでは、文字型の列「Name」にNOT NULL制約が設定されたテーブル「test2」を例に説明します。DESCRIBE文を実行すると、テーブルの構造は以下のようになっていることがわかります。

mysql> Describe test2\G
*************************** 1. row ***************************
  Field: id
    Type: int(11)
    Null: NO
     Key:
Default: NULL
   Extra:
*************************** 2. row ***************************
  Field: NAME
    Type: varchar(20)
    Null: NO
     Key:
Default: NULL
   Extra:
2 rows in set (0.03 sec)

次に、以下のクエリを実行すると、列「Name」に「NULL」という文字列を値として挿入できます。

mysql> Insert into test2 values(2, 'NULL');
Query OK, 1 row affected (0.06 sec)

mysql> select * from test2;
+----+--------+
| id | NAME   |
+----+--------+
|  1 | Gaurav |
|  2 | NULL   |
+----+--------+
2 rows in set (0.00 sec)

「'NULL'」と「NULL値」の違い

引用符で囲まれた文字列「'NULL'」と、特殊な値であるNULLの違いを理解するために、次の2つのクエリを実行して比較してみましょう。

まず、IS NULLを使って削除を試みます。

mysql> delete from test2 where name IS NULL;
Query OK, 0 rows affected (0.00 sec)

このクエリでは0行しか影響を受けていません。つまり、テーブル内にNULL値を持つ行は存在しないということです。SELECTクエリを実行しても、何も削除されていないことが確認できます。

mysql> select * from test2;
+----+--------+
| id | NAME   |
+----+--------+
|  1 | Gaurav |
|  2 | NULL   |
+----+--------+
2 rows in set (0.00 sec)

次に、「'NULL'」という文字列との一致で削除を試みます。

mysql> delete from test2 where name = 'NULL';
Query OK, 1 row affected (0.09 sec)

今度は1行が影響を受けています。つまり、「NAME」列に「NULL」という文字列を値として持つ行が存在したということです。SELECTクエリを実行すると、その行が実際に削除されたことが確認できます。

mysql> select * from test2;
+----+--------+
| id | NAME   |
+----+--------+
|  1 | Gaurav |
+----+--------+
1 row in set (0.00 sec)

このように、引用符で囲んだ「'NULL'」は単なる文字列として扱われるため、NOT NULL制約があっても問題なく挿入できます。一方、引用符なしのNULLは「値が存在しないこと」を表す特殊な値であり、NOT NULL制約のある列には挿入できません。この2つの違いを正しく理解しておくことは、データの整合性を保つ上で非常に重要です。

  1. MySQLのchar(2)型カラムにNULL値を挿入する方法

    ```html MySQLでは、char(2)型のカラムにNULL値を挿入したい場合、INSERT文でDEFAULTキーワードを活用する方法が便利です。ここでは、具体的な手順をサンプルコードとともにわかりやすく解説します。 テーブルの作成 まず、char(2)型のカラムを含むテーブルを作成します。 mysql> create table DemoTable658(FirstName varchar(100), value char(2)); Query OK, 0 rows affected (0.95 sec) この例では、名前を格納するvarchar(100)型の「FirstName

  2. MySQLでJSON型カラムにデフォルト値を設定する方法

    MySQLでは、JSON型のカラムにもデフォルト値を設定できます。その場合は、DEFAULT制約を使用します。基本的な構文は以下の通りです。ALTER TABLE テーブル名 MODIFY COLUMN カラム名 JSON NOT NULL DEFAULT ( JSON_OBJECT() );サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。ここでは demo24 というテーブルを作成します。mysql> create table demo24 -> ( -> employee_information text -> ) ->; Query OK,