0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[SQLServer]初心者向け:NULLとは 

Posted at

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

image.png

IS NULL を用いて、NULLを選択する

本を借りている人を探すSELECT文
SELECT * FROM LIBRARY WHERE [Name] IS NULL

image.png

IS NOT NULLを用いて、NULLを除外できる

本を借りている人を探すSELECT文
SELECT * FROM LIBRARY WHERE [Name] IS NOT NULL

image.png

最後に

SQL文は何度も練習することが大事だと思いました。
次はNULLに対処するのみの記事を書いてみたいと思いました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?