데이터 베이스
서브쿼리 와 View
쭈녁
2024. 1. 26. 14:46
서브쿼리 분류
단일 행 서브쿼리
- 쿼리의 결과물이 하나의 행만 반환할 때
SELECT request_dtl_id, request_id , request_name , request_content
FROM REQUEST_DTL
WHERE request_id = (SELECT request_id FROM REQUEST WHERE request_status = 'FAILED');
다중 행 서브쿼리
- 쿼리의 결과물이 여러 행을 반환할 때
SELECT request_dtl_id ,request_id,request_name,request_content
FROM REQUEST_DTL
WHERE request_id IN (SELECT request_id FROM REQUEST WHERE request_status ='FAILED')
다중 컬럼 서브쿼리
- 여러 컬럼의 쿼리값을 조건으로 필터 하는 경우
스칼라 서브쿼리
하나의 속성을 갖으며 하나의 행만 반환하는 서브쿼리를 의미
서브쿼리 예시
SELECT NAME
FROM EMPLOYEE
WHERE SALARY >= ANY(
SELECT SALARY
FROM EMPLOYEE
WHERE DEPARTMENT_ID = 1);
View
새로운 테이블 생성하는것이 아닌 논리적인 테이블을 만드는 개념
특징
- 테이블이 구조가 변경되어도 View는 그대로 유지가 가능하다.
- 복잡한 쿼리의 재사용성을 높여준다 (View를 만들어놓고 해당 View를 계속 조회 가능)
- 테이블의 권한은 막고 View의 권한만 부여할 수 있다.

View 생성 및 조회
CREATE VIEW EMPLOYEE_DEPARTMENT AS(
SELECT employee_id,employee_name,salary,e.department_id,department_name
FROM EMPLOYEE AS e
INNER JOIN DEPARTMENT AS d
ON e.department_id = d.department_id
);
SELECT * FROM EMPLOYEE_DEPARTMENT;


