뷰란 두 개의 테이블에서 일부 컬럼을 조합해 하나의 가상 테이블을 만드는 기능이다.

말 그대로 가상이기 때문에 실제 테이블로 생성되진 않지만 DB가 종료되는 시점까진 유지된다.

 

본격적으로 뷰에 대한 내용을 작성하기 전 OR REPLACE 에 대해 잠시 집고 넘어간다.

 

1. OR REPLACE

OR REPLACE란 이전에 사용된 오브젝트가 있다면 덮어 씌운다는 의미이다.

주로 사용되는 구문은 뷰, 프로시저, 함수를 만들 때 주로 사용된다.

뷰를 생성시 OR REPLACE 가 붙는 다면 기존에 생선된 뷰에 다른 내용이 추가된다면 새로 수정한다는 의미이다.

 

2. 뷰 생성하기

뷰를 생성할 때는 보통 내부 조인과 함께 사용된다.

우선 오늘 사용할 예제의 테이블 다음과 같다.

CREATE TABLE HUMAN
(
H_NO NUMBER(5),
H_NAME NVARCHAR2(10),
H_AGE NVARCHAR2(5)
);

CREATE TABLE CAR
(
C_H_NO NUMBER(5),
C_NO NUMBER(5),
C_NAME NVARCHAR2(10)
);

INSERT INTO HUMAN VALUES (1, '홍길동', 20);
INSERT INTO HUMAN VALUES (2, '고길동', 25);
INSERT INTO HUMAN VALUES (3, '박길동', 30);

INSERT INTO CAR VALUES (1, '2000', '티코');
INSERT INTO CAR VALUES (2, '2001', '마티즈');
INSERT INTO CAR VALUES (3, '2002', '아반떼');
 

사람 테이블과 자동차 테이블을 만들며 사람의 번호와 차 주인의 번호를 사용하였다.

이제 뷰를 생성하여 두 테이블에서 필요한 컬럼만 가져와 출력할 것이다. 이 때 사람의 이름과 차종을 출력한다.

CREATE OR REPLACE VIEW CAROWNNER AS
SELECT H.H_NAME, C_NAME
FROM HUMAN H INNER JOIN CAR C
ON H.H_NO = C.C_H_NO;
 

위의 코드는 뷰를 생성한 구문이다.

뷰의 이름은 CAROWNNER 이며 표시할 데이터는 사람의 이름, 차의 이름 이다.

서로 다른 테이블을 합치기 위해 내부조인을 사용하였다.

위의 코드가 제대로 실행되었는지 확인하기 위해 SELECT 해보면 다음과 같다.

SELECT * FROM CAROWNNER;
 
대표사진 삭제

실행 결과

뷰는 가상이긴 하지만 어쨌든 테이블이므로 SELECT 에서 출력하는 방법은 테이블과 동일하다.

 

이번에는 위에서 언급한 OR REPLACE를 확인하기 위해 차의 번호까지 추가하여 뷰를 생성하였다.

CREATE OR REPLACE VIEW CAROWNNER AS
SELECT H.H_NAME, C_NAME, C_NO
FROM HUMAN H INNER JOIN CAR C
ON H.H_NO = C.C_H_NO;
 

코드를 보면 C_NO 가 추가되었으나 별도로 DROP하여 삭제하지 않아도 정상적으로 생성이 가능하다.

다시 SELECT 해보면 정상적으로 실행된 것을 확인할 수 있다.

대표사진 삭제

실행 결과

3. 뷰 삭제하기

뷰는 가상의 테이블이므로 자동으로 소멸되는 시점이 존재한다. 하지만 수동적으로 삭제하고 싶다면 아래의

구문을 실행하면 된다.

대표사진 삭제

실행 결과

 

 

'DB > 구자료' 카테고리의 다른 글

PL / SQL  (0) 2022.08.28
INDEX  (0) 2022.08.28
시퀀스 (SEQUENCE)  (0) 2022.08.28
SYNONYM(동의어)  (0) 2022.08.28
ABS, CEIL, FLOOR, ROUND, MOD, TRUNC, LOWER, UPPER  (0) 2022.08.28

+ Recent posts