카테고리 없음

[SQL] 집합연산자

서초록 2021. 11. 10. 23:44

*집합연산자

- 집합 연산은 둘 이상의 SELECT문을 결합하는 것

- ORDER BY는 집합 연산을 적용한 최종 결과에 대한 정렬 : 맨 마지막 줄에 한 번만 기술함

 

* UNION ALL

SELECT PLAYER_NAME, BACK_NO, TEAM_ID
FROM PLAYER
WHERE TEAM_ID = 'K04'
UNION ALL
SELECT PLAYER_NAME,BACK_NO, TEAM_ID
FROM PLAYER
WHERE TEAM_ID = 'K06'
ORDER BY PLAYER_NAME;

 

- 이질적 성격의 데이터를 한꺼번에 출력하는 연산도 가능

SELECT 'T' 구분코드, PLAYER_NAME, TEAM_ID
FROM PLAYER
WHERE TEAM_ID = 'K06'
UNION ALL
SELECT 'P' 구분코드, PLAYER_NAME, POSITION
FROM PLAYER
WHERE POSITION = 'GK'
ORDER BY 구분코드, TEAM_ID;

- 대신 ORDER BY절에는 첫 번째 SELECT절에 있는 컬럼명을 사용해야함

  만약 ORDER BY 구분코드, POSITION이라고하면 에러남

 

INTERSECT

SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션
FROM PLAYER
WHERE TEAM_ID = 'K06'
INTERSECT
SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션
FROM PLAYER 
WHERE POSITION = 'GK'

- INTERSECT연산자는 IN, EXISTS 서브쿼리로도 표현 가능

- INTERSECT는 AND, UNION은 OR연산자로 표현 가능

 

*집합연산자에서 

ORDER BY는 맽 끝에 와야하고

ORDER BY에는 첫번째 SELECT문의 컬럼만 올 수 있고

ALIAS가 있으면 반드시 별칭으로 써야함