개발자 미니민의 개발스터디

[Oracle] 오라클 - UPDATE JOIN VIEW / 서브쿼리

by mini_min
[Oracle]
오라클 - UPDATE JOIN VIEW / 서브쿼리

✔️ UPDATE JOIN VIEW

테이블을 조인하면서 업데이트 해주는데, 서브쿼리보다 훨씬 빠르다고 한다.

: tb_a 테이블의 내용(new_addr1, new_addr2)을 tb_b에 존재하는 내용(n_addr1, n_addr2)으로 수정

조인 조건의 컬럼이 UNIQUE 속성이어야 가능하며(관계가 1:1) 그렇지 않으면 ORA-01779 오류가 발생한다.

 

 

 

✔️ subquery

: 다른 하위 쿼리 내부에 중첩된 SELECT 절이다.

 

-- 단일 행 서브 쿼리

: 실행하면 무조건 행수가 1개, 컬럼도 1개 나와야한다.

SELECT empNo, name, sal	
	FROM emp
	WHERE sal < (SELECT AVG(sal) FROM emp);

 

 

-- 다중 행 서브 쿼리 (IN, ANY, SOME, EXISTS 등...)

SELECT bCode, bName
	FROM book
	WHERE bCode  IN (SELECT UNIQUE bCode FROM dsale);

 

 

-- 상호 연관 서브 쿼리

: 성능이 좋지 않은 단점이 있다.

SELECT name, sal,
		(SELECT COUNT(e2.sal) +1 FROM emp e2 WHERE e2.sal > e1.sal) 순위
	FROM emp e1;

 

 

 

🔒 문제

-- 학점 구하기

SELECT hak, s1.score, grade  FROM (
SELECT hak, score,
    (SELECT MAX(score) FROM grade_table WHERE score<=score_table.score) gscore
    FROM score_table;
) s1
JOIN grade_table s2 ON s1.gscore = s2.score;
💡 score 컬럼을 가지고 두 테이블을 조인
s1 은 grade_table 에서 max score 를 뽑아낸 서브쿼리문이다. 

 

 

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기