본문 바로가기

Computer Science/SQL

SQL 정리-(4)


  • 쿼리 결합하기
여러 쿼리를 수행하여 하나의 결과로 가져올 수 있는데 이런 결합 쿼리를 집합(Union) 쿼리나 복합(Compound) 쿼리라 함 


기본적인 결합 쿼리를 사용하는 경우는 여러 테이블에 있는 비슷한 구조의 데이터를 하나의 쿼리로 가져오는 경우, 한 개의 테이블에서 여러 개의 쿼리를 수행하고, 하나의 결과로 가져오는 경우이다. 


* UNION 사용 하기

각각 SELECT 문 사이에 UNION 키워드를 사용 


SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_state IN ('IL', 'IN', 'MI');


SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_name = 'FUN4ALL';


첫 번째 SELECT는 IN 절에서 IL, IN, MI에 있는 행을 가져오고 두 번째는 고객명이 FUN4ALL인 모든 행을 가져오기 


이 두 문장을 결합하면 다음과 같이 됨


SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_state IN ('IL','IN','MI') UNION SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_name = 'FUN4ALL';


* UNION 규칙 


- UNION은 반드시 두 개 이상의 SELECT 구문으로 구성되어야 하며, 각 구문은 UNION이라는 키워드로 구분해야 함 

- UNION에서 각 쿼리는 같은 컬럼이나 수식, 그룹 함수를 가져야 함

- 컬럼 데이터형은 호환될 수 있음. 정확히 같은 데이터형일 필요는 없지만 DBMS가 내부적으로 변환할 수 있어야 함 


* 중복 행 포함하기와 제거하기 


UNION은 쿼리 결과에서 자동으로 중복 행을 제거 

만약 중복되는 행을 포함해서 모든 행을 가져오고 싶으면, UNION ALL을 사용하면 됨 


* 결합 쿼리 결과 정렬하기 

ORDER BY 절을 사용하여 SELECT 구문의 결과를 정렬할 수 있음 

UNION으로 쿼리를 결합할 때에는 마지막 하나의 ORDER BY 절 사용 가능 


SELECT cust_name, cust_contact, cust_email FROM Cstomers WHERE cust_state IN ('IL','IN','IM') UNION SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_name = 'FUN4ALL' ORDER BY cust_name, cust_contact;



반응형

'Computer Science > SQL' 카테고리의 다른 글

SQL 정리-(5)  (0) 2018.11.28
SQL 정리-(3)  (0) 2018.11.26
SQL 정리-(2)  (0) 2018.11.22
SQL 정리-(1)  (0) 2018.11.22