wp※제로베이스 데이터 취업스쿨 11기 수강 중
📗 37번째 공부 내용 요약
SQL 심화 마지막 파트를 학습 하였다.
1. SQL Subquery : 스칼라 서브쿼리, 인라인뷰, 중첩 서브쿼리 개념 및 문법 학습
📖 37번째 공부 내용 자세히
1. SQL Subquery
1) Subquery
■ Subquery 개념
- 하나의 SQL 문 안에 포함되어 있는 또 다른 SQL 문
- 메인 쿼리가 서브쿼리를 포함하는 종속적인 관계
■ Subquery 사용시 주의 사항
- 서브쿼리는 괄호로 묶어서 사용한다
- 단일 행 혹은 복수 행 비교 연산자와 함께 사용 가능하다
- order by 사용이 불가능하다
■ Subquery 종류
- 스칼라 서브쿼리 : SELECT 절에 사용
- 인라인 뷰 : FROM 절에 사용
- 중첩 서브쿼리 : WHERE 절에 사용
2) 스칼라 서브쿼리 (Scalar Subquery)
- SELECT 절에서 사용하는 서브쿼리다
- 결과는 하나의 컬럼이어야 한다
SELECT column1, (SELECT column2 FROM table2 WHERE condition)
FROM table1
WHERE condition;
3) 인라인 뷰 (Inline View)
- FROM 절에 사용하는 서브쿼리
- 메인쿼리에서는 인라인 뷰에서 조회한 컬럼만 사용 가능하다
SELECT a.column, b.column
FROM table a, (SELECT column1, column2 FROM table2) b
SHERE condition;
4) 중첩 서브쿼리 (Nested Subquery)
WHERE 절에서 사용하는 서브쿼리
■ Single Row
- 하나의 열을 검색하는 서브쿼리
- 서브쿼리가 비교연산자와 사용되는 경우
SELECT column1
FROM table1
WHERE column2 = (SELECT column1
FROM table2
WHERE condition)
ORDER BY column1
■ Multiple Row - IN
- 서브쿼리 결과 중에 포함될 때
- 서브쿼리 행이 2개 이상
SELECT column1
FROM table1
WHERE column2 IN (SELECT column1
FROM table2
WHERE condition)
ORDER BY column1
■ Multiple Row - EXISTS
- 서브쿼리 결과에 값이 있으면 반환
SELECT column1
FROM table 1
WHERE EXISTS (SELECT column2
FROM table2
WHERE condition)
ORDER BY column1
■ Multiple Row - ANY
- 서브쿼리 결과 중 최소 하나라도 만족하면
SELECT column1
FROM table1
WHERE column2 = ANY (SELECT column1
FROM table2
WHERE condition)
ORDER BY column1
■ Multiple Row - ALL
- 서브쿼리 결과를 모두 만족하면
SELECT column1
FROM table1
WHERE column2 = ALL (SELECT column1
FROM table2
WHERE condition)
ORDER BY column1
■ Multiple Row - 연관 서브쿼리
- 서브쿼리 내에 메인 쿼리 컬럼이 같이 사용되는 경우
SELECT column_names
FROM table1 a
WHERE (a.column2, a.column2, ...) IN (SELECT b.column1, b.column2,...
FROM table2 b
WHERE a.column1 = b.column2)
ORDER BY column_names;
➰ 37번째 후기
전 파트들에서 실습을 할 때 강사님께서 데이터를 조회할 때 조건마다 끊어서 조회해서 확인해보고, 쿼리들을 합치라고 했었는데 이번 서브쿼리를 학습해보니 그 이유를 알 것 같았다.
전에는 그냥 한번에 쿼리를 작성했는데, 서브쿼리를 작성할 때는 복잡해지니 조건마다 조회해보는 게 중요했다.
중첩 서브쿼리가 좀 헷갈리긴 했는데, 그래도 실습문제들을 푸니까 조금은 익숙해졌다.
SQL 파트가 이렇게 마무리 되고, 이제는 테스트들을 치루면서 그동안 배운것들을 적용해볼 일만 남았다.
잘할 수 있겠지 ~~
※본 내용은 제로베이스 데이터 취업 스쿨에서 제공하는 학습 내용에 기반합니다.
'제로베이스 데이터 스쿨 > 일일 스터디 노트' 카테고리의 다른 글
39번째 스터디노트 / Git Log, Git Graph, Git diff, Git Merge, Conflict (0) | 2023.02.27 |
---|---|
38번째 스터디노트 / 버전관리, Git, Local Repository, Remote Repository (0) | 2023.02.24 |
36번째 스터디노트 / SQL 심화 - Scalar Function, EDA 학습 과제 2 (0) | 2023.02.22 |
35번째 스터디노트 / SQL 심화 - primary key, foreign key, 집계함수, group by, having (0) | 2023.02.22 |
34번째 스터디노트 / SQL 심화 - SQL file, Database 백업, Python과 SQL (0) | 2023.02.22 |