데이터 베이스

서브쿼리 와 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;