MySQL에서 뷰(View)는 하나 이상의 테이블에서 원하는 데이터만 추출하여 마치 가상의 테이블처럼 사용할 수 있게 해주는 강력한 기능입니다. 뷰를 생성하려면 CREATE VIEW 명령어를 사용합니다.
뷰 생성 기본 문법
뷰를 만드는 기본적인 문법은 다음과 같습니다.
CREATE VIEW 뷰이름 AS SELECT 컬럼명1, 컬럼명2, 컬럼명3, ...... 컬럼명N FROM 테이블이름;
예제 테이블 생성하기
문법을 제대로 이해하기 위해 먼저 예제로 사용할 테이블을 생성해 보겠습니다. 아래 쿼리는 ViewDemo라는 이름의 테이블을 만듭니다.
mysql> create table ViewDemo -> ( -> Id int, -> Name varchar(200), -> Age int -> ); Query OK, 0 rows affected (0.58 sec)
테이블에는 Id, Name, Age 세 개의 컬럼이 정의되어 있습니다.
뷰 생성하기
이제 위에서 살펴본 문법을 적용하여 실제로 뷰를 생성해 보겠습니다. 다음은 MySQL에서 뷰를 만드는 쿼리입니다. 여기서는 ViewDemo 테이블의 Id와 Name 컬럼만 포함하는 LookUpTable이라는 뷰를 생성합니다.
mysql> create view LookUpTable as select Id,Name from ViewDemo; Query OK, 0 rows affected (0.15 sec)
생성된 뷰 확인하기
뷰가 정상적으로 생성되었는지 확인하려면 SHOW CREATE TABLE 명령어를 사용합니다. 해당 명령어는 뷰의 정의(생성 구문)를 그대로 보여줍니다.
mysql> show create table LookUpTable;
실행 결과는 다음과 같습니다.
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ | View | Create View | character_set_client | collation_connection | +-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ | lookuptable | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `lookuptable` AS select `viewdemo`.`Id` AS `Id`,`viewdemo`.`Name` AS `Name` from `viewdemo` | utf8 | utf8_general_ci | +-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ 1 row in set (0.00 sec)
출력 결과를 보면 lookuptable 뷰가 viewdemo 테이블의 Id와 Name 컬럼을 선택하는 SELECT 문으로 정의되어 있는 것을 확인할 수 있습니다. 또한 문자셋(character_set_client)과 콜레이션(collation_connection) 정보도 함께 표시됩니다.
정리
MySQL에서 뷰를 생성하는 과정은 매우 간단합니다. 핵심 순서는 다음과 같습니다.
① CREATE TABLE로 기반이 될 테이블을 준비한다.
② CREATE VIEW 뷰이름 AS SELECT ... 구문으로 원하는 컬럼만 담은 뷰를 생성한다.
③ SHOW CREATE TABLE 명령으로 뷰의 정의를 검증한다.
뷰를 활용하면 복잡한 쿼리를 단순화하고, 민감한 데이터(예: 위 예제의 Age 컬럼)를 노출하지 않으면서 필요한 데이터만 안전하게 제공할 수 있다는 장점이 있습니다.