[MySQL] 뷰(View) 사용법

2020. 12. 30. 14:17· MySQL
목차
  1. 1. 뷰란
  2. 2. 사용법

1. 뷰란

MySQL 버전 5 이상부터 가능한 특정 명령문에 매칭된 가상 테이블입니다.

SELECT, WEHRE, Sub Query, UNION, JOIN 등 다양한 결합과 조건으로 만들어진 데이터를 뷰를 통해 가상 테이블을 만들어 편리하고 빠르게 데이터를 액세스 할 수 있습니다.

 

특징

- 실제로 데이터를 저장하지 않고 오직 보여주는데 중점을 둔 기능입니다.

- 뷰의 기반 테이블의 데이터를 수정할 경우 뷰에도 반영됩니다.

- 뷰의 데이터를 수정할 경우 실제 데이터도 같이 바뀝니다.

- 뷰로 생성된 가상 테이블에도 데이터를 삽입할 수 있습니다, 하지만 JOIN, UNION, Sub Query 등으로 만들어진 뷰에서는 데이터를 삽입할 수 없습니다, 하지만 그 외 뷰에서는 UPDATE 및 INSERT가 가능합니다.

2. 사용법

뷰 생성문

CREATE VIEW 뷰 명칭 AS
SELECT 컬럼 1, 컬럼 2, ... FROM 테이블명 조건문;

아래와 같은 테이블에서 City가 서울인 데이터들을 모아 새로운 가상 테이블을 생성하겠습니다.

CREATE VIEW seoul_members AS
SELECT LastName, FirstName, Address, City, Country FROM members where City = '서울';

아래처럼 City가 서울인 맴버들로 가상테이블이 만들어진 것을 확인 할 수 있습니다.

 

테이블 정보 확인 명령어

뷰는 물리적 테이블의 명령어들이 통합니다.

 

아래 명령어는 테이블 리스트를 출력하는 명령어로 

뷰의 가상 테이블이 물리적 테이블와 구분 없이 출력되는 것을 알 수 있습니다.

show tables 

테이블의 상세 정보 보기 명령어 또한 뷰에 적용이 가능합니다.

show create table seoul_members;
desc seoul_members;

 

뷰 삭제

아래 명령어는 seoul_members 라는 뷰가 없으면 에러가 발생합니다.

DROP VIEW seoul_members;

뷰가 없을 때 출력되는 에러가 보기 싫을 경우 아래 명령어로 대체가 가능합니다.

DROP VIEW IF EXISTS seoul_members;

위 명령어로 seoul_members 뷰가 있으면 삭제하고 없으면 넘어가게 됩니다.

 

뷰 조건 일치

현재 뷰를 통한 데이터 추가는 아래와 같은 데이터를 값을 추가할 경우

INSERT INTO seoul_members VAlUES ('초','코비','주소3','부산','대한민국');

members 테이블과 seoul_members 테이블에 위 값이 추가됩니다.

하지만 저는 INSERT 문의 표시된 테이블명인 seoul_members는 City가 서울인 데이터들의 가상 테이블로 정의했습니다.

 

그런 시점에서 볼 경우 위 명령문이 실행된다는 것은 일관성이 떨어진다고 볼 수 있습니다.

이를 해결해서 City가 서울인 값만을 받기 위해서는 뷰를 생성할 떄 아래 옵션을 추가하면됩니다.

WITH CHECK OPTION;

위 옵션을 추가한 seoul_members, 뷰 생성문은 아래와 같습니다 

CREATE VIEW seoul_members AS
SELECT LastName, FirstName, Address, City, Country FROM members where City = '서울'
WITH CHECK OPTION;

그러면 아래와 같이 seoul_members 테이블에 값을 추가할 수 있는 값은 City가 서울인 값만을 받게 됩니다.

seoul_members 테이블과 members 테이블이 두 번째만 적용된 것을 확인 할 수 있습니다.

 

뷰 업데이트

뷰는 일부분만을 업데이트 할 수 없습니다. 전체를 덮어쓰기 형태로 업데이트 할 수 있습니다.

OR REPLACE
CREATE OR REPLACE VIEW 뷰 명칭 AS 
SELECT 컬럼 1, 컬럼 2, ... FROM 테이블명 조건문;

위와 같이 OR REPLACE 키워드를 추가하시면 됩니다.

 

뷰 컬럼 변경

ALTER VIEW 키워드를 통해 뷰의 컬럼 구조를 변경할 수 있습니다.

ALTER VIEW 뷰 명칭 AS SELECT 컬럼명 FROM 테이블명;

저는 아래와 같이 컬럼 구조를 변경해보았습니다.

ALTER VIEW seoul_members AS SELECT LastName, FirstName FROM members where City = '부산';

seoul _members 이지만 부산을 가르키게 됩니다 ㅎㅎ

 

반응형

'MySQL' 카테고리의 다른 글

[MySQL] Insert 할 때 중복 값 업데이트 (ON DUPLICATE KEY UPDATE)  (1) 2024.02.23
[MySQL] 실행 계획(Query Plan)이 뭔데  (0) 2023.12.02
[MySQL] 함수(Function) 사용법  (0) 2020.12.29
[MySQL] 트랜잭션(Transaction) 사용법  (0) 2020.12.29
[MySQL] 트리거(Trigger) 사용법  (0) 2020.12.29
  1. 1. 뷰란
  2. 2. 사용법
'MySQL' 카테고리의 다른 글
  • [MySQL] Insert 할 때 중복 값 업데이트 (ON DUPLICATE KEY UPDATE)
  • [MySQL] 실행 계획(Query Plan)이 뭔데
  • [MySQL] 함수(Function) 사용법
  • [MySQL] 트랜잭션(Transaction) 사용법
DSeung
DSeung
DSeung
Dev log
DSeung
  • 분류 전체보기 (192)
    • PHP (62)
      • Laravel (31)
      • Error (5)
      • Setting (11)
      • Modern PHP (15)
    • Go Lang (51)
      • Study (30)
      • Algorithm (17)
      • Setting (1)
      • Error (3)
    • Java (11)
      • Spring (3)
      • JSP (0)
      • Error (2)
      • Setting (2)
      • 단축키 (2)
    • JavaScript (6)
      • Modern JavaScript (4)
      • Node (1)
    • Android Kotlin (5)
      • Study (4)
      • Error (1)
    • 컴퓨팅 기술 (12)
      • 데이터베이스시스템 (4)
      • Docker (2)
      • 크롤링 & 스크래핑 (1)
      • API (1)
      • 클라우드 (1)
      • 네트워크 (1)
    • MySQL (7)
    • AWS (1)
    • Git (5)
      • GItLab (1)
      • GitHub (4)
    • 도메인 (2)
      • 안과 (2)
    • 자격증 (7)
      • SQLD (1)
      • 정보처리기사 (6)
    • Mac os (1)
    • 나머지 (13)
      • tistory (1)
      • 기타 (9)
      • 일기 (3)
    • 독서 (9)

인기 글

최근 글

블로그 메뉴

  • 홈
  • 태그
전체
오늘
어제
hELLO · Designed By 정상우.v4.2.0
DSeung
[MySQL] 뷰(View) 사용법
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.