집합 연산자
SELECT ...
[UNION ALL | UNION | INTERSECT | MINUS]
SELECT ...
- 두 개의 SELECT 문의 결과를 집합 연산하여 출력한다.
- 두 개의 SELECT 문의 컬럼 개수와 데이터 타입이 일치해야 한다.
- 집합 연산자를 이용한 출력 값의 헤더는 첫 번째 SELECT문에 헤더로 결정된다.
- ORDER BY절은 두 SELECT문 뒤에 작성한다.(정렬할 컬럼을 컬럼명이 아닌 번호로 이용해야 한다.)
연산자 | 의미 | 결과 |
UNION | 합집합 | 검색된 결과의 합으로 중복이 제거됨. |
UNION ALL | 검색된 결과의 합으로 중복을 허용함. | |
INTERSECT | 교집합 | 양쪽 모두 포함한 결과만 검색함. |
MINUS | 차집합 | 첫 번째 SELECT문 결과에서 두 번째 SELECT문 결과를 제외한 나머지 값만 검색함. |
실습
1. 화학과 학생과 교수를 검색한다. (집합 연산자를 이용한다.)
SELECT sno 번호, sname 이름, major 학과
FROM student
WHERE major = '화학'
UNION ALL
SELECT pno, pname, section
FROM professor
WHERE section ='화학';
2. 정교수의 명단과 모델링이 업무인 직원의 이름, 입사일(부임일)을 검색한다.
SELECT pno 번호, pname 이름, hiredate 부임일_입사일
FROM professor
WHERE orders = '정교수'
UNION ALL
SELECT eno, ename, hdate
FROM emp
WHERE job = '모델링';
3. 과목 중에 개설되지 않은 과목을 검색한다.
SELECT cno 개설되지_않은_과목번호
FROM course
MINUS
SELECT cno
FROM score;
4. 모든 학생의 평점을 검색한다. 단 화학과 학생만 4.5 환산평점으로 검색한다.
SELECT sno 학번, sname 이름, major 학과, avr "평점(화학과 4.5만점)"
FROM student
WHERE major != '화학'
UNION
SELECT sno, sname, major, avr*4.5/4.0
FROM student
WHERE major = '화학';
2024.01.24 - [SQL] - SQL select - 실습1
SQL select - 실습1
실습 테이블 테이블 내용 테이블 내용 emp dept salgrade 사원 부서 급여등급 student professor course score scgrade 학생 교수 과목 기말고사점수 점수등급 테이블 상세 구조 emp(사원) dept(부서) salgrade(급여등
backendmaster.tistory.com
<테이블 정보>
'SQL' 카테고리의 다른 글
SQL select - 실습13 (0) | 2024.01.31 |
---|---|
SQL select - 실습12 (1) | 2024.01.31 |
SQL select - 실습10 (0) | 2024.01.31 |
SQL select - 실습9 (2) | 2024.01.30 |
SQL select - 실습8 (0) | 2024.01.30 |