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 행이 갱신되었습니다.