컴퓨터/데이터베이스

[데이터 베이스] VIEW

sidedoor 2024. 2. 12. 22:33

VIEW 하나 이상의 테이블에서 가져온 데이터를 기반으로 하는 가상 테이블로 데이터베이스 내에서 실제로 데이터를 저장하지 않고 정의된 SELECT 문에 기반한 결과 세트를 제공한다.

 

VIEW를 사용하면 복잡한 쿼리를 단순하게 표현할 수 있고, 데이터 접근을 제한하여 데이터를 쉽게 관리할 수 있다.

VIEW를 사용하면 특정 열이나 행만을 노출시키고 나머지 데이터는 숨길 수 있어 사용자가 접근할 수 있는 데이터를 제한할 수 있다.

그리고 복잡한 쿼리를 VIEW로 정의해두면 쿼리를 직접 실행하지 않고 VIEW를 통해 필요한 데이터에 접근할 수 있고, 한 번 정의를 하면 데이터베이스 내에서 재사용될 수 있어 코드의 중복을 줄이고 일관성을 유지할 수 있다.

 

다만 VIEW가 하나 이상의 기반 테이블에 의존하기 때문에 기반 테이블의 구조가 변경될 경우 VIEW도 그에 맞게 수정해야 하기 때문에 유지 보수의 복잡성을 증가시킨다.

 

CREATE VIEW view_name AS -- view_name이라는 이름으로 아래의 쿼리에 해당하는 내용을 view를 저장
SELECT column1, column2
FROM table_name
WHERE condition;

SELECT * FROM view_name; -- 저장된 view의 내용을 출력

 

- CREATE OR REPLACE VIEW

이는 새로운 VIEW를 생성하거나 이미 존재하는 VIEW가 있다면 그 VIEW를 새 정의로 대체한다.

이 명령어는 VIEW의 정의를 변경할 때 유용하게 사용되며 VIEW가 이미 존재하는 경우 새로 DROP하고 CREATE하는 과정 없이 한 번에 VIEW를 업데이트할 수 있다.

 

- ALTER

테이블, 열, 인덱스 등과 같은 데이터베이스 객체의 구조를 변경하는 데 사용된다.

테이블에 열을 추가하거나, 열의 데이터 타입을 변경하고, 제약조건을 추가하거나 변경하는 등의 작업을 수행할 수 있다.

 

ALTER TABLE employees ADD COLUMN email VARCHAR(255);  -- employees테이블에 email열 추가
ALTER TABLE employees ALTER COLUMN salary TYPE NUMERIC; -- employees테이블에 타입 NUMERIC으로 변경

 

- DROP

더 이상 필요하지 않거나 잘못 생성된 VIEW를 정리할 때 데이터베이스에서 삭제하는 명령어이다.

DROP VIEW if EXISTS view_name;

 

이때 if EXISTS는 해당 VIEW가 존재하지 않는 경우에도 오류를 발생시키지 않고 명령어를 무시하게 한다.