UNION
명령은 여러 테이블의 SELECT 명령 결과를 하나의 테이블로 표현할 때 이용합니다.
유니온을 사용할 땐 몇 가지 규칙이 있는데 다음과 같습니다.
SELECT 구문
UNION
SELECT 구문;
(계속해서 UNION 사용가능)
본 예제와 같이 UNION만을 사용하는 경우에는 중복된 값이 있을경우 한 번만 보여줍니다. 하지만 중복된 결과라도 전부를 보여주고 싶다면 UNION 뒤에 ALL 구문을 붙여서 사용합니다.
UNION ALL
서브 쿼리
는 다른 쿼리문 내부에서 사용가능한 쿼리를 말합니다. JOIN처럼 여러 테이블을 결합해서 결과를 내는 것과 비슷한 동작을 하는데, 서브 쿼리
는 서브 쿼리 내부에서 다시 호출 될 수도 있고, 서브 쿼리 결과를 INSERT 하는 등의 동작은 JOIN으로 불가능 하기 때문에 서브 쿼리를 이용하는 것이 더 편한 경우도 존재합니다. 서브 쿼리를 포함한 쿼리는 외부 쿼리, 서브 쿼리는 내부 쿼리라고도 부릅니다. 서브 쿼리
는 사용할 때 소괄호()
로 감싸서 이용합니다.
서브 쿼리
를 모든 명령에서 이용할 수는 없고 SELECT, INSERT, UPDATE, DELETE, SET, DO 구문에서만 사용할 수 있습니다.
외부 쿼리 구문
(내부 쿼리 구문);
다음 예시는 교수 목록에서 'A'로 시작하는 이름을 가진 교수의 데이터를 출력하는 예시입니다.
SELECT * FROM professor_info.professors
WHERE name = (
SELECT name FROM professor_info.professors
WHERE name LIKE 'A%');
동작을 살펴보면, 소괄호로 감싸진 내부 쿼리가 우선적으로 실행되어 테이블을 가져오고 외부 쿼리가 그 다음으로 실행됩니다.