SQLのお勉強 18.in, not in

2020-09-26

こんにちは、0371です。

今回は、SQLのお勉強をしたいと思います。
基本情報技術者試験で出題される範囲を中心に進めます。

お勉強

※ PostgreSQLはインストール済みかつ、パスも通しているという前提で進めていきます。

分からないという方は、以下の記事から始めてください。

dockerを使って、再構築が容易なSQLの練習場を作成する
"https://0371.blog/docker-sql"

前回の記事はこちら

SQLのお勉強 17.between
"https://0371.blog/sql-17"

in

inとは、複数の条件を一度に指定する時に使用します。 inでは、nullを指定することはできません。

select 列名 from テーブル名 where 列名 in (条件1, 条件2, 条件3 ...);

試しに、販売単価が500円、2800円、5000円のデータを取りに行きたいと思います。

select shohin_mei, shiire_tanka from Shohin where shiire_tanka in (500, 2800, 5000);

結果は以下の通りです。

   shohin_mei   | shiire_tanka 
----------------+--------------
 Tシャツ        |          500
 カッターシャツ |         2800
 包丁           |         2800
 圧力鍋         |         5000
(4 rows)

次に、商品分類が「衣服」か「事務用品」のデータを取得したいと思います。
文字列を指定するときは、シングルクォーテーションで囲みます。

select shohin_mei, shohin_bunrui from Shohin where shohin_bunrui in ('衣服', '事務用品');

結果はこのようになります。

   shohin_mei   | shohin_bunrui 
----------------+---------------
 Tシャツ        | 衣服
 穴あけパンチ   | 事務用品
 カッターシャツ | 衣服
 ボールペン     | 事務用品
(4 rows)

not in

not inとは、複数の除外したい条件を一度に指定する時に使用します。 inと同じように、not inではnullを指定することはできません。

select 列名 from テーブル名 where 列名 not in (条件1, 条件2, 条件3 ...);

試しに、販売単価が500円、2800円、5000円以外のデータを取りに行きたいと思います。

select shohin_mei, shiire_tanka from Shohin where shiire_tanka not in (500, 2800, 5000);

結果は以下の通りです。

  shohin_mei  | shiire_tanka 
--------------+--------------
 穴あけパンチ |          320
 おろし金     |          790
(2 rows)

in,not inの引数にサブクエリを指定することもできますので、覚えておきましょう。

今日はここまで。

参考書籍

SQL 第2版 ゼロからはじめるデータベース操作
"https://amzn.to/2QYMBJD"

今日の一言

in, not inが分かったのでSQLはマスターしたも同然!!!!