학생
학과
수강
교수
교과목
강좌
----// 기본SFW, LIKE, ORDER BY, 기본 조인
-- [질의 1] : 교수들의 이름과 재직년수를 검색하라.
-- 힌트) select절의 산술식
SELECT 이름, (2020-임용년도) AS "재직년수"
FROM 교수;
-- [질의 2] : 학생 '박광수'의 소속 학과명을 검색하라.(조인이용)
SELECT 학과.학과명
FROM 학생, 학과
WHERE 학생.학과번호 = 학과.학과번호 AND 학생.이름 = '박광수';
-- [질의 3] : 김모학생의 이름을 오름차순으로 출력하라.
SELECT 이름
FROM 학생
WHERE 이름 LIKE '김%'
ORDER BY 이름 ASC;
----// 집계함수, 부질의, 그룹, 집합연산
-- [질의 4] : 학번이 '01302-001'인 학생이 수강한 과목의 총 학점수를 출력라라.
SELECT SUM(교과목.학점수) AS "총 학점수"
FROM 교과목
WHERE 교과목.교과목번호 IN (SELECT 수강.교과목번호
FROM 수강, 학생
WHERE 학생.학번 = 수강.학번 AND 학생.학번 = '01302-001');
-- [질의 5] : 2019년 2학기에 개설된 강좌에 사용되는 강의실의 수를 검색하라.
-- 힌트) distinct
SELECT COUNT(DISTINCT 강의실) AS "강의실의 수"
FROM 강좌
WHERE 연도 = 2019 AND 학기 = 2;
-- [질의 6] : 학생의 총 인원수를 출력하라.
SELECT COUNT(학번) AS "총 인원수"
FROM 학생;
-- [질의 7] 2019년 2학기에 각 학생별로 수강한 총학점수를 구하라.
SELECT 학생.이름, 학생.학번, SUM(교과목.학점수) AS "총 학점수"
FROM 수강, 학생, 교과목
WHERE 교과목.교과목번호 = 수강.교과목번호 AND 수강.학번 = 학생.학번 AND 연도 = 2019 AND 학기 = 2
GROUP BY 학생.이름, 학생.학번;
-- [질의 8] 지금까지 두번 이상 강좌가 개설된 교과목의 번호와 지금까지의 수강인원의 합을 구하라.
SELECT 교과목번호,SUM(수강인원) AS "수강인원의 합"
FROM 강좌
GROUP BY 교과목번호 HAVING COUNT(교과목번호)>=2;
-- [질의 9] 학생 '박광수'의 소속 학과명을 검색하라.(부질의 이용)
SELECT 학과명
FROM 학과
WHERE 학과번호 = (SELECT 학과번호
FROM 학생
WHERE 이름 = '박광수');
-- [질의 10] 제일 어린 학생의 이름은?
SELECT 이름
FROM 학생
WHERE 나이 = (SELECT MIN(나이) FROM 학생);
-- [질의 11] 교수의 이름과 주소, 학생의 이름과 주소를 하나의 테이블로 출력하라.
-- 힌트) 합집합
SELECT 이름, 주소 FROM 교수
UNION
SELECT 이름, 주소 FROM 학생;
-- [질의 12] 화일처리를 수강하지 않은 전산과 2학년 학생을 찾아라
-- 힌트) 차집합
SELECT 학생.이름
FROM 학생,학과
WHERE 학생.학과번호 = 학과.학과번호 AND 학생.학년 = '2' AND 학과.학과명 = '전산과'
MINUS
SELECT 이름
FROM 수강, 학생
WHERE 수강.학번 = 학생.학번 AND 학생.학번 =( SELECT 학번
FROM 교과목, 수강
WHERE 교과목.교과목번호 = 수강.교과목번호 AND 교과목.교과목명 = '화일처리');
'Backend > Database' 카테고리의 다른 글
5장. PL/SQL 기초 (0) | 2020.10.27 |
---|---|
4장. SQL - DML(추가) (0) | 2020.10.27 |
오라클 클라이언트 (0) | 2020.09.21 |
오라클 외래키 관련 작업 (0) | 2020.09.17 |
오라클 데이터 타입 & BLOB, CLOB 활용 (0) | 2020.09.17 |