NULLの扱いについて
初めに
今回はNULLについての理解を目標
簡単なSELECT文の記述について
目次
NULLとは
テーブルの用意
IS NULL を用いて、NULLを選択する
IS NOT NULLを用いて、NULLを除外できる
最後に
NULLとは
NULLとは大体以下のように定義されていることが多い。
「何も存在しない」、「何も示さないということ」である。
なぜ、NULLという概念が必要かを考えてみよう。
例として以下の図書館の本の貸し出しを考えてみよう。
Aの本を、C君が借りるという場合、
借りている人、貸出日、返却日は一意的に決まるだろう。
しかし、
Bの本は誰も借りていない場合、
借りている人も貸出日も返却日も存在しない。
この場合、以下のようなテーブルであらわされる。
本 | 貸りている人 | 貸出日 | 返却日 |
---|---|---|---|
Aの本 | C君 | 2022/1/1 | 2022/17 |
Bの本 | NULL | NULL | NULL |
何もないということが、NULLの概念である。
テーブルの用意
今回は以下のSQL文を実行してみました。
テーブル定義
CREATE文
CREATE TABLE LIBRARY(
Id INT NOT NULL IDENTITY(1,1) PRIMARY KEY
,BookName NVARCHAR(50) NOT NULL
,Name NVARCHAR(50)
,LendDate DATE
,ReturnDate DATE
,UpdateDate Date
);
INSERT文
INSERT INTO LIBRARY VALUES('A','加藤','2023/03/04','2023/03/11','2023/03/01');
INSERT INTO LIBRARY VALUES('B','佐藤','2023/03/05','2023/03/12','2023/03/01');
INSERT INTO LIBRARY VALUES('C','山田','2022/03/03',NULL,'2023/03/01');
INSERT INTO LIBRARY VALUES('D','篠田','2022/03/04',NULL,'2023/03/01');
INSERT INTO LIBRARY VALUES('E',NULL,NULL,NULL,'2023/03/01');
INSERT INTO LIBRARY VALUES('F',NULL,NULL,NULL,'2023/03/01');
INSERT INTO LIBRARY VALUES('G','本返さない太郎','2022/02/13',NULL,NULL);
INSERT INTO LIBRARY VALUES('H',NULL,NULL,NULL,'2023/03/01');
SELECT文
SELECT * FROM LIBRARY
IS NULL を用いて、NULLを選択する
本を借りている人を探すSELECT文
SELECT * FROM LIBRARY WHERE [Name] IS NULL
IS NOT NULLを用いて、NULLを除外できる
本を借りている人を探すSELECT文
SELECT * FROM LIBRARY WHERE [Name] IS NOT NULL
最後に
SQL文は何度も練習することが大事だと思いました。
次はNULLに対処するのみの記事を書いてみたいと思いました。