예제95. 복잡한 쿼리를 단순하게 하기1 : VIEW
- create view 뷰명
as
(select 문)
- 테이블 중 일부 데이터만 볼 수 있도록 하는 것.
※ 뷰를 사용하는 이유
- 보안상의 이유로 다른 데이터에 대해 접근할 수 없도록 할 때
- 복잡한 쿼리 간단하게 검색하고자 할때
- 바라보기만 하는 것이기 때문에 데이터를 가지고 있지 않음.
- view에 대하여 update수행했을 때 원본 테이블 데이터도 수정됨..
예제96. 복잡한 쿼리를 단순하게 하기1 : VIEW
- group 함수로 view를 만들 때는 새로 생기는 컬럼에 대해 컬럼별칭을 꼭 써야 생성 가능.
예제97. 검색 속도 높이기 객체 : INDEX
- 목차의 개념/전체를 다 읽지 않아도 됨(Full table scan)
create index 인덱스명
on 테이블명(컬럼명);
- 실행계획으로 생성됐는지 확인하기
※ 실행계획 보는 법
explain plan for
쿼리문
select * from table(dbms_xplan display);
※ index 보는 법
select 인덱스 생성한 컬럼명, rowid
from 테이블명
where 인덱스 생성한 컬럼 > = 0 ;
- where절 조건은 index 컬럼이 숫자인 경우, >=0
문자인 경우, > ' '
- 이 경우, 데이터를 인덱스에서 가져오므로 자동으로 정렬됨.
cf. rowid 컬럼 : 행의 물리적인 주소
구성 : file번호 + 블럭번호 + row번호
- 인덱스 외에 테이블에도 rowid 존재함.
cf. 객체의 종류 : 테이블, 뷰, 인덱스
예제98. 중복되지 않는 번호 만들기(SEQUENCE)
create sequence 시퀀스명
select 시퀀스명.nextval
from dual;
- select 문 실행 시마다 번호 올라감.
create sequence seq2
start with 1
maxvalue 100
increment by 1
nocycle;
-> 1부터 100까지 cycle 없이 시퀀스 생성하고 그 이후는 생성못하고 error
-> cycle로 하면 다시 1로 돌아감
-> cycle 부분은 생략하여 작성가능
- 테이블 내에 시퀀스 사용한 컬럼 만들기 가능
insert into 테이블명
values( 시퀀스명.nextval, 데이터...)
'Skill > Oracle' 카테고리의 다른 글
Oracle 중급8 : 데이터 품질 높이기(primary key,unique) (0) | 2022.05.10 |
---|---|
Oracle 중급 7 : Flashback (0) | 2022.05.10 |
Oracle 중급5 : DDL (0) | 2022.05.10 |
Oracle 중급 4: 계층형 질의문 (0) | 2022.05.10 |
Oracle 중급3 : DML문, LOCK (0) | 2022.05.06 |