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

MySQLのINT型カラムにNULLを設定することはできる?基本と実例を解説

結論から言うと、MySQLのINT型カラムにはNULLを設定することができます。INT型カラムは、特に制約を指定しない限り、デフォルトでNULLを許容するNullableなカラムとして作成されます。

NULLを挿入する基本構文

INT型カラムにNULLを挿入する場合、INSERT文で値として「NULL」を指定します。基本構文は以下の通りです。

INSERT INTO yourTableName(yourIntColumnName) values(NULL);

実際にテーブルを作って確認してみよう

それでは、実際の例を見ていきましょう。まずはテスト用のテーブルを作成します。「Id」カラムにはNOT NULL制約とAUTO_INCREMENTを設定し、「Price」カラムはINT型のままとします。

mysql> create table nullableIntDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Price int,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.80 sec)

このように、「Price」カラムには何も制約を付けていないため、NULLが格納可能な状態になっています。

NULLと数値レコードを挿入する

次に、「Price」カラムに対してNULLと通常の数値を交互に挿入してみます。

mysql> insert into nullableIntDemo(Price) values(NULL);
Query OK, 1 row affected (0.11 sec)
mysql> insert into nullableIntDemo(Price) values(100);
Query OK, 1 row affected (0.15 sec)
mysql> insert into nullableIntDemo(Price) values(200);
Query OK, 1 row affected (0.12 sec)
mysql> insert into nullableIntDemo(Price) values(NULL);
Query OK, 1 row affected (0.13 sec)
mysql> insert into nullableIntDemo(Price) values(NULL);
Query OK, 1 row affected (0.10 sec)

すべてのINSERT文がエラーなく実行できました。NULLを含むデータでも問題なく登録できることがわかります。

SELECT文で結果を確認する

テーブル内の全レコードをSELECT文で表示して確認しましょう。

mysql> select *from nullableIntDemo;

実行結果は以下の通りです。

+----+-------+
| Id | Price |
+----+-------+
|  1 | NULL  |
|  2 | 100   |
|  3 | 200   |
|  4 | NULL  |
|  5 | NULL  |
+----+-------+
5 rows in set (0.00 sec)

まとめ

上記の出力結果を見ると、「Price」カラムにはNULLが3件、数値が2件格納されていることが確認できます。このことから、MySQLではINT型カラムもNULLを許容することがわかります。

なお、NULLを許可したくない場合は、カラム定義時に「NOT NULL」制約を追加するか、ALTER TABLEで後から制約を付け加えることで対応できます。用途に応じて適切に使い分けると良いでしょう。

  1. MySQLへのINSERT時にカラム(列)をスキップすることはできる?

    MySQLへのINSERT時にカラムをスキップすることはできる? 結論から言うと、AUTO_INCREMENTが設定されたカラムであれば、INSERT時にそのカラムをスキップし、代わりにNULLを指定することが可能です。MySQL側で自動的に連番が採番されるためです。 1. テーブルの作成 まずは、最初のカラムにAUTO_INCREMENTを設定したサンプルテーブルを作成しましょう。 mysql> CREATE TABLE DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentFirs

  2. MySQLでTINYINT型カラムが「1以外」または「NULL」のレコードを取得する方法

    MySQLでは、TINYINT型のカラムに対して「1以外の値」または「NULL」を含むレコードを抽出したいケースはよくあります。しかし、<> 1 の比較条件だけではNULLのレコードは取得できないため、IS NULL を組み合わせる必要があります。この記事では、具体的な手順をサンプルコードとともに解説します。 1. サンプルテーブルの作成 まず、TINYINT型のカラムを含むテーブルを作成します。 mysql> create table DemoTable -> ( -> EmployeeId int NOT NULL AUTO_INCREMEN