서브쿼리 분류
단일 행 서브쿼리
- 쿼리의 결과물이 하나의 행만 반환할 때
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;
'데이터 베이스' 카테고리의 다른 글
윈도우함수 와 집계함수 (1) | 2024.01.27 |
---|---|
계층형 질의 (0) | 2024.01.26 |
트랜잭션과 격리 수준 (0) | 2023.12.29 |
MySQL 명령어 및 쿼리 (익숙하지 않은 문법 기록용) (0) | 2023.12.12 |
데이터 베이스 정규화 (0) | 2023.12.12 |