: 물리적인 테이블에 근거한 논리적인 가상테이블로 현업에서 많이 사용한다. 조건에 맞는 원본을 모아 놓은 가상테이블이기 때문에, 매번 복잡한 조건을 가진 원본을 불러올 필요가 없다. (view는 DML작업 가능)
단일뷰 (하나의 테이블) 생성
create view ed_view
as (select *
from emp);
create or replace view: 뷰가 있으면 수정하고, 없으면 만들기
수정을 가하면 원본 뷰가 바뀌므로, 수정할 때마다 뷰를 새로 만들 필요가 없다.
create or replace view ed_view2 -- 복합뷰 (여러개의 테이블)
as (select e.ename,d.dname,d.deptno
from emp e,dept d
where e.deptno=d.deptno);
: 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체(번호표)이다.
주로 PK대용으로 쓰므로 순환하지 않는다. 또한 옵션을 쓸 때는 ,가 필요 없다.
*시퀀스 생성 접속 > 시퀀스 우클릭 > 시퀀스 생성 에서 쿼리를 확인할 수 있다.
create sequence seq --시퀀스 이름
increment by 1 --증감숫자 1
start with 2 --시작숫자 2
minvalue 1 -- 최소값 1
maxvalue 1000 --최대값 1000
nocycle --순환하지 않음
cache 2; -- 메모리에 시퀀스값 미리 할당
create table seq_table2(aa number ,userid varchar2(20));
insert into seq_table2 values(seq.nextval,'abc');
select * from seq_table2;
select seq.currval from dual; --해당 시퀀스 값 조회
: 행으로 빠르게 찾을 수 있기 때문에, 탐색시간을 절약할 수 있다.
CREATE INDEX [인덱스명]
ON [테이블명](컬럼1, 컬럼2, 컬럼3.......)
-단일인덱스/원하는 테이블의 컬럼을 인덱스로 지정
create index idx_emp_nm
on emp(ename); --emp테이블의 ename열에 대한 quert엑세스 속도 향상
--- 복합인덱스
create index idx_emp_nm_job
on emp(ename,job);
-- 복합인덱스 조회
select *
from emp
where ename = 'ALLEN' and job = 'SALEMAN';
--인덱스 삭제
DROP INDEX [인덱스 명]
인덱스 효과를 못보는 경우
1) 원본 컬럼에 변형을 가한 WHERE문 EX) TO_CHAR(HIREDATE,'YYYY') = '1980'
2) like 연산은 인덱스 X
3) 복합 인덱스 컬럼 순서를 따르지 않고 조회
잦은 변경이나 삭제가 있는 테이블에서 인덱스를 많이 생성하는 것은 좋지 않다.