본문 바로가기
[파이썬]/데이터베이스

[MariaDB] View(가상 테이블)의 개념과 생성 및 호출

by sung min_Kim 2023. 11. 28.
View(뷰)


가상 테이블


· View 란


 'View'는 실제 데이터를 저장하지 않지만 데이터베이스 내의 하나 이상의 실제 테이블로부터 데이터를 조회하여 마치 실제 테이블처럼 보이게 하는 데이터베이스 객체이다. 

 이는 사용자에게 실제 테이블과 동일하게 작동하지만, 실제로는 데이터를 저장하지 않고 기존 테이블의 테이터를 참조하는 가상의 테이블을 제공하므로, 이를 '가상 테이블'이라 한다.

 


· View를 사용하는 이유는 ?

 

  • 보안 : View는 특정 사용자가 접근할 수 있는 데이터의 범위를 제한할 수 있다. 예를 들어, 사용자가 특정 컬럼이나 행에만 접근하도록 하거나, 특정 조건에 해당하는 데이터만 보여줄 수 있다. 이를 통해 데이터의 보안을 강화할 수 있다.


  • 단순화 : 복잡한 SQL 쿼리를 View로 만들어 놓으면, 이후에는 그냥 View를 이름으로 참조하면 된다. 이를 통해 복잡한 쿼리를 간단하게 사용할 수 있으며, 코드의 가독성을 높일 수 있다.


  • 계산된 필드 사용 : View는 계산된 필드를 포함할 수 있다. 예를 들어, 여러 컬럼의 값을 계산하여 새로운 컬럼을 만드는 등의 작업을 View 내에서 수행할 수 있다.


  • 데이터 무결성 유지 : View를 사용하면 사용자가 실수로 중요한 데이터를 변경하거나 삭제하는 것을 방지할 수 있다.


 위와 같은 이유로 View를 활용하면 데이터베이스 관리가 보다 효율적이고 안전해진다.

 


· View 생성 방식

 

Delimiter //
Create View View_name AS

   Select 컬럼
   from 테이블
   where 제한 조건//

Delimiter ;


 'Create View' 명령어를 통해 새로운 View를 생성한다. 생성된 View는 View_name을 가지며, 'AS' 키워드는 새로운 View를 생성할 때 기존 테이블의 어떤 데이터를 사용할 것인지를 정의하는 Select 문을 지정하는 데 사용된다. 즉,  View가 참조할 기본 테이블의 데이터를 지정한다.

 이 명령어를 실행하면, 지정한 이름의 View가 생성되고, 이후에는 "Select * From View_name;"과 같은 방식으로 해당 View를 호출하여 조회할 수 있다.

 유의해야 할 점으로는, View는 반드시 Select 문을 포함해야 하며, 단순 조회만을 수행하기 때문에, Insert, Update, Delete 등의 작업은 수행할 수 없다는 것이다.

 


· 예시

 

<예제_View 생성 및 호출> "주문 내역이 존재하지 않은 회원 조회"에 대한 Select 문을 View로 만들어 활용하기

View 생성하기_1

 위의 쿼리문을 View(가상 테이블)로 만들어 활용하려고 한다. 그러기 위해 새 쿼리 탭을 열어 View를 생성 및 보관하도록 하자.

View 생성하기_2

 'Create View viewNoCartMember'구문을 사용하여 'viewNoCartMember'라는 이름의 View를 생성하려 한다. 'AS' 키워드를 사용하여 View에서 조회하고자 하는 Select 문을 지정한다. 
 위의 쿼리를 실행하면, 왼쪽에 'viewNoCartMember' 이름의 View가 생성된 것을 볼 수 있다.

 한 가지 눈여겨봐야 할 부분은 Select 문의 종료를 나타내는 세미콜론이 사용된 것이 아니라 '//'을 사용했다는 점이다.

 세미콜론은 일반적으로 하나의 SQL 명령이 끝나는 것을 나타낸다. 따라서 여러 SQL 문장을 연속적으로 실행하려면 각 문장 뒤에 세미콜론을 붙여 구분한다.

 이때 문제가 되는 것이, SQL 인터프리터가 세미콜론을 만나면 SQL 명령의 끝으로 인식하고 그 즉시 실행하려고 시도하여 전체 쿼리를 데이터베이스에 전달하지 못하는 부분이다.
 이를 해결하기 위해 'Delimiter' 명령어를 사용하여 일시적으로 SQL의 명령어 끝을 나타내는 문자를 세미콜론이 아닌 다른 문자(//) 등으로 변경한다.

 반면에 View는 기본적으로 하나의 Select 문만을 포함하기 때문에 여러 SQL 문장을 구분할 필요가 없다. 이는 View가 하나의 가상 테이블이며, 이 가상테이블은 단일 Select문의 결과로 구성되기 때문이다.
 따라서, 단일 Select 문 뒤에는 세미콜론을 사용할 필요가 없다.


이제 생성한 View를 호출해 보도록 하자.

View 호출하기

 생성한 View는 '가상 테이블'로서, 실제 테이블과 동일한 방식으로 From 절에 사용하여 뷰에 저장된 값을 조회할 수 있다.