쌓고 쌓다

오라클 중심의 SQL 배움터 8장 연습문제 풀이 본문

프로그래밍/SQL

오라클 중심의 SQL 배움터 8장 연습문제 풀이

승민아 2022. 11. 10. 20:37

3번 - EQUI JOIN의 3가지 방법을 이용하여

소속학과이름과 학생 이름을 학과 이름, 학생 이름순으로 정렬하여 출력

 

4번 - OUTER JOIN의 2가지 방법을 이용해 101번 학과에 소속된 학생들의 지도 교수 이름을 출력.

(단, 지도 교수가 배정되지 않은 학생도 함께 출력)

 

5번 - 부서 테이블에서 각 부서의 상위 부서 이름을 출력

 

6번 - 공과대학에 소속된 학부와 학과 이름을 출력

 

7번 - 각 학과에 소속된 학과명, 학생명, 교수명을 모두 출력

 

8번 - 모든 학생의 이름, 지도 교수 이름, 학과 이름을 출력

 

 

9번 - 교수별로 교수 이름과 지도 학생 수를 출력

 

 

풀이 코드

(3)

--WHERE
SELECT d.dname,s.name
FROM student s, department d
WHERE s.deptno=d.deptno
ORDER BY d.dname, s.name;

--NATURAL JOIN
SELECT d.dname, s.name
FROM student s NATURAL JOIN department d ORDER BY d.dname, s.name;

-- JOIN USING
SELECT d.dname, s.name
FROM student s JOIN department d USING (deptno) ORDER BY d.dname, s.name;

 

(4)

SELECT s.deptno, s.name, p.name
FROM student s, professor p
WHERE s.profno=p.profno(+)
AND s.deptno=101;

SELECT s.deptno, s.name, p.name
FROM student s LEFT OUTER JOIN professor p
ON s.profno=p.profno
WHERE s.deptno=101;

 

(5)

SELECT d.dname || '의 소속은 ' || org.dname
FROM department d, department org
WHERE d.college=org.deptno;

 

(6)

SELECT c.dname
FROM department c, department p
WHERE c.college=p.deptno AND p.dname LIKE '공과대학';

 

(7)

SELECT d.dnaㄴme "학과명", s.name "학생명", p.name "교수명"
FROM department d, student s, professor p
WHERE s.deptno=d.deptno AND p.profno = s.profno;

 

(8)

SELECT s.name, p.name, d.dname
FROM student s, professor p, department d
WHERE s.profno=p.profno(+) AND s.deptno=d.deptno;

 

(9)

SELECT p.name, COUNT(*)
FROM professor p, student s
WHERE p.profno=s.profno
GROUP BY p.name;
Comments