반응형
서브쿼리 Subquery
DML의 서브쿼리
DELETE
서브쿼리는 WHERE 절에서 사용될 수 있습니다.
DELETE FROM ... WHERE ...
예시)
강사의 평균 급여보다 낮은 급여를 받는 모든 강사 삭제
DELETE FROM instructor
WHERE salary < (
SELECT avg (salary)
FROM instructor);
스칼라 Scalar 서브쿼리
- 문제: 일부 튜플이 삭제되면 평균이 변경됨
→ 하지만 SQL은 먼저 평균을 계산하고 그 값과 비교합니다
INSERT
R에 튜플 삽입
원래는 다음과 같습니다
INSERT INTO R VALUES (attributes)
R에 튜플을 삽입하기 위해
서브쿼리를 사용하면
INSERT INTO R subquery
삽입할 일부 튜플을 관계에서 찾기 위해
UPDATE
서브쿼리는 WHERE 절에서 사용될 수 있습니다
UPDATE ... SET ... WHERE ...
반응형
Correlation Subquery 상관 서브쿼리
내부 쿼리가 외부 쿼리에서 제공하는 값에 의존함
→ 내부 쿼리는 외부 쿼리의 각 행에 대해 한 번씩 반복적으로 실행됨
따라서 비효율적일 수 있음
- 하지만 EXISTS 또는 NOT EXISTS 연산자는 JOIN보다 더 효율적일 수 있음
→ 왜냐하면, 서브쿼리에서 행 값이 발견되면 내부 쿼리 검색이 종료됨
→ EXISTS는 True를 반환하고 NOT EXISTS는 False를 반환함
중첩 쿼리는 INTERSECT와 EXCEPT의 대안으로 사용될 수 있습니다
(SELECT R.A, R.B
FROM R)
INTERSECT
(SELECT S.A, S.B
FROM S)
다음과 같이 표현될 수 있습니다
SELECT R.A, R.B
FROM R
WHERE EXISTS(
SELECT *
FROM S
WHERE R.A=S.A AND R.B=S.B)
728x90
(SELECT R.A, R.B
FROM R)
EXCEPT
(SELECT S.A, S.B
FROM S)
다음과 같이 표현될 수 있습니다
SELECT R.A, R.B
FROM R
WHERE NOT EXISTS(
SELECT *
FROM S
WHERE R.A=S.A AND R.B=S.B)
반응형
'컴퓨터공학 > 데이터베이스 DB' 카테고리의 다른 글
전공생의 데이터베이스 수업 수강 전 SQLD 합격 후기 (3) | 2024.11.07 |
---|---|
SQL 서브쿼리 Subquery (1) | 2024.10.21 |
외부 조인과 내부 조인 Inner Join and Outer Join (2) | 2024.10.20 |
기초 SQL문 정리 SFW, HAVING, GROUP BY ... (8) | 2024.10.19 |
데이터베이스 SQL DDL과 DML (5) | 2024.10.18 |