본문 바로가기
데이터베이스/SQL

SQL 서브쿼리 사용하여 쿼리문 다루기

by ADELA_J 2024. 9. 19.

요즘 서브쿼리 쓸일이 계속 생기길래,,, 기초다시 한번 훑어보기

 

 

- 서브쿼리를 사용하여 insert 를 여러개 동시에 해보기

INSERT INTO emp2(empno, ename, sal, deptno)
    SELECT empno, ename, sal, deptno
        FROM emp
        WHERE deptno=10;

 

> deptno 가 10인 emp의 테이블 내 데이터가 emp2에 insert into 된다

> insert into는 하나씩 입력되었지만 여러개의 행을 동시에 넣고 싶다면 이렇게 서브쿼리를 이용해서

where 조건문을 사용해 동시에 넣을 수 있움

 

- 서브쿼리를 사용해 데이터 수정하는 법

UPDATE emp
    SET sal = (SELECT sal
                FROM emp
                WHERE ename='ALLEN')
WHERE job = 'SALESMAN';

 

> 직업이 SALESMAN인 사람을 WHERE 절로 조건을 걸어주고

> 서브쿼리를 사용하여 emp의 ALLEN이 이름인 sal를 조회한 후에

> 그거를 emp 의 sal 로 모두 업데이트 해줌

UPDATE emp
SET (sal, comm) = (SELECT sal, comm FROM emp WHERE ename='ALLEN')
WHERE ename='SCOTT';

 

> 물론 여러개 컬럼값을 동시에도 가능

 

- 서브쿼리 사용해서 데이터 삭제하기

DELETE FROM emp
WHERE sal > (SELECT sal FROM emp WHERE ename='SCOTT');

> 서브쿼리 사용해서 SCOTT의 이름을 가진 사람의 sal를 조회해서

> 그것보다 큰 sal의 데이터를 emp 테이블에서 삭제

 

DELETE FROM emp m
WHERE sal > (SELECT avg(sal) FROM emp s WHERE s.deptno = m.deptno);

 

> sal 이 해당 사원이 속한 부서 번호의 평균 월급보다 크면 삭제하도록 하는

> 같은 테이블 내에서 일어날때는 별칭 사용해서 해아함