본문 바로가기
카테고리 없음

ORACLE 10

by Real Iron 2007. 4. 4.


exusts():서브쿼리의 결과가 존재한다면 참


문제1) DEPTNO 컬럼중에 NULL 이 있냐?
         없으면 사원번호, 사원명, 부서번호 출력

SQL> SELECT EMPNO, ENAME, DEPTNO
  2  FROM EMP
  3  WHERE EXISTS(SELECT DEPTNO FROM EMP);

     EMPNO ENAME          DEPTNO
---------- ---------- ----------
      7369 SMITH              20
      7499 ALLEN              30
      7521 WARD               30
      7566 JONES              20
      7654 MARTIN             30
      7698 BLAKE              30
      7782 CLARK              10
      7788 SCOTT              20
      7839 KING               10
      7844 TURNER             30
      7876 ADAMS              20
      7900 JAMES              30
      7902 FORD               20
      7934 MILLER             10
       140 권덕용             40
       141 표희태             40
       142 정영선             40
       143 이성민             40



SQL> SELECT EMPNO, ENAME, DEPTNO
  2  FROM EMP
  3  WHERE EXISTS(SELECT DEPTNO FROM EMP WHERE DEPTNO IS NULL);

선택된 레코드가 없습니다.




다중컬럼 서브쿼리

개요
-서브쿼리에서 여러 개의 칼럼 값을 검색하여 메인쿼리의 조건절과 비교하는 서브쿼리
-메인쿼리의 조건절에서도 서브쿼리의 칼럼 수만큼 지정해야 함
-종류
  * PAIRWISE : 칼럼을 쌍으로 묶어서 동시에 비교하는 방식
  * UNPAIRWISE : 칼럼별로 나누어서 비교한 후, AND 연산을 하는 방식



문제1) 학번이 10201인 학생의 학년,학과번호를
          학번이 10103인 학생의 것과 동일하게


SQL> UPDATE STUDENT
  2  SET (GRADE,DEPTNO) =(SELECT GRADE, DEPTNO
  3  FROM STUDENT
  4  WHERE STUDNO=10103)
  5  WHERE STUDNO=10201;

1 행이 갱신되었습니다.




문제2) 학번 10101인 전인하 학생의
          GRADE는 학번 20101 이동훈 학생의 것과 동일
          DEPTNO는 학번 20102 박동진 학생의 것과 동일
          하게 수정

SQL> UPDATE STUDENT
  2  SET GRADE =(SELECT GRADE
  3  FROM STUDENT
  4  WHERE STUDNO = 20101),
  5  DEPTNO = (SELECT DEPTNO
  6  FROM STUDENT
  7  WHERE STUDNO = 20102)
  8  WHERE STUDNO = 10101;

1 행이 갱신되었습니다.





문제1) 학생 테이블에서 전자공학과 학생들의 데이터를 삭제
          이때 DEPARTMENT 테이블을 참고할 것.


SQL> DELETE STUDENT
  2  WHERE DEPTNO = 201;

SQL> DELETE STUDENT
  2  WHERE DEPTNO = (SELECT DEPTNO
                                  FROM DEPARTMENT
                                  WHERE DNAME ='전자공학과');


1. EMP 테이블에 126,'정난정'사원을 입력하시오
SQL> INSERT INTO EMP(EMPNO,ENAME)
  2  VALUES(126,'정난정');

1 개의 행이 만들어졌습니다.

2. 부서가 미확정된 사원의 JOB을 '알바'로 수정하시오.
SQL> UPDATE EMP
  2  SET JOB = '알바'
  3  WHERE DEPTNO IS NULL;

1 행이 갱신되었습니다.

3. 사원번호가 126인 사원의 급여와 COMM 을
    사원번호 7844인 사원의 것과 동일하게 수정하시오.

SQL> UPDATE EMP
  2  SET (SAL,COMM) = (SELECT SAL,COMM
  3  FROM EMP
  4  WHERE EMPNO = 7844)
  5  WHERE EMPNO = 126;

1 행이 갱신되었습니다.


4. 부서명이 OPERATIONS인 부서의 부서번호를 찾아
    그에 해당하는 EMP테이블의 사원의 커미션을 7000 으로 수정
SQL> update emp
  2  set comm = 7000
  3  where deptno = (select deptno
  4  from dept
  5  where dname = 'OPERATIONS');

4 행이 갱신되었습니다.


5. DALLAS에 설립된 부서에 근무하는
   사원의 업무를
   BLAKE사원의 업무와 동일하게 수정하시오.

  1  UPDATE EMP
  2  SET JOB = (SELECT JOB
  3  FROM EMP
  4  WHERE ENAME='BLAKE')
  5  WHERE DEPTNO =(SELECT DEPTNO
  6  FROM DEPT
  7* WHERE LOC = 'DALLAS')
SQL> ;
SQL> /

5 행이 갱신되었습니다.