면접 - 데이터베이스

DB virtual table (데이터베이스 가상 테이블)

snow-line 2020. 7. 31. 18:30
반응형

1. 가상 테이블

 - 트랜잭션이 끝나거나 세션이 끝나는 시점에 초기화된다.

 

 - 다른 사용자와 테이블 공유가 불가능하다.

 

 - ON COMMIT DELETE ROWS : 커밋되면 모두 삭제되는 옵션

 

 - ON COMMIT PRESERVE ROWS : 세션이 종료되어야 테이블의 데이터가 삭제

CREATE GLOBAL TEMPORARY TABLE TEMP01
(
    NO  NUMBER,
    NAME    VARCHAR2(10)
)
ON COMMIT DELETE ROWS;

 

2. 테이블 모든 컬럼 복사해서 생성하기

CREATE TABLE DEPT3 AS SELECT *FROM DEPT2;

 

3. 테이블 특정 컬럼 복사해서 생성하기

CREATE TABLE DEPT4 AS SELECT DCODE, DNAME FROM DEPT2;

 

4. 테이블 구조만 가져오고 데이터 없이 생성하기

CREATE TABLE DEPT5 AS SELECT * FROM DEPT2 WHERE 1=2;

 

5. 가상 컬럼을 갖고 있는 테이블 생성

 - 가상 컬럼에서는 사용자가 데이터를 입력할 수 없다.


 - 제약 조건과 인덱스를 만들 수 있다.


 - 인덱스는 FUNCTION BASED INDEX로 생성된다.

CREATE TABLE VT001
(
    NO1 NUMBER,
    NO2 NUMBER,
    NO  NUMBER GENERATED ALWAYS AS (NO1 + NO2) VIRTUAL
)

 

6. 테이블에서 가상 컬럼 내역 조회

SELECT COLUMN_NAME, DATA_TYPE, DATA_DEFAULT FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 'VT001' ORDER BY COLUMN_ID;

 

7. 조건절을 활용한 가상 컬럼 생성

CREATE TABLE PANMAE10
(
    NO  NUMBER,
    PCODE   CHAR(4),
    PDATE   CHAR(8),
    PQTY    NUMBER,
    PBUNGI  NUMBER(1) GENERATED ALWAYS AS
    (
        CASE
            WHEN SUBSTR(PDATE, 5, 2) IN ('01', '02', '03') THEN 1
            WHEN SUBSTR(PDATE, 5, 2) IN ('04', '05', '06') THEN 2
            WHEN SUBSTR(PDATE, 5, 2) IN ('07', '08', '09') THEN 3
            ELSE 4
        END
    ) VIRTUAL
)

 

반응형