SQL 6日目17-22
レッスン日20-07-27(20-07-26+1)
2つ以上のテーブルの情報では、ユーザーは必要なセットに基づいて仮想テーブルを作成して結果を表示します.
実験環境の準備
コード#コード#
特定のカラムを基準として、正しく一致するセットを出力します.INNERコネクタは代表的なコネクタの種類です.
実習
集合が交差した結果のみ署名する.
実習.
顧客テーブルと支払テーブルのCIDを使用して、顧客ID、氏名、姓、Eメール、支払金額、支払日を問い合せます.
実習.
上記の質問結果では、CIDが2の人だけを検索します
実習.
3つの机の上で実習をする.上記取引の際に取引を行うスタッフの情報を一緒に提供します.
出力は、特定のカラムの一致セットに基づいていますが、1つのカラムの集合はすべて出力され、別のカラムの集合は一致するカラムの値のみが出力されます.
一致しないコンピュータの値はNULLで表されます.
例-LEFT OUTER接続
例-LEFT ONLY結合
ダイバーシティ
例-RIGHT OUTER結合
後ろのジョイントの後に出てくる子供を基準にOUTERジョイントを行います
特定のテーブルを基準としたテーブルの結合を同じテーブル間で出力します.すなわち,同じテーブルのデータを各集合に分類し,結合する.
例
サンプル表
manager idはemployee idにあります.マネージャーも社員なので.従業員と一緒にマネージャーを見たいならどうしますか?その時はSELF JOINを使っていました
実習
SELFコネクタ練習-ELF LEFT OUTERコネクタ
社長には上司がいない.ただし、上記の結果によれば、マネージャがないため、トップマネージャはクエリーの結果として現れません.この問題を解決するためにOUTERサインを実施する.
最高管理者WindyHaysが出力されます!
SELF結合練習-否定条件
映画の上映時間は同じですが、違う映画を出力しなければなりません.
INNER、LEFT OUTER、RIGHT OUTER結合セット全て出力の結合方式.
すなわち、2つのテーブルの間に、すべての出力可能なデータを含むデータのセットが出力される.
集合です.
Full Outerコネクタ実習-ONly Outerコネクタ
集合-交差
「従業員」テーブル
部門テーブル
FULL OUTER継ぎ手実習
FULL OUTER継ぎ手実習-RIGHT ONLY
2つのテーブルのCATESIAN PRODUCT演算の結果を出力します.これは、データ・レプリケーションによく使用されるテクノロジーです.
サンプル表
cross_t1
cross_t2
CROSS登録練習
結合条件がないため、可能なすべての状況を選択し、他のテーブルの状況と合わせて次のように表示します.
これを積演算と呼びます.
全てのケースを抽出する数字なのでJOIN条件は書かない
カティの乗り換えも以下のように表すことができます.
結果値は上記のように表示されます.
CROSS結合の使用方法
このような複雑な演算で使用できます.
깅의명 : 01 조인이란
깅의명 : 02 INNER 조인
깅의명 : 03 OUTER 조인
깅의명 : 04 SELF 조인
깅의명 : 05 FULL OUTHER조인
깅의명 : 06 CROSS 조인
趙仁蘭。
2つ以上のテーブルの情報では、ユーザーは必要なセットに基づいて仮想テーブルを作成して結果を表示します.
結合の種類
実験環境の準備
コード#コード#
create table basket_a
(
ID INT primary key
, FRUIT VARCHAR (100) not NULL
);
create table basket_b
(
ID INT primary key
, FRUIT VARCHAR (100) not NULL
);
insert into basket_a
(ID, FRUIT)
values
(1, 'Apple'),
(2, 'Orange'),
(3, 'Banana'),
(4, 'Cucumber')
;
commit;
insert into basket_b
(ID, FRUIT)
values
(1, 'Orange'),
(2, 'Apple'),
(3, 'Watermelon'),
(4, 'Pear')
;
テーブル台INNER結合
特定のカラムを基準として、正しく一致するセットを出力します.INNERコネクタは代表的なコネクタの種類です.
実習
select a.id ID_A, a.fruit FRUIT_A
, b.id ID_B, b.fruit FRUIT_B
from basket_a a
inner join basket_b b
on a.fruit = b.fruit;
結果集合が交差した結果のみ署名する.
実習.
顧客テーブルと支払テーブルのCIDを使用して、顧客ID、氏名、姓、Eメール、支払金額、支払日を問い合せます.
select a.customer_id, a.first_name
, a.last_name, a.email
, b.amount, b.payment_date
from customer a
inner join payment b
on a.customer_id = b.customer_id;
実習.
上記の質問結果では、CIDが2の人だけを検索します
select a.customer_id, a.first_name
, a.last_name, a.email
, b.amount, b.payment_date
from customer a
inner join payment b
on a.customer_id = b.customer_id
where a.customer_id = 2;
実習.
3つの机の上で実習をする.上記取引の際に取引を行うスタッフの情報を一緒に提供します.
select a.customer_id, a.first_name
, a.last_name, a.email
, b.amount, b.payment_date
, c.first_name as S_FIRST_NAME
, c.last_name as S_LAST_NAME
from customer a
inner join payment b
on a.customer_id = b.customer_id
inner join staff c
on b.staff_id = c.staff_id ;
OUTER接続
出力は、特定のカラムの一致セットに基づいていますが、1つのカラムの集合はすべて出力され、別のカラムの集合は一致するカラムの値のみが出力されます.
一致しないコンピュータの値はNULLで表されます.
例-LEFT OUTER接続
select a.id ID_A, a.fruit FRUIT_A
, b.id ID_B, b.fruit FRUIT_B
from basket_a a
left join basket_b b
on a.fruit = b.fruit;
例-LEFT ONLY結合
ダイバーシティ
select a.id ID_A, a.fruit FRUIT_A
, b.id ID_B, b.fruit FRUIT_B
from basket_a a
left join basket_b b
on a.fruit = b.fruit
where b.id is NULL;
例-RIGHT OUTER結合
後ろのジョイントの後に出てくる子供を基準にOUTERジョイントを行います
select a.id ID_A, a.fruit FRUIT_A
, b.id ID_B, b.fruit FRUIT_B
from basket_a a
right join basket_b b
on a.fruit = b.fruit;
SELF結合
特定のテーブルを基準としたテーブルの結合を同じテーブル間で出力します.すなわち,同じテーブルのデータを各集合に分類し,結合する.
例
サンプル表
manager idはemployee idにあります.マネージャーも社員なので.従業員と一緒にマネージャーを見たいならどうしますか?その時はSELF JOINを使っていました
select
e.first_name || ' ' || e.last_name as employee
, m.first_name || ' ' || m.last_name as manager
from employee e
inner join employee m
on e.manager_id = m.employee_id
order by manager;
実習
SELFコネクタ練習-ELF LEFT OUTERコネクタ
社長には上司がいない.ただし、上記の結果によれば、マネージャがないため、トップマネージャはクエリーの結果として現れません.この問題を解決するためにOUTERサインを実施する.
select
e.first_name || ' ' || e.last_name as employee
, m.first_name || ' ' || m.last_name as manager
from employee e
left join employee m
on e.manager_id = m.employee_id
order by manager;
最高管理者WindyHaysが出力されます!
SELF結合練習-否定条件
映画の上映時間は同じですが、違う映画を出力しなければなりません.
select f1.title, f2.title, f1.length
from film f1
inner join film f2
on f1.film_id <> f2.film_id
and f1.length = f2.length;
FULL OUTER接続
INNER、LEFT OUTER、RIGHT OUTER結合セット全て出力の結合方式.
すなわち、2つのテーブルの間に、すべての出力可能なデータを含むデータのセットが出力される.
集合です.
select a.id ID_A, a.fruit FRUIT_A
, b.id ID_B, b.fruit FRUIT_B
from basket_a a
full OUTER join basket_b b
on a.fruit = b.fruit;
Full Outerコネクタ実習-ONly Outerコネクタ
集合-交差
select a.id ID_A, a.fruit FRUIT_A
, b.id ID_B, b.fruit FRUIT_B
from basket_a a
full OUTER join basket_b b
on a.fruit = b.fruit
where a.id is null
or b.id is null;
サンプル表
「従業員」テーブル
部門テーブル
FULL OUTER継ぎ手実習
select
e.employee_name
, d.department_name
from employees e
full outer join departments d
on d.department_id = e.department_id ;
FULL OUTER継ぎ手実習-RIGHT ONLY
select
e.employee_name
, d.department_name
from employees e
full outer join departments d
on d.department_id = e.department_id
where e.employee_name is NULL;
CROSS結合
2つのテーブルのCATESIAN PRODUCT演算の結果を出力します.これは、データ・レプリケーションによく使用されるテクノロジーです.
サンプル表
cross_t1
cross_t2
CROSS登録練習
select *
from cross_t1
cross join
cross_t2;
サインの条件はありません!では、結果はどうなるのでしょうか.結合条件がないため、可能なすべての状況を選択し、他のテーブルの状況と合わせて次のように表示します.
これを積演算と呼びます.
全てのケースを抽出する数字なのでJOIN条件は書かない
カティの乗り換えも以下のように表すことができます.
select *
from cross_t1, cross_t2;
結果値は上記のように表示されます.
CROSS結合の使用方法
select *
from cross_t1, cross_t2;
select label,
case when label = 'A' then sum(score)
when label = 'B' then sum(score) * -1
else 0
end as calc
from cross_t1
cross join
cross_t2
group by label
order by label;
このような複雑な演算で使用できます.
Reference
この問題について(SQL 6日目17-22), 我々は、より多くの情報をここで見つけました https://velog.io/@fe26ming/SQL-6일차-17-22テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol