-
스칼라 서브쿼리(Scalar SubQuery), 인라인 뷰(Inline View), 뷰(View)SQLD/SQL 기본과 활용 2020. 8. 28. 19:10
1. 스칼라 서브쿼리(Scalar SubQuery)
- 1 row, 1 column 만 리턴하는 서브쿼리
- 칼럼을 사용할 수 있는 대부분의 곳에서 사용 가능
SQL> SELECT PLAYER_NAME, HEIGHT ROUND((SELECT AVG (X.HEIGHT) FROM PLAYER X WHERE X.TEAM_ID = P.TEAM_ID),2) AS AVG_HEIGHT FROM PLAYER P; # 실행결과 PLAYER_NAME HEIGHT AVG_HEIGHT ------------------------------------------------------- 밀리토 169 177.89 스털링 178 180.01 고종수 188 175.66 김정환 170 179.99 노홍철 180 181.23 이승우 160 176.45
2. 인라인 뷰(Inline View)
- FROM 절에서 사용되는 서브쿼리 (테이블 가공하여 새 테이블을 만드는 것과 같음)
- ORDER BY절로 정렬된 테이블을 만들어 사용 할 수 있다.
SQL> SELECT A.E_NAME, A.DEPTNO, A.SAL FROM (SELECT * FROM EMP WHERE SAL = '500') A; # 실행결과 (SAL이 500인 EMP 데이터만 가지고 있는 테이블) E_NAME DEPTNO SAL ------------------------------------------------------- 밀리토 D01 500 스털링 D01 500 고종수 D02 500 김정환 D03 500 노홍철 D05 500 이승우 D07 500
3. 뷰(View)
- 테이블은 실제 데이터를 가지고 있지만, 뷰는 뷰 정의만을 가지고 있다.- 뷰를 정의하고 사용하게 되면 DMBS는 내부적으로 SQL 문을 인라인 뷰로 재작성한다.
# 뷰 정의 SQL> CREATE VIEW V_EMP_DEPT AS SELECT A.E_NAME, B.D_NAME FROM EMP A, DEPT B WHERE A.DEPTNO = B.DEPTNO; # 뷰 사용 SQL> SELECT E_NAME, D_NAME FROM V_EMP_DEPT; # DMBS 내부적으로 재작성 된 모습 SQL> SELECT E_NAME, D_NAME FROM (SELECT A.E_NAME, B.D_NAME FROM EMP A, DEPT B WHERE A.DEPTNO = B.DEPTNO); # 실행결과 E_NAME D_NAME ------------------------------------------------------- 밀리토 영업 스털링 영업 고종수 유통 김정환 생산 노홍철 SW개발 이승우 클라우드관리 # 뷰 제거 DROP VIEW V_EMP_DEPT;
728x90'SQLD > SQL 기본과 활용' 카테고리의 다른 글
SQL) WINDOW 함수(1) -그룹내 순위함수,일반 집계함수 (0) 2020.08.31 SQL) ROLLUP, CUBE 함수에 대한 이해와 고찰 (0) 2020.08.31 단일행 서브쿼리(Single Row SubQuery), 다중행 서브쿼리(Multi Row SubQuery), 다중 칼럼 서브쿼리(Multi Column SubQuery), 연관 서브쿼리(Correlated Subquery) (0) 2020.08.27 OUTER JOIN 심화 (ANSI/ISO SQL 표준방식의 OUTER JOIN) (0) 2020.08.27 CROSS JOIN (0) 2020.08.27