- 중복해서 안 만는다. 변경에 대처하기 힘들다.
- 연관관계를 가지게 테이블을 두개로 만든다.
- 다른 테이블에 참조하는 키를 FK
- 내 테이블에서 행을 유일하게 결정하는 키 PK
1. 서브쿼리 (where)
-- DALLAS 사는 직원을 출력해주세요.
select *
from emp
where deptno = 20;
select deptno
from dept
where LOC = 'DALLAS';
select *
from emp
where deptno = (select deptno
from dept
where LOC = 'DALLAS');-- research 부서의 직원을 출력해주세요.
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, position
from professor
where profno = (select profno
from student
where name = '김재수'
);2. 인 라인뷰 (from 절에 들어가는 subquery)
select ename, sal*12 '연봉'
from emp
where 연봉 = 9600;
select *
from (
select ename, sal*12 '연봉'
from emp
) e
where 연봉 = 9600;
select *
from
(
select avg(sal) 'avg_sal'
from emp
group by deptno
) e
where e.avg_sal < 2000;3. 스칼라 서브쿼리 (select 절에 있는 서브쿼리)
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;Share article