데이터베이스 작업에서 여러 테이블의 결과를 하나로 합쳐야 하는 경우가 종종 발생합니다. 이때 유용하게 사용할 수 있는 SQL 기능이 바로 UNION입니다. UNION을 사용하면 여러 SELECT 쿼리의 결과를 하나의 결과 집합으로 통합할 수 있습니다. 이번 포스팅에서는 SQL UNION에 대해 상세하고 이해하기 쉽게 설명하겠습니다.
1. UNION의 기본 개념
UNION 연산자는 두 개 이상의 SELECT 문을 결합하여 하나의 결과 집합으로 반환합니다. 각 SELECT 문은 동일한 수의 열을 가져야 하며, 열의 데이터 유형도 호환 가능해야 합니다.
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;
위의 예제는 table1과 table2에서 column1과 column2를 선택하여 결과를 하나의 결과 집합으로 결합합니다.
2. UNION과 UNION ALL의 차이점
- UNION: 기본적으로 중복된 결과를 제거합니다.
- UNION ALL: 중복된 결과도 모두 포함합니다.
-- 중복 제거
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;
-- 중복 포함
SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2;
3. UNION 사용 예제
예제 테이블
우선, 예제 데이터를 저장할 두 개의 테이블을 준비합니다.
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50)
);
CREATE TABLE contractors (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50)
);
INSERT INTO employees (name, department) VALUES
('Alice', 'HR'),
('Bob', 'Engineering');
INSERT INTO contractors (name, department) VALUES
('Charlie', 'Engineering'),
('Dave', 'HR');
기본 UNION 사용
두 테이블의 데이터를 통합하여 하나의 결과 집합으로 반환합니다.
SELECT name, department FROM employees
UNION
SELECT name, department FROM contractors;
이 쿼리는 employees와 contractors 테이블의 name과 department를 결합하여 결과를 반환합니다. 중복된 데이터가 있을 경우 제거됩니다.
UNION ALL 사용
중복된 데이터를 포함하여 모든 결과를 반환합니다.
SELECT name, department FROM employees
UNION ALL
SELECT name, department FROM contractors;
이 쿼리는 중복된 데이터를 포함하여 두 테이블의 모든 결과를 반환합니다.
4. 조건을 사용한 UNION
각 SELECT 문에 조건을 적용하여 더 구체적인 결과를 얻을 수 있습니다.
SELECT name, department FROM employees WHERE department = 'Engineering'
UNION
SELECT name, department FROM contractors WHERE department = 'Engineering';
이 쿼리는 Engineering 부서의 직원과 계약직원만을 결합하여 결과를 반환합니다.
5. ORDER BY와 LIMIT 사용
UNION 결과를 정렬하거나 제한을 적용할 수 있습니다. 단, ORDER BY와 LIMIT는 마지막 SELECT 문 뒤에 위치해야 합니다.
(SELECT name, department FROM employees)
UNION
(SELECT name, department FROM contractors)
ORDER BY name
LIMIT 5;
이 쿼리는 결과를 name 컬럼 기준으로 정렬하고 상위 5개 결과만 반환합니다.
결론
SQL UNION 연산자는 여러 SELECT 쿼리의 결과를 결합하여 하나의 결과 집합으로 반환하는 데 매우 유용한 기능입니다. UNION과 UNION ALL의 차이를 이해하고 적절하게 활용하면 데이터베이스 작업을 보다 효율적으로 수행할 수 있습니다. 이번 포스팅을 통해 UNION을 효과적으로 사용하는 방법을 익히고, 다양한 상황에서 활용해보세요!
'IT 정보' 카테고리의 다른 글
그누보드에서 PHP로 친구 신청 시스템 만들기 (0) | 2024.06.16 |
---|---|
토드(TOAD) 사용법 안내 (0) | 2024.06.11 |
개발자들이 자주 사용하는 SQL 쿼리문 모음 (0) | 2024.06.11 |
PHP로 간단한 페이징 처리 구현하기 (0) | 2024.06.11 |
MySQL DB 테이블 관리 및 다양한 PHP 팁 (0) | 2024.06.11 |