본문 바로가기
WIKI 기술 지식 베이스

CREATE VIEW

원문 보기 위키 갱신

CREATE VIEW는 SELECT 문을 캡슐화한 이름 붙은 뷰를 만들어요.

출처: 문서

본문

SELECT 문을 캡슐화한 이름 붙은 뷰를 만들어요.

문법

CREATE [TEMPORARY] VIEW [IF NOT EXISTS] [schema-name.]view-name
    AS select-statement;

설명

뷰는 SELECT 문으로 정의된 가상 테이블이에요. 디스크에 데이터를 저장하지 않아요 — 뷰를 조회할 때마다 Turso가 기반이 되는 SELECT를 실행해요. 뷰는 복잡한 쿼리를 단순하게 하고, 계속 변하는 테이블 스키마 위에서 안정적인 인터페이스를 제공하고, 어떤 컬럼이나 행이 보이는지 제한해줘요.

매개변수

매개변수 설명
TEMPORARY 뷰를 임시 데이터베이스에 만들어요. 뷰는 현재 연결에서만 보이고, 연결이 닫히면 사라져요. TEMP도 동의어로 받아들여요.
IF NOT EXISTS 같은 이름의 뷰가 이미 있을 때 오류를 막아줘요. 뷰가 있으면 문은 아무 것도 하지 않아요.
schema-name 뷰를 만들 붙은(attached) 데이터베이스 이름. 생략하면 main 데이터베이스. TEMPORARY와 함께 쓸 수 없어요.
view-name 데이터베이스 안에서 고유한 뷰 이름.
select-statement 뷰의 내용을 정의하는 SELECT 쿼리.

동작

  • 뷰는 읽기 전용이에요. 뷰에 대한 INSERT, UPDATE, DELETE는 뷰에 INSTEAD OF 트리거가 정의되어 있지 않으면 지원되지 않아요.
  • SELECT 문은 sqlite_schema 테이블에 저장되고, 뷰가 참조될 때마다 파싱돼요.
  • 뷰가 참조하는 테이블이 삭제되거나 호환되지 않는 방식으로 바뀌면, 그 뷰에 대한 쿼리는 오류를 만들어요.

예제

흔한 쿼리 단순화하기

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

-- Use the view like a table
SELECT * FROM active_users WHERE name LIKE 'A%';

집계 뷰

CREATE VIEW department_stats AS
SELECT
    department,
    COUNT(*) AS employee_count,
    AVG(salary) AS avg_salary
FROM employees
GROUP BY department;

SELECT * FROM department_stats ORDER BY avg_salary DESC;

세션용 임시 뷰

CREATE TEMP VIEW my_tasks AS
SELECT id, title, due_date
FROM tasks
WHERE assignee = 'alice';

더 알아보기 (Learn more)