본문 바로가기

문돌이 존버/DB 및 SQL 스터디

Postgresql VIEW 사용해보기

반응형

오늘은 Postgresql에서 VIEW를 사용하는 방법을 알아보겠습니다. 먼저 Postgresql 문서를 한국어로 번역한 홈페이지에서 자료를 가져왔습니다. 

CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] [ RECURSIVE ] VIEW 이름 [ ( 칼럼이름 [, ...] ) ]
    [ WITH ( 뷰옵션이름 [= 뷰옵션값] [, ... ] ) ]
    AS 쿼리
    [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]

"CREATE VIEW 명령은 지정한 쿼리를 바탕으로 새 뷰를 만든다. 뷰는 물리적으로 구체화하는 개체는 아니다. 뷰를 호출하면 매번 그 뷰에 지정한 쿼리를 실행한다."

뷰는 다시 말해 이미 존재하는 테이블에서 데이터를 추출할 때 또 다른 (가상) 테이블을 만드는 것입니다. 파라미터 중 TEMPORARY는 이 가상의 뷰를 세션이 종료되면 바로 삭제되도록 하는 것입니다. 말로만 하면 이해가 잘 안되니 예시를 들어 설명해보겠습니다.

CREATE VIEW revenue0 (supplier_no, total_revenue) as
	SELECT 
		l_suppkey,
		sum(l_extendedprice * (1 - l_discount))
	FROM
		lineitem
	WHERE
		l_shipdate >= date '1997-05-01'
		and l_shipdate < date '1997-05-01' + interval '3' month
	GROUP BY
		l_suppkey;
# VIEW 확인
SELECT * FROM public.revenue0

이렇게 생성된 뷰는 실제 DB에 저장된 테이블이 아니라 가상으로 생성된 테이블입니다. 결국 나중에 자동으로 삭제되거나 수동으로 지워줘야 하는 것이죠. 

SELECT 
	s_suppkey,
	s_name,
	s_address,
	s_phone,
	total_revenue
FROM
	supplier,
	revenue0
WHERE
	s_suppkey = supplier_no
	and total_revenue = (
		SELECT
			max(total_revenue)
		FROM
			revenue0
	)
ORDER BY
	s_suppkey;

 

728x90
반응형