반응형

서브쿼리 6

[Oracle] DML(6) - 서브쿼리를 활용한 UPDATE

이 게시물은 Database GUI Oracle SQL Developer의 아래 버전 정보를 기준으로 작성되었습니다. Java(TM) 플랫폼 : 1.8.0_321 Oracle IDE : 4.1.5.21.78 서브쿼리를 활용한 UPDATE 아래 테이블이 없다면 여기를 클릭하여 테이블을 생성하고 돌아오자. SELECT * FROM TB_DEPT2; (1) 서브쿼리를 활용한 단일열 UPDATE 예시 UPDATE TB_DEPT2 SET DNAME = (SELECT DNAME FROM DEPT WHERE DEPTNO = 30) , LOC = (SELECT LOC FROM DEPT WHERE DEPTNO = 20) WHERE DEPTNO = 10; SELECT * FROM TB_DEPT2; -- 결과 확인 결과 (..

[Oracle] DML(4) - 서브쿼리를 활용한 다중 INSERT

이 게시물은 Database GUI Oracle SQL Developer의 아래 버전 정보를 기준으로 작성되었습니다. Java(TM) 플랫폼 : 1.8.0_321 Oracle IDE : 4.1.5.21.78 서브쿼리를 활용한 다중 INSERT 아래의 테이블이 없으면 여기를 클릭하여 테이블을 생성하고 돌아오자. SELECT * FROM TB_EMP; 초반 포스트에서 학습용으로 사용한 테이블을 활용해 여러 개의 데이터를 삽입해 보자. 아래의 쿼리문을 실행해 보자. SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM, E.DEPTNO FROM EMP E, SALGRADE S WHERE JOB = 'CLERK' AND E.SAL BETWEEN S...

[Oracle] 서브쿼리(4) - 다중열 서브쿼리를 통한 WHERE절 비교

이 게시물은 Database GUI Oracle SQL Developer의 아래 버전 정보를 기준으로 작성되었습니다. Java(TM) 플랫폼 : 1.8.0_321 Oracle IDE : 4.1.5.21.78 다중열 서브쿼리를 통한 WHERE절 비교 설명 SELECT절에 비교할 데이터를 여러 개 지정하는 방식. 메인쿼리에 비교할 열을 괄호로 묶어 명시하고 서브쿼리에서는 괄호로 묶은 데이터와 같은 자료형 데이터를 SELECT절에 명시하여 사용함. 사용 예시 SELECT * FROM EMP WHERE (DEPTNO, SAL) IN ( SELECT DEPTNO, MAX(SAL) FROM EMP GROUP BY DEPTNO); 결과

[Oracle] 서브쿼리(2) - 단일행 서브쿼리

이 게시물은 Database GUI Oracle SQL Developer의 아래 버전 정보를 기준으로 작성되었습니다. Java(TM) 플랫폼 : 1.8.0_321 Oracle IDE : 4.1.5.21.78 단일행 서브쿼리 이전 포스트에서 SCOTT보다 봉급이 높은 직원을 구하는 서브쿼리를 실행해 보았다. 하지만 이 쿼리에는 하나의 문제점이 있다. 우리는 앞서 SCOTT의 봉급을 구하는 쿼리로 3000이라는 하나의 레코드가 나오는 것을 확인하였기 때문에 이 쿼리에 어떠한 의심도 갖지 않는다. 즉, 우리는 SCOTT라는 이름을 가진 직원이 한 명인 것을 전제로 쿼리문을 실행한 것이다. 아래 쿼리문을 살펴보자. SELECT ENAME, SAL FROM EMP WHERE SAL >= 3000; 봉급(SAL)이..

[Oracle] 서브쿼리(1) - 서브쿼리의 개념과 특징

이 게시물은 Database GUI Oracle SQL Developer의 아래 버전 정보를 기준으로 작성되었습니다. Java(TM) 플랫폼 : 1.8.0_321 Oracle IDE : 4.1.5.21.78 서브쿼리의 개념과 특징 서브쿼리(Subquery)의 개념 하나의 SQL 문 안에 포함되어 있는 또 다른 SQL문 서브쿼리의 예시 만약 SCOTT의 봉급(SAL)보다 봉급이 높은 직원들을 출력하고 싶다고 가정하자. 그러면 아래의 쿼리를 통해 SCOTT의 봉급을 구할 것이다. SELECT SAL FROM EMP WHERE ENAME = 'SCOTT'; 그렇게 봉급을 확인한 뒤에, 다시 쿼리문을 아래와 같이 작성할 것이다. SELECT ENAME, SAL FROM EMP WHERE SAL > 3000; 이..

반응형