기본 콘텐츠로 건너뛰기

SQL VIEW - 가상의 테이블

SQL에서 가상의 테이블을 만들 때 VIEW 구문을 사용한다.

VIEW(뷰)는 한 번 생성해 놓으면, 일반 테이블이라 생각하고 동일하게 사용해도 될 정도로 테이블과 거의 동일한 개체로 여겨진다.

VIEW의 쿼리 구조는 아래와 같다.

1
2
3
4
5
CREATE VIEW view_name AS -- 생성할 VIEW의 이름(view_name)을 지정한다
SELECT column1, column2, ... -- 쿼리의 결과가 view_name을 가지는 VIEW로 만들어진다
FROM table_name
WHERE condition;
cs

"CREATE VIEW 뷰_이름 AS 일반 SQL 쿼리"의 형식으로 뷰(VIEW)를 생성한다.

뷰를 삭제하려면 아래와 같이 간단한 쿼리만 작성하면 된다.

1
DROP VIEW view_name;
cs

뷰는 크게 아래와 같은 2가지의 필요에 의해 사용된다.

1. 보안의 필요성
- table에 개인정보 등 민간함 정보가 포함되어 있어, table의 접근 권한을 다르게 주고 싶을 때 뷰를 사용하면 편리하다. table의 접근을 제한하고자 하는 유저에게는 table의 접근을 막고 view의 접근만 허용하면 간단하게 권한을 다르게 부여할 수 있다.

2. 쿼리의 단순화
- 복잡하거나 연산에 큰 시간이 필요한 쿼리를 자주 사용하는 경우, 매번 쿼리를 실행시키는 대신 뷰를 만들면 관리가 편리해진다. 뷰를 생성해 놓고 필요할 때 접근하면 간단하게 끝난다.

VIEW를 남용하지는 말되 적절히 활용하자.

끝.

댓글

이 블로그의 인기 게시물

파이썬(Python)을 이용한 산점도(scatter) 그리기

파이썬의 Matplotlib를 이용해 데이터의 산점도(scatter plot)를 그릴 수 있다. 예시를 통해 살펴보자. 먼저 아래와 같이 데이터 프레임 예시를 만든다. 1 2 3 4 5 6 7 8 9 10 import pandas as pd height = [ 170 , 168 , 177 , 181 , 172 , 171 , 169 , 175 , 174 , 178 , 170 , 167 , 177 , 182 , 173 , 171 , 170 , 179 , 175 , 177 , 186 , 166 , 183 , 168 ] weight = [ 70 , 66 , 73 , 77 , 74 , 73 , 69 , 79 , 77 , 80 , 74 , 68 , 71 , 76 , 78 , 72 , 68 , 79 , 77 , 81 , 84 , 73 , 78 , 69 ] # DataFrame 만들기 body = pd . DataFrame( { 'height' : height, 'weight' : weight} ) body라는 이름의 데이터 프레임(테이블)이 만들어졌다. 이제, body 테이블의 데이터들의 분포를 산점도로 그려보자. 산점도를 그리는 코드는 아래와 같다. 1 2 3 4 5 6 7 8 9 10 # 산점도(scatter) 그리기 import matplotlib.pylab as plt plt . scatter( body[ 'weight' ], body[ 'height' ], label = "data" ) plt . legend(loc = "best" ) plt . xlabel( 'weight' ) plt . ylabel( 'height' ...

웨딩 드레스 스케치 도안

웨딩 드레스샵 투어를 다니면서 샘플로 드레스를 입는 경우에는 드레스 사진을 찍지 못하게 하는 샵이 많다. ​ 그래서 투어를 돌고 나면 어떤 샵의 어떤 스타일이 신부에게 잘 어울렸는지 헷갈릴 수가 있다. ​ 하지만 투어를 다닐 때 드레스샵에서 입은 드레스의 특징과 느낌을 잘 기록하면 샵을 선택하는 데 도움이 될 수 있다. ​ 드레스 투어를 다닐 때 드레스를 기록할 스케치 도안은 아래 링크에서 확인/다운로드 할 수 있다. 웨딩 드레스 스케치 도안 확인/다운로드 하기 투어를 마친 후 드레스샵과 계약을 하고, 드디어 본식 드레스를 고를 때에는 사진을 찍을 수 있는 경우가 많다. ​ 이 땐 사진을 잘 찍어서 어떤 드레스를 입을지 잘 선택하도록 하자. ​ ​

SQL PERCENT_RANK - 상대 순위 매기기

SQL의 percent_rank 함수를 사용해서 데이터의 상대 순위를 매길 수 있다. 순위를 매기는 방식은 기본적으로 rank 함수와 같다. rank 함수에 대한 설명은 "SQL RANK - 순위 매기기" 포스팅에서 자세히 확인할 수 있다. percent_rank는 1등을 0, 마지막 등수를 1로 출력한다는 점이 rank와 다르다. 아래의 샘플 테이블을 통해 살펴보자. 1 2 3 4 5 6 7 8 9 10 CREATE TABLE body (height float, _name text); INSERT INTO body VALUES ( 174 . 52 , 'Tom' ); INSERT INTO body VALUES ( 167 . 33 , 'Lucy' ); INSERT INTO body VALUES ( 174 . 52 , 'Frank' ); INSERT INTO body VALUES ( 168 . 89 , 'Jane' ); INSERT INTO body VALUES ( 177 . 80 , 'Robert' ); INSERT INTO body VALUES ( 175 . 77 , 'Robert' ); INSERT INTO body VALUES ( 175 . 77 , 'Robert' ); INSERT INTO body VALUES ( 170 . 40 , 'Robert' ); 상대 순위를 매기는 코드는 아래와 같다. 1 2 3 select percent_rank () over (partition by _name order by height desc ) as percent_ranking, _name, height from body ; 위 코드를 실행시키면 아래와 같은 결과를 ...