티스토리 뷰

Table


- 사용방법(DQL -데이터 질의어, DML) : select / insert / update / delete

- 정의방법 DDL : create / alter / drop / truncate

 

View


테이블을 기반으로 생성, DB사전에 select 구문으로 정의만 되어있는 가상의 논리적인 테이블

목적 : 보안성, 다양성, 단순성, 편의성, 공간효율성

 

- 사용방법 : select / insert / update / delete

- 정의방법 :  create [ or replace ] / drop 

CREATE [ OR REPLACE ] [ FORCE | NOFORCE ] VIEW view [(alias[, alias]...)]
AS subquery

수정을 원할 시 create or replace (없으면 만들어주고 있으면 수정해달라) => 오라클은 view의 alter가 없다.

 

 

create force view 뷰명

- 베이스 테이블이 있든 없든 만들어줘! => 생성은 되지만 데이터가 없으니 작업이 되진 않는다.

FORCE : 쿼리문의 테이블, 컬럼, 함수 등이 일부 존재하지 않아도 생성
NOFORCE : 쿼리문의 테이블, 컬럼 함수 등이 모두 정상적으로 생성되어 있어야 생성(default 값)

 

column alias가 아닌 방법으로

뷰에서 사용할 컬럼명을 따로 지정하는 방법(짝이 맞아야한다)

CREATE VIEW salvu50(id_number, name, ann_salary)
AS SELECT employee_id, last_name, salary*12
     FROM employees
    WHERE department_id = 50;

 

first_name과 last_name의 문자열을 붙여 name으로 출력되게 한다.

CREATE OR REPLACE VIEW empvu80
	(id_number, name, sal, department_id)	-- alias를 여기서 적용
AS SELECT employee_id, first_name || ' ' || last_name, salary, department_id
   FROM employees
   WHERE department_id = 80;

 

편의성 (복잡한 쿼리 구문을 자주 활용할 때)

부서별 최대, 최소, 급여평균값을 조회할 때 사용하려고 view 생성

CREATE OR REPLACE VIEW dept_sum_vu
	(name, minsal, maxsal, avgsal)
AS SELECT d.department_name, MIN(e.salary),
	MAX(e.salary), AVG(e.salary)
     FROM employees e JOIN departments d
     NO	  (e.department_id = d.department_id)
     GROUP BY d.department_name;

script 파일로 만들면 되는 거 아닌가? => 맞다!

script는 운영체제 단에 저장, 뷰는 DB 안에 저장

 

 

VIEW SELECT하면 DB 내에서 user_obejects => user_views => 테이블을 거쳐 정보를 조회한다.

VIEW를 수정(OR REPLACE)하면 user_views의 정보가 바뀌는 것이다.

VIEW를 삭제해도 베이스 테이블의 데이터가 날라가는 건 아니다. 영향 없음!

 

USER_OBJECTS 딕셔너리는 내 소유의(hr) DB에 존재하는 Object 정보를 관리하는 테이블인데

OBJECT_NAME, OBJECT_TYPE으로 OBJECTS 정보 리스트를 볼 수 있다.

아까 만든 view인 salvu50도 보인다

 

USER_VIEW로 VIEW 리스트도 볼 수 있는데

TEXT를 보니 정말 SELECT 구문으로 정의만 되어있다는 걸 알 수 있다!

 

'배운 것 기록 > DB' 카테고리의 다른 글

[Oracle] Object - Sequence  (0) 2022.08.04
[Oracle] Recyclebin / Flashback / Purge  (0) 2022.07.31
[Oracle] ALTER ADD / MODIFY / DROP / RENAME  (0) 2022.07.29
[Oracle] 제약조건  (0) 2022.07.22
[Oracle] 데이터 타입, 테이블 생성  (0) 2022.07.21
댓글
최근에 올라온 글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함