티스토리 뷰

DB/정리

VIEW(뷰)

란텔 2022. 10. 24. 19:36

뷰는 가상테이블 이다. 하나의 테이블이라곤 말할 순 없고, 일단 뷰를 생성해두고 필요 시 호출하게 되면 뷰에 있는 쿼리가 내부적으로 실행되고 데이터를 가져오게 된다.

 

 

뷰를 왜 사용하는가?

- SQL문의 재사용과 복잡한 쿼리문 작업을 단순화 시키려고.

- 테이블 검색의 전체결과가 아닌 일부만 보거나 활용하려고.

- 다른 사용자로부터 데이터를 보호하려고.

 

 

 

뷰는 자체적으로 아무런 데이터를 포함하지 않는다. 그냥 다른 테이블들에서 데이터를 가져와 볼 수 있도록 해줄 뿐.

그렇기 때문에 뷰 가상테이블을 보려고 할 때마다 그에 따른 쿼리를 실행하기 때문에 여러 조인문이나 뷰를 중첩하여 사용한 경우 제대로 튜닝하지 않으면 성능이 저하될 우려가 있음.

 

 

 

뷰의 규칙

- 뷰의 명칭은 테이블과 마찬가지로 고유해야함.

- 만들 수 있는 뷰의 수에는 제한이 없지만, 데이터베이스 종류마다 다름.

- 다른 뷰를 이용해서 새로운 뷰를 생성가능함. 중첩되는 뷰의 개수에는 데이터베이스마다 다름.

- 뷰에는 인덱스나 트리거 등을 적용할 수 없음.

- 뷰에도 데이터를 추가하거나 변경할 수 있지만 일부 데이터베이스에서는 허용하지 않음. 읽기전용으로만 허용

 

 

 

 예)

 

 




board 테이블을 가지고 뷰를 만들어 보겠다.board 테이블의 bb_writer는 글쓴이인데.. 필터링을 목적으로 뷰를 사용해 보겠다.우선 사진에서 보는 것처럼 1번 쿼리로 board를 조회해보면 글쓴이가 asd1과 giyomi가 있다.
사용자에게 giyomi의 정보만 보여주는 것으로 2번 쿼리를 사용한다.쿼리를 질의함으로서 board_view라는 가상테이블이 만들어졌다.



3번으로 질의를 해보면 위처럼 글쓴이가 giyomi만을 보여주는 결과가 나타날 것이다.


위는 단지 예시로 들어본 것이지 이렇게 잛은 쿼리문은 굳이 뷰를 사용할 필요가 없다고 본다. sql질의 하는 코드가 길어지게 되면 그 때 잘 튜닝해서 사용하는게 낫겠다.

 

'DB > 정리' 카테고리의 다른 글

인덱스?  (0) 2022.10.24
DDL 문  (0) 2022.10.24
[MYSQL] 데이터타입  (0) 2022.10.24
[MySQL] 저장 프로시저 (Stored Procedure)  (0) 2016.02.21
[MySQL] ENGINE 과 CHARSET 변경  (0) 2015.10.29
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday