サブクエリの深化
1.操作方式によってサブクエリを分類する
サブクエリにプライマリ・クエリの列が含まれているかどうかによって、関連サブクエリ、非関連サブクエリに分割されます.
関連サブクエリの例
プライマリ・クエリーのセットはサブクエリーに含まれ、プライマリ・クエリーのセットはサブクエリーの特定の条件として使用されます.
select id, department_id, name, salary
from employee as a
where
salary > (select avg(salary)
from
employee as b
where
b.department_id = a.department_id);
たとえば、サブクエリはプライマリクエリの列を参照します.
非関連サブクエリの例
プライマリ・クエリー列はサブクエリーに含まれません.主にプライマリ・クエリーに特定の値を指定するために使用されます.select
avg(salary)
from
employee
where
department_id = (select
department_id
from
employee
where
name = 'steve');
例では、サブクエリはプライマリクエリを参照しません.
2.返されたデータ型に基づいてサブクエリを分類する
1行サブクエリ
結果値として1行のみを使用するサブクエリを示します.
複数行サブクエリ
サブクエリの結果は、複数行を返し、複数行比較演算子(IN、ALL、ANY、EXISTS)とともに使用できます.
select id, department_id, name, salary
from employee as a
where
salary > (select avg(salary)
from
employee as b
where
b.department_id = a.department_id);
select
avg(salary)
from
employee
where
department_id = (select
department_id
from
employee
where
name = 'steve');
1行サブクエリ
結果値として1行のみを使用するサブクエリを示します.
複数行サブクエリ
サブクエリの結果は、複数行を返し、複数行比較演算子(IN、ALL、ANY、EXISTS)とともに使用できます.
複数列サブクエリ
サブクエリの結果は、複数のカラムを返し、メインクエリの条件と比較します.
select
name,
salary
from
employee
where
(department_id, salary) in
(select
department_id, max(salary)
from
employee
group by
department_id);
3.スカラー量子クエリー
1つのプロパティがあり、1行のクエリーのみが返されます.select、where、haveセクションなどで使用できます.select
name,
(select
count(*)
from
employee as e
where
e.department_id = d. id)
from
department as d;
4. VIEW
ビューは、他のテーブルから派生したテーブルです.データは物理(ハードウェア)に格納されていません.
論理的にのみ存在し、ビューを使用してクエリーを行う場合、DBMSはビュー定義に基づいてクエリーを書き換えます.
VIEWのメリット
select
name,
(select
count(*)
from
employee as e
where
e.department_id = d. id)
from
department as d;
ビューは、他のテーブルから派生したテーブルです.データは物理(ハードウェア)に格納されていません.
論理的にのみ存在し、ビューを使用してクエリーを行う場合、DBMSはビュー定義に基づいてクエリーを書き換えます.
VIEWのメリット
VIEW特性
生成されたビュー
VIEW例
create [또는 replace] view 뷰 이름 as
select 컬럼 1, 컬럼 2, .....
from 테이블 이름
where 조건
Reference
この問題について(サブクエリの深化), 我々は、より多くの情報をここで見つけました https://velog.io/@highway92/서브쿼리-심화テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol