데이터베이스/SQL
SQL 서브쿼리 사용하여 쿼리문 다루기
ADELA_J
2024. 9. 19. 22:30
요즘 서브쿼리 쓸일이 계속 생기길래,,, 기초다시 한번 훑어보기
- 서브쿼리를 사용하여 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 이 해당 사원이 속한 부서 번호의 평균 월급보다 크면 삭제하도록 하는
> 같은 테이블 내에서 일어날때는 별칭 사용해서 해아함