개발로그필름

[SQL] VIEW 본문

IT/SQL

[SQL] VIEW

yuullog 2025. 3. 11. 14:31
728x90
반응형
SMALL

 

반응형

 

 

1. VIEW란?

  • SQL에서 가상의 테이블을 의미
  • 실제 데이터를 저장하지 않지만, 기존 테이블의 데이터를 특정한 형태로 보여주는 역할을 한다
  • 특정 조건을 만족하는 데이터를 자주 조회해야 한다면 매번 복잡한 SELECT 문을 실행하는 대신 VIEW를 만들어 놓고 간단하게 사용할 수 있다

 

 

 

2. VIEW를 사용하는 이유

 코드 단순화: 복잡한 SELECT 문을 단순하게 사용할 수 있음
 보안 강화: 원본 테이블의 일부 데이터만 노출 가능
 재사용성 증가: 여러 쿼리에서 동일한 VIEW를 활용 가능
 가독성 향상: SQL 코드가 더 읽기 쉬워짐

 

 

 

3. VIEW 기본 사용법

(1) VIEW 생성 (CREATE VIEW)

CREATE VIEW view_name AS
SELECT column1, column2
FROM table_name
WHERE condition;

✅ view_name: 생성할 VIEW의 이름
✅ table_name: 원본 테이블 이름
✅ condition: 특정 조건을 지정할 수도 있음

 

예제

CREATE VIEW active_users AS
SELECT id, name, email
FROM users
WHERE status = 'active';

 active_users VIEW는 users 테이블에서 status='active'인 사용자만 조회할 수 있다

 

 

 

4. VIEW 사용하기

VIEW는 일반 테이블처럼 SELECT 문을 사용해서 조회할 수 있다

SELECT * FROM active_users;

 active_users VIEW는 users 테이블을 직접 조회하는 것처럼 사용할 수 있다

 

 

 

5. VIEW 수정 (CREATE OR REPLACE VIEW)

VIEW를 수정할 때는 CREATE OR REPLACE VIEW를 사용하면 된다

CREATE OR REPLACE VIEW active_users AS
SELECT id, name, email, created_at
FROM users
WHERE status = 'active';

✔ 기존 VIEW를 삭제하지 않고 바로 수정 가능

 

 

SMALL

 

 

 

6. VIEW 삭제 (DROP VIEW)

VIEW를 삭제하려면 DROP VIEW를 사용

DROP VIEW active_users;

✔ VIEW를 삭제하면 더 이상 사용할 수 없다

 

 

 

7. VIEW의 단점

 INSERT, UPDATE, DELETE 제한: VIEW는 읽기 전용인 경우가 많음
 퍼포먼스 이슈: 원본 테이블이 크면 VIEW 조회 속도가 느릴 수 있음
 복잡한 VIEW: 너무 많은 조인을 포함하면 성능 저하 가능

하지만, WITH CHECK OPTION을 사용하면 업데이트가 가능한 VIEW를 만들 수도 있음!

CREATE VIEW modifiable_view AS
SELECT id, name, status
FROM users
WHERE status = 'active'
WITH CHECK OPTION;

 WITH CHECK OPTION을 사용하면, status='active'를 유지하는 범위 내에서만 데이터 변경 가능

 

 

 

8. 최신 SQL 표준 및 주요 DBMS 지원

VIEW 지원 여부

✅ MySQL, PostgreSQL, SQL Server, Oracle 등 대부분의 DBMS에서 지원
✅ 최신 SQL 표준에서도 VIEW는 계속 사용 가능
✅ MySQL 8.0+, PostgreSQL 14+, SQL Server 2019+에서 최적화된 VIEW 기능 제공

 

 

 

9. 결론

📌 VIEW는 가상의 테이블로, 데이터 조회를 더 쉽고 효율적으로 할 수 있는 기능!
📌 보안, 코드 단순화, 재사용성 증가 등의 장점이 있음!
📌 INSERT/UPDATE/DELETE 제한이 있을 수 있으므로, 사용 목적을 잘 고려해야 함!
📌 최신 MySQL, PostgreSQL, SQL Server에서도 강력하게 지원됨!

반응형
LIST