[데이터베이스] 73. SubQuery

서회정's avatar
Feb 26, 2025
[데이터베이스] 73. SubQuery

📌
서브쿼리 종류 3가지
  • 1. 서브쿼리 (where)
  • 2. 인라인뷰 (from절에 들어가는 subquery)
  • 3. 스칼라 서브쿼리 (select절에 있는 subquery)
 

1. 서브쿼리 (where)

-- 1. 서브쿼리 (where) -- 중복해서 만들지 않는다. 변경에 대처하기 힘들다. -- 연관관계를 가지게 테이블을 두개로 만든다. -- (다른 테이블을 참조하는 키를 FK(참조키)) -- (내 테이블에서 행을 유일하게 결정하는 키 PK) -- RDB - Relation DataBase -- DALLAS에 사는 직원을 출력해주세요. select * from emp where deptno = 20; select deptno from dept where loc = 'DALLAS'; -- where절에 들어가는 것, () -- 실행된 return값이 들어가는 것 select * from emp where deptno = (select deptno from dept where loc = 'DALLAS'); -- 리서치부서 인간들 찾기 select * from dept; select * from emp where deptno = 20; select deptno from dept where DNAME = 'RESEARCH'; select * from emp where deptno = (select deptno from dept where DNAME = 'RESEARCH'); -- 김재수의 교수님 이름과 이메일 찾기 select profno from student where name = '김재수'; select name, email from professor where profno = ( select profno from student where name = '김재수');

2. 인라인뷰 (from절에 들어가는 subquery)

-- 2. 인라인뷰 (from절에 들어가는 subquery) select ename, sal*12 '연봉' from emp where 연봉 = 9600; select e.* from ( select ename, sal*12 '연봉' from emp ) e -- >e라고 하는 테이블로 지정, 별칭임 where e.연봉 = 9600; -- 예제) 2000보다 작은 연봉 찾기 select * from ( select avg(sal) 'avg_sal' from emp group by deptno ) e where e.avg_sal < 2000;
 

3. 스칼라 서브쿼리 (select절에 있는 subquery)

-- 3. 스칼라 서브쿼리 (select절에 있는 subquery) select * from dept; select * from emp order by deptno; select d.deptno, d.dname, d.loc,(select count(*) from emp where deptno = d.deptno) '직원수' from dept d; select count(*) from emp where deptno = 10;
📌
데이터를 찾는 순서, 연산을 추적하여 그림으로 그려 이해할 수 있다.
notion image
Share article

clubnerdy