오늘은 SQL 문제 찾기에 집중해서 시간을 사용했다.
먼저 서브 쿼리란
- 칼럼들을 활용한 사칙연산, 집계함수, 윈도우 함수 등 많은 연산을 하는 경우
- 서브 쿼리는 이를 순차적, 구조적으로 기록하는 역할을 수행
- 복잡한 연산시, 최종 결과룰 반환하기 위한 중간 테이블의 역할
근본적으로 서브쿼리를 사용하는 이유에 대해서 먼저 알아보자
- N번의 쿼리문 실행을 1번의 쿼리문으로 실행하기 위해 쿼리의 결과값을 가지고 추가 연산을 하기 위해 사용
서브 쿼리 실행 순서
- 서브 쿼리 실행을 먼저하고 메인 쿼리문
- 그렇다면 서브 쿼리가 2개이면 어떻게 동작?
- 애초에 서브쿼리가 2개 이상 사용이 될까?
그렇다면 서브쿼리를 어느 상황에 사용하는지 확인해보자
- 수업때 배운 서브 쿼리문 종류는 3가지
- 일반 중첩 서브쿼리
- where절에 사용
- 스칼라 서브쿼리
- 하나의 칼럽 처럼 사용
- 인라인 뷰 서브쿼리
- 하나의 테이블처럼 사용
서브 쿼리란
- 다른 테이블의 값을 기준으로 한 테이블에서 데이터를 검색할 수 있도록
- 다른 쿼리 내부에 중첩된 쿼리
- 즉, 다른 쿼리 내부에 포함되어 있는 select문을 의미
서브 쿼리의 분류
- 단일 행 서브 쿼리
- 서브 쿼리가 단일 행 비교 연산자와 함께 사용할 때는
- 서브쿼리의 결과 건수가 반드시 1건 이하여야 한다
- 다중 행 서브쿼리
- 서브쿼리의 결과가 2건 이상 반환될 수 있다면
- 반드시 다중 행 비교 연산자와 함께사용해야한다.
- 다중 행 비교 연산자!
- 다중 칼럼 서브쿼리
- 서브쿼리 결과오 여러 개의 컬럼이 반환되어 메인 쿼리의 조건과 동시 비교되는 것을 의미
- 연관 서브쿼리
- 서브 쿼리 내에 메인 쿼리 컬럼이 사용된 서브 쿼리
이외에도
- Having절에 사용
left join을 사용하면 왼쪽 테이블을 기준으로
오른쪽 테이블상에 연결된 정보가 있으면 칼럼을 가져오고
없으면 null값으로 채워서 가져온다.
이때, 왼쪽과 오른쪽 테이블을 연결하는 key값이
오른쪽 테이블에 여러번 있으면 데이터 중복값이 생긴다.
그리고 SQLD 강의와 시각화 정리를 조금하고 라이브 세션을 수강하였다