Teradata-SET 연산자
SET 연산자는 여러 SELECT 문의 결과를 결합합니다. 조인과 비슷해 보이지만 조인은 여러 테이블의 열을 결합하는 반면 SET 연산자는 여러 행의 행을 결합합니다.
규칙
- 각 SELECT 문의 열 수는 동일해야합니다. 
- 각 SELECT의 데이터 유형은 호환 가능해야합니다. 
- ORDER BY는 최종 SELECT 문에만 포함되어야합니다. 
노동 조합
UNION 문은 여러 SELECT 문의 결과를 결합하는 데 사용됩니다. 중복을 무시합니다.
통사론
다음은 UNION 문의 기본 구문입니다.
SELECT col1, col2, col3… 
FROM  
<table 1> 
[WHERE condition] 
UNION  
SELECT col1, col2, col3… 
FROM  
<table 2> 
[WHERE condition];예
다음 직원 테이블 및 급여 테이블을 고려하십시오.
| 직원 아니요 | 이름 | 성 | JoinedDate | 부서 번호 | 생일 | 
|---|---|---|---|---|---|
| 101 | 마이크 | 제임스 | 2005 년 3 월 27 일 | 1 | 1980 년 1 월 5 일 | 
| 102 | 로버트 | 윌리엄스 | 2007 년 4 월 25 일 | 2 | 1983 년 3 월 5 일 | 
| 103 | 베드로 | 폴 | 2007 년 3 월 21 일 | 2 | 1983 년 4 월 1 일 | 
| 104 | 알렉스 | 스튜어트 | 2008 년 2 월 1 일 | 2 | 1984 년 11 월 6 일 | 
| 105 | 로버트 | 제임스 | 2008 년 1 월 4 일 | 삼 | 1984 년 12 월 1 일 | 
| 직원 아니요 | 심한 | 공제 | 순이익 | 
|---|---|---|---|
| 101 | 40,000 | 4,000 | 36,000 | 
| 102 | 80,000 | 6,000 | 74,000 | 
| 103 | 90,000 | 7,000 | 83,000 | 
| 104 | 75,000 | 5,000 | 70,000 | 
다음 UNION 쿼리는 Employee 및 Salary 테이블의 EmployeeNo 값을 결합합니다.
SELECT EmployeeNo 
FROM  
Employee 
UNION 
SELECT EmployeeNo 
FROM  
Salary;쿼리가 실행되면 다음과 같은 출력이 생성됩니다.
EmployeeNo 
----------- 
   101 
   102 
   103 
   104 
   105UNION ALL
UNION ALL 문은 UNION과 유사하며 중복 행을 포함하여 여러 테이블의 결과를 결합합니다.
통사론
다음은 UNION ALL 문의 기본 구문입니다.
SELECT col1, col2, col3… 
FROM  
<table 1> 
[WHERE condition] 
UNION ALL 
SELECT col1, col2, col3…
FROM  
<table 2> 
[WHERE condition];예
다음은 UNION ALL 문의 예입니다.
SELECT EmployeeNo 
FROM  
Employee 
UNION ALL 
SELECT EmployeeNo 
FROM  
Salary;위 쿼리가 실행되면 다음과 같은 출력이 생성됩니다. 중복도 반환하는 것을 볼 수 있습니다.
EmployeeNo 
----------- 
    101 
    104 
    102 
    105 
    103 
    101 
    104 
    102 
    103교차
INTERSECT 명령은 여러 SELECT 문의 결과를 결합하는데도 사용됩니다. 두 번째 SELECT 문에서 일치하는 항목이있는 첫 번째 SELECT 문에서 행을 반환합니다. 즉, 두 SELECT 문에있는 행을 반환합니다.
통사론
다음은 INTERSECT 문의 기본 구문입니다.
SELECT col1, col2, col3… 
FROM  
<table 1>
[WHERE condition] 
INTERSECT 
SELECT col1, col2, col3… 
FROM  
<table 2> 
[WHERE condition];예
다음은 INTERSECT 문의 예입니다. 두 테이블에 모두 존재하는 EmployeeNo 값을 반환합니다.
SELECT EmployeeNo 
FROM  
Employee 
INTERSECT 
SELECT EmployeeNo 
FROM  
Salary;위 쿼리를 실행하면 다음과 같은 레코드를 반환합니다. EmployeeNo 105는 SALARY 테이블에 존재하지 않으므로 제외됩니다.
EmployeeNo 
----------- 
   101 
   104 
   102 
   103빼기 / 제외
MINUS / EXCEPT 명령은 여러 테이블의 행을 결합하고 첫 번째 SELECT에는 있지만 두 번째 SELECT에는없는 행을 반환합니다. 둘 다 동일한 결과를 반환합니다.
통사론
다음은 MINUS 문의 기본 구문입니다.
SELECT col1, col2, col3… 
FROM  
<table 1> 
[WHERE condition] 
MINUS 
SELECT col1, col2, col3… 
FROM  
<table 2> 
[WHERE condition];예
다음은 MINUS 문의 예입니다.
SELECT EmployeeNo 
FROM  
Employee 
MINUS 
SELECT EmployeeNo 
FROM  
Salary;이 쿼리가 실행되면 다음 레코드를 반환합니다.
EmployeeNo 
----------- 
   105