서브쿼리란?
하나의 SQL 문에 포함되어 있는 또 다른 SQL 문
서브쿼리 사용시 주의사항
1. 서브쿼리를 괄호로 감싸서 사용
2. 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능
3. 서브쿼리에서는 ORDER BY 를 사용하지 못함
서브쿼리가 사용 가능한 곳
1. SELECT 절
2. FROM 절
3. WHERE 절
4. HAVING 절
5. ORDER BY 절
6. INSERT 문의 VALUES 절
7. UPDATE 문의 SET 절
조인
두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것
조인이 필요한 이유는 정규화에서 출발하
정규화란 불필요한 데이터의 정합성을 확보하고 이상현상 발생을 피하기 위해, 테이블을 분할하여 생성하는 것임
INNER JOIN
내부 조인이라고도 하며 JOIN 조건에서 동일한 값이 있는 행만 반환
INNER JOIN 조건에서 동일한 값이 있는 행만 반환하는게 특징
A와 B 테이블에 겹치는 부분을 가져옴 (교집합)
INNER JOIN 은 WHERE 절에서 사용하던 JOIN 조건을 FROM 절에서 정의하겠다는 의미이므로 USING 이나 ON 절을 필수적으로 사용해야 함
OUTER JOIN
한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽 테이블의 내용을 모두 출력하는 것
OUTER JOIN 에는 LEFT RIGHT JOIN이 있음
👉 LEFT OUTER JOIN
두 테이블 중 먼저 표기된(왼쪽) A 테이블의 데이터를 기준으로 A의 전체 데이터와 함께 B 테이블의 값도 가져옴
만약 B 테이블에 A테이블과 같은 값이 없으면 NULL로 채워 반환함
👉 RIGHT OUTER JOIN
두 테이블 중 나중에 표기된(오른쪽) B 테이블의 데이터를 기준으로 B의 전체 데이터와 함께 A 테이블의 값도 가져옴
만약 A 테이블에 B 테이블과 같은 값이 없으면 NULL로 채워 반환함
👉 FULL OUTER JOIN
두 테이블의 모든 값을 반환 (합집합)
이때 중복되는 데이터는 삭제함
서브쿼리와 조인의 차이점?
일반조인에서 두 테이블은 평등한 관계임
반면 서브쿼리에서는 서브쿼리가 메인 쿼리에 종속되는 관계임
'프로그래밍 > SQL' 카테고리의 다른 글
[MySQL 에러] MySQL, sequelize 연동 오류(errno: 1049) (0) | 2021.04.27 |
---|---|
SQL과 NoSQL (0) | 2020.12.24 |
09.17(정규화 예제) (0) | 2020.09.17 |
09.16(정규화) (0) | 2020.09.16 |
05.29(Trigger) (0) | 2020.05.29 |