職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

SQLIteの自然結合

2020年07月23日 | sqlite
自然結合


【開発環境】
OS:Win10(64ビット)
データベース:SQLite3
コマンドプロンプト入力

【自然結合とは】
NATURAL キーワードを指定するとカラム名を指定しなくても二つのテーブルで同じ名前のカラム名を使って結合出来る。

【自然結合の使い方】
内部結合や外部結合を行うときに NATURAL キーワードを指定することで自然結合を行うことができます。

書式(内部結合)
SELECT テーブル名.カラム名, ... FROM テーブル名1
NATURAL INNER JOIN テーブル名2;

書式(外部結合)
SELECT テーブル名.カラム名, ... FROM テーブル名1
NATURAL LEFT OUTER JOIN テーブル名2;

【例文】
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> .table
color earn kantou product test user1
dept foods olduser staff user
sqlite> .header on
sqlite> .mode column
sqlite>
sqlite> select *from staff;
id name deptid
---------- ---------- ----------
1 Suzuki 1
2 Endou 3
3 Katou 1
4 Yamada 2
5 Takahashi 4
6 Honda 3
sqlite> select * from dept;
deptid deptname
---------- ----------
1 Sales
2 Manage
3 Dev
sqlite>
NATURAL キーワードを付けた内部結合データを取得。ここではdeptidカラムを使って結合する。
sqlite> select * from staff natural inner join dept;
id name deptid deptname
---------- ---------- ---------- ----------
1 Suzuki 1 Sales
2 Endou 3 Dev
3 Katou 1 Sales
4 Yamada 2 Manage
6 Honda 3 Dev
sqlite>
内部結合で ON 句を使ってデータ取得と、ほぼ同じである
sqlite> select * from staff inner join dept on staff.deptid = dept.deptid;
id name deptid deptid deptname
---------- ---------- ---------- ---------- ----------
1 Suzuki 1 1 Sales
2 Endou 3 3 Dev
3 Katou 1 1 Sales
4 Yamada 2 2 Manage
6 Honda 3 3 Dev
sqlite>
外部結合データを取得。再び、deptidカラムを使う。
sqlite> select * from staff natural left outer join dept;
id name deptid deptname
---------- ---------- ---------- ----------
1 Suzuki 1 Sales
2 Endou 3 Dev
3 Katou 1 Sales
4 Yamada 2 Manage
5 Takahashi 4
6 Honda 3 Dev
sqlite>
これは外部結合で ON 句を使ってデータを取得した場合と同じ
select * from staff left outer join dept on staff.deptid = dept.deptid;
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする