반응형
서브 쿼리는 무엇인가요?
서브 쿼리는 쿼리 안에 있는 쿼리를 의미합니다. WHERE절 / FROM절 / SELECT절 안에 쓰이는 곳에 따라서 서브 쿼리의 명칭이 조금은 달라집니다.
중첩 서브 쿼리(nested subqueries)
WHERE 절 안에 쓰이는 서브 쿼리로 중첩 서브 쿼리(nested subqueries)라고 불립니다.
▼ 교실 테이블B에서 2021 학번인 학생을 찾아서 학생 A 테이블에서 모든 정보를 조회하는 쿼리입니다.
1
2
3
4
5
|
SELECT *
FROM STUDENT A
WHERE A.UNDERGRAD IN (SELECT B.UNDERGRAD
FROM CLASS B
WHERE B.UNDERGRAD = '2021');
|
cs |
인라인 뷰(inline views)
FROM 절 안에 쓰는 쿼리를 인라인 뷰(inline views)라고 불립니다.
▼ 학생(STUDENT) 테이블과 교실(CLASS) 테이블을 조인 대신 이렇게 아래처럼 인라인 뷰 형태로 쓸 수 있습니다.
다만 아래처럼 WHERE 절에 동일한 조건인 학번(UNDERGRAD)을 통해서 정보를 가져올 수 있습니다.
1
2
3
4
5
6
7
8
9
10
|
SELECT
A.*
,B.NAME
FROM STUDENT A,
(SELECT
UNDERGRAD
,NAME
FROM CLASS ) B
WHERE A.UNDERGRAD = B.UNDERGRAD
;
|
cs |
스칼라 서브 쿼리(scalar subqueries)
SELECT 절 안에 쓰는 쿼리를 스칼라 서브 쿼리(scalar subqueries)라고 불립니다.
주의할 점은 스칼라 서브 쿼리를 쓰실 때에는 결괏값은 단일 값이 나와야 됩니다. 여러 값이 조회되는 경우에는 결과가 실행되지 않으니 이점만 주의해서 사용해주시면 됩니다.
▼ 단일 값이 나온다는 전제로 적어 보았습니다. 교실(CLASS) 테이블에 2020 학번(UNDERGRAD)인 학생에 이름을 조회하는 쿼리입니다.
1
2
3
4
5
6
7
8
|
SELECT
A.*
,(SELECT
B.NAME
FROM CLASS B
WHERE UNDERGRAD = '2020') NAME
FROM STUDENT A
;
|
cs |
반응형
'프로그래밍 > DB' 카테고리의 다른 글
[DB]mssql 인덱스 조회쿼리(index) (0) | 2021.07.12 |
---|---|
[DB] 슬로우 쿼리(slow query) (0) | 2021.06.15 |
[DB] MSSQL SQL Server Management Studio(SSMS) 단축키 모음 (0) | 2021.04.15 |
[DB] MSSQL 테이블 데이터를 INSERT문으로 만드는 방법 (0) | 2021.04.06 |
[DB]MariaDB/Mysql date_format 날짜 시간 형식 표현 (0) | 2021.03.23 |
댓글