뷰(view)는 하나 이상의 테이블을 합하여 만든 가상의 테이블이다
SELECT문을 통해 얻은 결과를 가상의 테이블로 정의하여 실제 테이블처럼 사용할 수 있도록 만든 데이터베이스 개체
실제 데이터를 디스크에 저장하지 않고 단지 뷰를 생성할 때 사용한 SELECT문의 정의를 DBMS가 저장한다.
따라서 뷰를 사용하여 질의를 처리하면 DBMS는 뷰의 정의를 참조하여 질의를 수행하고 그 결과를 사용자에게 반환한다
뷰는 테이블에 적용 가능한 모든 연산을 사용할 수 있다.
자주 사용되는 질의를 뷰로 미리 정의해 재사용할 수 있다.
각 사용자별로 보안이 필요한 데이터를 제외하여 선별하여 보여줄 수 있다.
논리 데이터베이스의 원본 테이블의 구조가 변해도 응용 프로그램에 영향을 주지 않도록 하는 논리적 독립성을 제공하는 방법이다.
(이게 무슨 의미일까)
INSERT, UPDATE, DELETE 등의 DML작업은 가상 테이블인 뷰가 아니라 원본 테이블에서 수행된다.
(다만, 기본키를 포함하지 않는 수정 요청이나 베이스 테이블 두 개 이상에서 속성을 포함하는 수정 요청은 제약을 위반할 가능성이 있기 때문에 금지된다)
(뭔 소리냐)
CREATE VIEW 뷰이름 [(열이름 [,... n])]
AS SELECT 문
물리적인 테이블의 수정 작업과 같이 뷰도 필요에 따라 정의된 SQL문의 수정이 필요하다
CREATE OR REPLACE VIEW 뷰이름[(열이름 [,... n])]
AS SELECT 문
DROP VIEW 뷰이름[,... ,n];
MySQL을 포함한 모든 DBMS에서는 데이터베이스 개채(테이블, 함수, 뷰 등)나 시스템의 통계 정보 등을 사용자가 직접 확인할 수 있도록 시스템 뷰를 만들어 제공한다.
데이터 딕셔너리 뷰, 시스템 카탈로그 등으로 불리기도 한다.
DBMS 관련 정보를 테이블 형태로 만들어 실시간으로 제공한다
MySQL 시스템 뷰는 INFORMATION_SCHEMA 데이터베이스에 저장되어 있으며 SELECT 명령으로 조회할 수 있다.
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema LIKE 'madang';