본문 바로가기
SQL

SQL select - 실습9

by hj_it 2024. 1. 30.
서브 쿼리

- sql문에 select문이 포함되는 것을 말한다.

- 서브 쿼리의 종류

    . 단일 행 서브 쿼리

    . 다중 행 서브 쿼리

    . 다중 열 서브 쿼리

- 서브 쿼리는 응용 프로그램보다 성능이나 비용 면에서 월등히 좋다.

 

단일 행 서브 쿼리
SELECT 컬럼 ...
FROM  테이블
WHERE 컬럼 단일_행_연산자 (SELECT 문장 : Sub query문)
......;

- 단일 행 연산자가 사용되므로 서브 쿼리 문의 결과 값이 반드시 하나의 값만 나와야 한다.

- 서브 쿼리는 괄호로 묶어서 사용해야 한다.

- 단일 행 연산자 종류

   . =, <, >, <=, >=, !=

 

- 문제점

   . 서브쿼리의 출력 값이 1개 일지 예측 할 수 없는 경우

    → 다중 행 서브쿼리 사용

 

 

실습

1. 김혁윤 보다 평점이 우수한 학생의 학번과 이름을 검색한다.

SELECT sno||'   '||sname||'     '||avr "김혁윤보다 평점이 우수한 학생 목록"
FROM student
WHERE avr > (SELECT avr
             FROM student
             WHERE sname = '김혁윤');

2. 권현와 동일한 학년 학생 중에 평점이 강은혜와 동일한 학생을 검색한다.

SELECT syear||'   '||sno||'   '||sname||'   '||avr "권현과 동일한 학년이고 강은혜와 평점이 동일한 학생 목록"
FROM student
WHERE syear = (SELECT syear FROM student WHERE sname='권현')
AND avr = (SELECT avr FROM student WHERE sname='강은혜');

3. 이학수학 과목과 동일한 학점수인 과목을 검색한다.

SELECT cno||'   '||cname||'   '||st_num "이학수학과 동일한 학점수인 과목 목록"
FROM course
WHERE st_num = (SELECT st_num FROM course WHERE cname='이학수학');

4. 타 학과에 송강 교수와 동일한 지위의 교수 명단을 검색한다.

SELECT pno||'   '||pname||'   '||section||'   '||orders "타 학과에 송강 교수와 동일한 지위인 교수 명단"
FROM professor
WHERE section != (SELECT section FROM professor WHERE pname = '송강')
AND orders = (SELECT orders FROM professor WHERE pname = '송강');

5. 제갈민의 입사일 보다 늦게 부임한 교수의 명단을 검색한다.

SELECT pno||'   '||pname||'   '||hiredate "제갈민의 입사일보다 늦게 부임한 교수 명단"
FROM professor
WHERE hiredate > (SELECT hdate FROM emp WHERE ename = '제갈민');

6. 강태용보다 일반 화학 과목의 학점이 더 낮은 학생의 명단을 학점과 검색한다.

SELECT st.sno||'   '||sname||'   '||cname||'   '||grade "강태용의 일반화학보다 학점이 낮은 학생명단"
FROM student st, scgrade g, course c, score sc
WHERE st.sno = sc.sno AND c.cno = sc.cno AND result BETWEEN loscore AND hiscore
AND grade > (SELECT grade FROM student st, scgrade g, course c, score sc 
             WHERE st.sno = sc.sno AND c.cno = sc.cno 
             AND result BETWEEN loscore AND hiscore
             AND sname = '강태용' AND cname = '일반화학');

7. 양선호의 입사일보다 빨리 부임한 교수의 명단을 검색한다.

SELECT pno||'   '||pname||'   '||hiredate "양선호의 입사일보다 빨리 부임한 교수 명단"
FROM professor
WHERE hiredate < (SELECT hdate FROM emp WHERE ename = '양선호');

 

 

 

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 - 실습11  (0) 2024.01.31
SQL select - 실습10  (0) 2024.01.31
SQL select - 실습8  (0) 2024.01.30
SQL select - 실습7  (0) 2024.01.30
SQL select - 실습6  (1) 2024.01.29