본문 바로가기
SQL

SQL select - 실습11

by hj_it 2024. 1. 31.
집합 연산자
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