Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준
- SQLD
- 인접리스트
- outer join
- CROSS JOIN
- 식별자
- 인접행렬
- 정규화
- 엔터티
- depthwise convolution
- numpy
- SQL
- get_dummies()
- bottleneck
- 연산량 감소
- pytorch
- SQLD 후기
- Inductive Bias
- feature map
- 1x1 Convolution
- 데이터모델링
- Two Pointer
- BFS
- 그래프
- mobilenet
- Depthwise Separable Convolution
- resnet
- skip connection
- dp
- dfs
Archives
- Today
- Total
SJ_Koding
SQLD 대비 (10) - 서브쿼리(Sub Query), 비등가 조인, 집합연산자 본문
이전 글과 이어지는 글입니다. 해당 정리글은 아래의 유튜브 영상을 참고하여 만들었습니다. 문제 시 삭제하겠습니다.
빨간색 형광펜은 강의에서 강조한 부분, 노란색 형광펜은 추가 서치로 내용을 '직접' 보강한 부분입니다.
서브쿼리(Sub Query)
- 하나의 SQL에 포함되어 있는 또 다른 SQL을 지칭
- 서브쿼리는 대부분의 SQL절에서 사용 가능
- SELECT, FROM, WHERE, HAVING, ORDER BY, SET 절 등
- 서브쿼리는 시작과 끝을 소괄호로 감싸서 표현
- 서브쿼리는 사용되는 위치에 따라 단일행으로 출력되거나 복수형으로 출력될 수 있음
단일행 서브쿼리 | =, <, >, <>사용가능 |
다중행 서브쿼리 | IN, ALL, ANY, EXISTS 사용가능 |
CROSS JOIN | JOIN 하는 테이블간 조인 조건이 없을 때 실행되는 JOIN |
OUTER JOIN | INNER JOIN과 같은 상태에서 기준이 되는 테이블은 다른 쪽에 같은 값이 없어도 실행되어 출력하는 JOIN |
서브쿼리 위치 | 명칭 |
SELECT 절 | 스칼라 서브쿼리 |
FROM 절 | 인라인뷰 |
WHERE 절 | 중첩 서브쿼리, 서브쿼리 |
스칼라 서브쿼리(SELECT 절)
- SELECT 절에 사용이 된다.
- 성능에 매우 불리하다.
SELECT name AS 학생이름,
(SELECT major_title
FROM major b
WHERE b.major_id = a.major_id) AS 학과명
FROM student a;
인라인뷰 (FROM 절)
- SQL의 핵심
- FROM절에 사용되는 서브쿼리
- 동적 뷰 라고도 함
SELECT a.name as 학생이름, b.major_title as 학과명
FROM student a (
SELECT major_title, major_id
FROM major) b
WHERE a.major_id = b.major_id
SELECT *
FROM (SELECT major_id, count(*) cnt
FROM student
GROUP BY major_id)
EXISTS, NOT EXISTS
- 서브쿼리의 결과가 존재한다면 메인쿼리의 결과가 출력되는 문법
- EXISTS는 다른 방법으로 구현이 간으함
- EXISTS에서는 ON절 사용 불가
SELECT *
FROM student s
WHERE EXISTS (SELECT 1
FROM major_outer m
WHERE m.major_id = s.major_id);
SELECT *
FROM student s
WHERE NOT EXISTS (SELECT 1
FROM major_outer m
WHERE m.major_id = s.major_id);
비등가조인
- 조인을 할 때 꼭 등가 조인을 해야 하는 건 아니다.
- 특정 범위나 같지 다는 조건으로도 조인을 할 수 있다.
SELECT c.name, c.point, g.name
FROM customer c JOIN gift g
ON c.point between g.point_s and g.point_e
집합연산자
- 조인은 두개의 테이블을 하나로 반드는데, 좌우로 붙이는 개념이다.
- 집합 연산자는 ROW단위로, 데이터를 위아래로 붙이는 개념이다.
- 두 개 이상의 SELECT 결과를 하나로 만들어 준다.
- SELECT절의 컬럼수가 같아야 하고, 데이터타입의 호환이 되어야 한다.
1. UNION
UNION 연산자는 두 개 이상의 쿼리 결과를 결합하여 중복을 제거한 결과를 반환합니다. 모든 쿼리는 동일한 수의 열과 유사한 데이터 타입을 가져야 합니다.
SELECT column_name FROM table1
UNION
SELECT column_name FROM table2;
2. UNION ALL
UNION ALL은 UNION과 유사하지만, 중복된 행을 제거하지 않고 모든 결과를 반환합니다.
SELECT column_name FROM table1
UNION ALL
SELECT column_name FROM table2;
3. INTERSECT
INTERSECT 연산자는 두 쿼리에서 공통적으로 존재하는 행만을 반환합니다.
예시 코드:
SELECT column_name FROM table1
INTERSECT
SELECT column_name FROM table2;
4. EXCEPT 또는 MINUS
EXCEPT (또는 일부 데이터베이스 시스템에서는 MINUS)는 첫 번째 쿼리의 결과 중 두 번째 쿼리의 결과에 포함되지 않는 행만을 반환합니다.
예시 코드:
SELECT column_name FROM table1
EXCEPT
SELECT column_name FROM table2;
'SQL > SQLD' 카테고리의 다른 글
SQLD 대비 (12) - 윈도우함수, 옵티마이저 (1) | 2023.11.18 |
---|---|
SQLD 대비 (11) - 계층형 SQL, 집계함수 (1) | 2023.11.17 |
SQLD 대비 (9) - JOIN (0) | 2023.11.16 |
SQLD 대비 (8) - SQL 문법 및 라이브러리_3 (0) | 2023.11.14 |
SQLD 대비 (7) - SQL 문법 및 라이브러리_2 (0) | 2023.11.13 |