본문 바로가기
Language/MySQL

SQL 집합 연산자

by Mesut Özil 2023. 12. 29.

SQL 집합 연산자

  1. UNION: 두 집합의 합집합을 반환, (중복 값 X)
  2. UNION ALL: 두 집합의 합집합을 반환, (중복 값 O)
  3. INTERSECT: 두 집합의 교집합을 반환
  4. EXCEPT: 첫 번째 집합에서 두 번째 집합을 제외한 차집합을 반환
  5. INNER JOIN(JOIN): 두 테이블 간의 일치하는 행연결

 

1. UNION (중복 X 합집합)

  • 두 집합의 합집합을 반환, (중복 값 X)
# table 1       # table 2
+------+        +------+
| nums |        | nums |
+------+        +------+
| 1    |        | 3    |
| 2    |        | 4    |
| 3    |        | 5    |
+------+        +------+

# 합집합 쿼리
SELECT nums FROM table1
UNION
SELECT nums FROM table2;

# 결과
+------+
| nums |
+------+
| 1    |
| 2    |
| 3    |
| 4    |
| 5    |
+------+

 

2. UNION ALL (중복 O 합집합)

  • 두 집합의 합집합을 반환, (중복 값 O)
# table 1       # table 2
+------+        +------+
| nums |        | nums |
+------+        +------+
| 1    |        | 3    |
| 2    |        | 4    |
| 3    |        | 5    |
+------+        +------+

# 중복 허용 합집합 쿼리
SELECT nums FROM table1
UNION ALL
SELECT nums FROM table2;

# 결과
+------+
| nums |
+------+
| 1    |
| 2    |
| 3    |
| 3    |
| 4    |
| 5    |
+------+

 

3. INTERSECT (교집합)

  • 두 집합의 교집합을 반환
# table 1       # table 2
+------+        +------+
| nums |        | nums |
+------+        +------+
| 1    |        | 3    |
| 2    |        | 4    |
| 3    |        | 5    |
+------+        +------+

# 교집합 쿼리
SELECT nums FROM table1
INTERSECT
SELECT nums FROM table2;

# 결과
+------+
| nums |
+------+
| 3    |
+------+

 

4. EXCEPT (차집합)

  • 첫 번째 집합에서 두 번째 집합을 제외한 차집합을 반환
# table 1       # table 2
+------+        +------+
| nums |        | nums |
+------+        +------+
| 1    |        | 3    |
| 2    |        | 4    |
| 3    |        | 5    |
+------+        +------+

# 차집합 쿼리
SELECT nums FROM table1
EXCEPT
SELECT nums FROM table2;

# 결과
+------+
| nums |
+------+
| 1    |
| 2    |
+------+

 

5. INNER JOIN (JOIN)

  • 두 테이블 간의 일치하는 행 연결
  • INNER JOIN JOIN으로 생략하여 사용하기도 합니다.
  • 'ON E.DepartmentID = D.DepartmentID''USING (DepartmentID)' 동일
# Employee 테이블
+----+--------+--------+--------------+
| ID |  Name  | Salary | DepartmentID |
+----+--------+--------+--------------+
| 1  | Alice  | 50000  | 1            |
| 2  | Bob    | 60000  | 2            |
| 3  | Chris  | 70000  | 1            |
+----+--------+--------+--------------+

# Department 테이블
+--------------+----------------+
| DepartmentID | DepartmentName |
+--------------+----------------+
| 1            | HR             |
| 2            | Finance        |
+--------------+----------------+

# INNER JOIN 쿼리
SELECT E.ID, E.Name, E.Salary, D.DepartmentName
FROM Employee AS E
	 JOIN Department AS D ON E.DepartmentID = D.DepartmentID;
   	# JOIN Department AS D USING (DepartmentID); (위와 동일 코드)

# 결과
+----+--------+--------+----------------+
| ID |  Name  | Salary | DepartmentName |
+----+--------+--------+----------------+
| 1  | Alice  | 50000  | HR             |
| 2  | Bob    | 60000  | Finance        |
| 3  | Chris  | 70000  | HR             |
+----+--------+--------+----------------+

 

 

 

본 게시글은 ChatGPT의 도움을 받아 작성하였습니다.

'Language > MySQL' 카테고리의 다른 글

CONCAT 함수  (0) 2024.01.05
재귀 함수  (0) 2024.01.04
DataBase (데이터베이스)  (2) 2024.01.03
REGEXP (정규 표현식)  (2) 2024.01.02
SQL문 기본 구조  (0) 2023.12.25