EXCEPT演算子を使用することで、
テーブルのレコード(集合)を使用した引き算(減算)をすることが
できます!
以下のようなプログラムのテストで役に立ちます!
・テーブルAのデータをテーブルBへ登録するプログラム
・テーブルAのデータがテーブルBへ登録されたことを確認する
➡テーブルAとテーブルBのデータが同じであることを確認する
EXCEPT演算子とは
標準SQLに含まれているモノです。
よってSQL Serverを含む全てのRDBMSで使用可能です。
EXCEPT演算子を使用することで、レコード(集合)を使用した引き算(減算)を
することができます。
上記の公式ページに記載されている通り、引き算(減算)した結果から重複を除去した上で、
結果を返します。
準備
以下のSQLを実行し、テーブルの作成/データの登録をします。
--テーブル①の作成
CREATE TABLE employee(
id CHAR(5) PRIMARY KEY,
name VARCHAR(10),
sex CHAR(2),
section VARCHAR(10)
)
--テーブル①へデータの登録
INSERT employee (id, name, sex, section) VALUES ('00001', '鈴木一郎', '男', '営業課')
INSERT employee (id, name, sex, section) VALUES ('00002', '田中二郎', '男', '総務課')
INSERT employee (id, name, sex, section) VALUES ('00003', '佐藤三郎', '男', '経理課')
--テーブル①のデータをテーブル②へ登録
SELECT * INTO employee_20200827
FROM employee
SQL
以下2つを実現するSQLを実行します。
・『テーブル①』 から『テーブル②』を減算(引き算)する
・『テーブル②』 から『テーブル①』を減算(引き算)する
--『テーブル①』 から『テーブル②』を減算(引き算)する
SELECT * FROM employee
EXCEPT --減算(引き算)する
SELECT * FROM employee_20200827
--『テーブル②』 から『テーブル①』を減算(引き算)する
SELECT * FROM employee_20200827
EXCEPT --減算(引き算)する
SELECT * FROM employee
実行結果
どちらのSQLもレコードが出力されませんでした。
よって2つのテーブルのレコード(集合)は、同じであると言えます。
SQLは集合指向言語と言われています!
集合を使用した演算は、他のプログラミング言語には無い
SQLの特徴であり長所です!
EXCEPT演算子などの集合演算子は非常に便利です!
積極的に使用しましょう!