서브쿼리(SubQuery)
서브쿼리: SQL문 안에 ‘부품’처럼 들어가는 SELECT문
서브쿼리를 포함하는 전체 SQL문은 outer query(외부 쿼리), 서브쿼리는 inner query(내부 쿼리)
SELECT절의 서브쿼리는 보통 새로운 column 조회를 추가하는 경우다!
WHERE절의 서브쿼리도 활용해 조건을 붙이자
IN으로 컬럼의 여러 row값을 return하는 조건도 가능하다!
ANY와 ALL을 활용해도 좋다!
ANY(=SOME): 서브쿼리 row값 중 단 하나의 값이라도 만족하면 TRUE
ALL: 서브쿼리 row값 모두 만족해야 TRUE
FROM절의 서브쿼리는 테이블 형태의 결과를 return한다 (활용성 높다!)
전체 SQL문을 서브쿼리로 만든 derived table은 전체에 alias를 붙여줘야 한다
+++
지금까지의 서브쿼리들은 outer query와 별개로 단독 실행해도 되는 비상관 서브쿼리
그럼 상관 서브쿼리는 무엇일까? ~ outer query와 상관관계를 가지는 서브쿼리!
EXISTS는 조건에 맞는 값이 존재하면 return한다 / NOT EXISTS는 그 반대
서브쿼리를 사용하면 컬럼 alias를 SQL문에 바로 사용하지 못하던 문제도 해결이 가능하다
서브쿼리를 중첩해보자
뷰(View)
뷰(View): 조인 등의 작업을 통해 만든 ‘결과 테이블’을 다른 쿼리창에 가상으로 저장한 형태
CREATE VIEW 뷰 이름 AS SELECT문 -> 가상테이블을 생성해 alias를 붙인다
View를 활용하면..
- 반복작업에 있어 높은 편의성이 생긴다!
- 직무별 데이터 수요에 맞춤형 기반을 구축해줄 수 있다!
- 분석가에게 테이블을 직접 제공하지 않고 View를 제공해 데이터 보안!
CREATE VIEW emp_view AS SELECT id, name, age, department FROM employee;
이런 식으로 필요한 컬럼만 제공하거나..
CREATE VIEW emp_view2 AS SELECTED id, name, age, department FROM employee WHERE department != 'secrect';
이런 식으로 특정 row는 숨겨서 제공한다
본 내용은 Codeit의 '개발자를 위한 SQL 데이터베이스'를 바탕으로 작성되었습니다.
'Computer Science > Database, SQL' 카테고리의 다른 글
[HUFS/데이터베이스] #2 데이터베이스 관리 시스템 (0) | 2021.09.08 |
---|---|
[HUFS/데이터베이스] #1 데이터베이스 환경 (6) | 2021.09.01 |
[Codeit/MySQL] #5 테이블 조인을 통한 데이터 분석 (4) | 2021.04.16 |
[Codeit/MySQL] #4 데이터 분석 입문 (0) | 2021.04.16 |
[Codeit/MySQL] #3 데이터 조회 (4) | 2021.04.15 |