profile image

L o a d i n g . . .

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

복사했습니다!