UNION
- 여러 쿼리문들을 합쳐서 하나의 쿼리문으로 만듦
- 새로운 행으로 결합 (수직 결합)
- 중복된 값 제거하고 보여줌
- 중복된 값을 제거하는 연산이 추가로 수행되기 때문에 UNION ALL보다 속도가 느림
UNION ALL
- UNION과 동일하게 여러 쿼리문들을 합쳐서 하나의 쿼리문으로 만들어주는 방법
- 중복된 값을 모두 보여줌
UNION, UNION ALL Example
[TBL_USER1] 테이블에 담긴 데이터
ID | NAME | AGE |
1 | 피카츄 | 20 |
2 | 라이츄 | 20 |
[TBL_USER2] 테이블에 담긴 데이터
ID | NAME | AGE |
2 | 라이츄 | 20 |
3 | 파이리 | 20 |
UNION
SELECT ID, NAME, AGE FROM TBL_USER1
UNION
SELECT ID, NAME, AGE FROM TBL_USER2
UNION 실행 결과
ID | NAME | AGE |
1 | 피카츄 | 20 |
2 | 라이츄 | 20 |
3 | 파이리 | 20 |
UNION ALL
SELECT ID, NAME, AGE FROM TBL_USER1
UNION ALL
SELECT ID, NAME, AGE FROM TBL_USER2
UNION ALL 실행 결과
ID | NAME | AGE |
1 | 피카츄 | 20 |
2 | 라이츄 | 20 |
2 | 라이츄 | 20 |
3 | 파이리 | 20 |
JOIN
새로운 열로 결합 (수평 결합)
INNER JOIN
테이블 간의 교집합
LEFT OUTER JOIN
LEFT를 포함한 테이블 간의 교집합
UNION, UNION ALL Example
<학생>
학번(PK) | 이름 | 학과 번호 |
20190001 | 홍길동 | 00001 |
20190002 | 김영희 | 00002 |
20190003 | 최민수 | 00003 |
20190004 | 이철수 | 00004 |
20190005 | 안규태 | null |
<학과>
학과 번호 (PK), (FK) | 학과명 | 학과장 이름 |
00001 | 국어국문학과 | 이종원 |
00002 | 컴퓨터공학과 | 이민희 |
00003 | 영어영문학과 | 김문호 |
00004 | 전자공학과 | 박상종 |
INNER JOIN
SELECT * FROM 학생 INNER JOIN 학과 ON 학생.학과번호 = 학과.학과번호
학번 | 이름 | 학과 번호 | 학과 번호 | 학과명 | 학과장 이름 |
20190001 | 홍길동 | 00001 | 00001 | 국어국문학과 | 이종원 |
20190002 | 김영희 | 00002 | 00002 | 컴퓨터공학과 | 이민희 |
20190003 | 최민수 | 00003 | 00003 | 영어영문학과 | 김문호 |
20190004 | 이철수 | 00004 | 00004 | 전자공학과 | 박상종 |
JOIN (INNER JOIN): 양쪽 테이블에서 조건을 만족하는 행들만 결과로 반환함
LEFT OUTER JOIN
SELECT * FROM 학생 LEFT JOIN 학과 ON 학생.학과번호 = 학과.학과번호;
학번 | 이름 | 학과 번호 | 학과 번호 | 학과명 | 학과장 이름 |
20190001 | 홍길동 | 00001 | 00001 | 국어국문학과 | 이종원 |
20190002 | 김영희 | 00002 | 00002 | 컴퓨터공학과 | 이민희 |
20190003 | 최민수 | 00003 | 00003 | 영어영문학과 | 김문호 |
20190004 | 이철수 | 00004 | 00004 | 전자공학과 | 박상종 |
20190005 | 안규태 | null | null | null | null |
LEFT JOIN: 테이블의 모든 행을 반환하고, 오른쪽 테이블에서 조건을 만족하는 행을 추가로 결합 함.
만약 오른쪽 테이블에 일치하는 행이 없다면, 그 열들은 'NULL'로 채워져 반환 됨
출처
1. https://m.blog.naver.com/seek316/222087392571 - UNION, UNION ALL
2. https://blog.naver.com/gluestuck/221668750271 - INNER JOIN
'TIL' 카테고리의 다른 글
[TIL/Docker] Host 포트와 Container 포트란? (0) | 2024.09.30 |
---|---|
[TIL] 데이터(data)와 정보(information)의 차이 (0) | 2024.09.30 |
[TIL] UI vs API (0) | 2024.09.08 |
[TIL] 버퍼를 사용하는 이유 (1) | 2024.09.06 |
[TIL/SQL] varchar와 nvarchar의 차이 (1) | 2024.09.01 |