본문 바로가기
TIL - 프로그래밍/SQL

MySQL 뷰(View) 기본 (생성, 대체, 수정, 삭제)

by chaemj97 2024. 7. 23.
728x90

뷰(View)란?

  • 데이터베이스에 존재하는 일종의 가상 테이블
  • 실제 테이블처럼 행과 열을 가지고 있지만, 데이터를 직접 저장하고 있지는 않음
    • 단지 다른 테이블이나 다른 뷰에 있는 데이터를 보여주는 역할만을 수행

 

뷰를 만드는 이유?

  • 삽입, 삭제, 수정 작업에 제한 사항을 두기 위해
    • 특정 사용자한테 뷰에 대한 권한만 줄 수 있음
  • 내부 데이터를 전체 공개하고 싶지 않을 때
  • SQL 코드를 간결하게 만들기 위해

 

뷰의 장점

  • 특정 사용자에게 테이블 전체가 아닌 필요한 필드만 보여줄 수 있음
  • 복잡한 쿼리를 단순화해서 사용 가능
  • 사용한 쿼리를 재사용 가능

 

뷰의 단점

  • 한 번 정의된 뷰는 변경 불가
  • 삽입, 삭제, 갱신 작업에 많은 제한 사항을 가짐
  • 뷰는 자신만의 인덱스를 가질 수 없음

뷰 연습

1. 뷰 생성

  • 원본 테이블과 같은 이름을 가질 수 없음
  • 테이블을 만들 듯 생성 가능
    • CREATE 문 사용
  • 단일 테이블의 필요한 컬럼 조회
CREATE VIEW [view_name] 
SELECT [column_1], [column_2] ...
FROM [table_name]
WHERE [조건];
  • 여러 테이블의 필요한 컬럼 조회
CREATE VIEW [view_name]
SELECT a.[column_1], b.[column_2]
FROM [table_name_1] AS a, [table_name_2] AS b
WHERE [조건];

 

2. 뷰 대체

  • 기존에 생성했던 뷰를 다시 새로운 뷰로 대체
    • 뷰는 한 번 생성하면 변경이 불가능하기 때문에 새로운 뷰로 대체하는 것으로 뷰에 설정한 필드를 대체할 수 있음
  • 해당 뷰가 존재하지 않으면 CREATE VIEW 문과 같은 결과를 반환
-- 기존의 view_name 이라는 VIEW를 새로운 필드로 설정
CREATE OR REPLACE VIEW [view_name]
SELECT [column_1], [column_2]
FROM [table_name];

 

3. 뷰 수정

ALTER VIEW [view_name] 
SELECT [column_1], [column_2] ...
FROM [table_name]
WHERE [조건];

 

4. 뷰 삭제

DROP VIEW [view_name];
728x90
반응형

댓글