SQL

[ORACLE]VIEW , 계층구조

seonzone 2021. 8. 1. 01:40

VIEW

View 는 간단히 말하자면 SELECT 문을 저장해서 볼 수 있는 방식이다.

 

사용자에게 보고 싶은 자료를 보여주고 싶을때, 아니면 SELECT 한 문을 View 방식으로 저장하여 View 에서 다시 데이터를 핸들링할때 사용할 수 있다.

 

하지만 물리적으로 존재하지 않기 때문에, 테이블을 정의하는 ALTER 문은 사용할 수 없으며 삭제, 삽입,갱신에 대한 제약이 따른다.

 

뷰를 생성하려면 CREATE OR REPLACE VIEW 뷰 이름 으로 정의해주면 된다.

CREATE OR REPLACE VIEW 뷰 이름 AS SELECT ~ 

예제테이블

 

만약 여기서 ENAME이 법무부만 따로 뽑아서 VIEW 를 생성하려고 하면 WHERE절에 조건을 추가해주면 된다.

CREATE OR REPLACE VIEW LAW 
AS SELECT EMPNO,ENAME,NAME,JOB 
FROM SSANG 
WHERE ENAME = '법무부';

 

이렇게 만들어진 VIEW의 데이터를 다시 핸들링하여 사용 할 수 있으므로 편리함을 가지고 있다 .

 

VIEW 의 삭제는 DROP 명령을 통해 가능하다.

DROP VIEW LAW;

계층 쿼리

계층형 쿼리는 TREE 형태의 구조로 이루어진 형태이다.

SELECT 셀렉트 문법 FROM 테이블 WHERE 조건 START WITH 최상위 조건 CONNECT BY PRIOR 계층형 구조 조건

 

CONNECT BY PRIOR 뒤에는 부모노드와 자식노드를 연결한다.

 

FRUIT이라는 기본 테이블을 생성했다.

과일에서도 색상별로 과일을 구분하고, 색상별로 구별된 과일의 이름을 구분하는 트리형 구조로 설계해보려고 한다.

 

select FRUIT_NAME,FRUIT_PARENT,FRUIT,LEVEL
FROM FRUIT
START WITH FRUIT_PARENT IS NULL 
CONNECT BY PRIOR FRUIT = FRUIT_PARENT;

 

하지만 이렇게 했을 경우 우리가 알고있는 들여쓰기를 한것과 같은 형태로 볼 수 없다.

 

들여쓰기 같은 트리형 구조를 보려면 LEVEL 앞에 공백을 추가하여 보여주면 된다.

select LPAD(' ',2*(LEVEL-1)) || FRUIT_NAME AS  FRUIT_NAME,FRUIT_PARENT,FRUIT,LEVEL
FROM FRUIT
START WITH FRUIT_PARENT IS NULL 
CONNECT BY PRIOR FRUIT = FRUIT_PARENT;