티스토리 뷰
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 정보 리스트를 볼 수 있다.
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 |