728x90
object
- 종류
- table, sequence, index, view, synonym, progrem unit
- sequence : nextval, currval
- 생성
- insert문에서 column명에 사용
- 변경, 삭제 가능
- index
- column 생성시 자동으로 rowId로 생성
- user가 index 생성시,
- 논리적, 물리적 독립적 테이블
- rowId, index column 값을 가진다.
- 해당 조건을 검색시 b-tree를 통해서 빠르게 탐색
- 사용 조건
- where, join 많이 쓸 때
- 기본 data 값이 많고 찾는 데이터가 10~15%
- column 생성시 자동으로 rowId로 생성
- view
- method()
- orderby 사용 못함
- dml 수행 못함
- 객체, 실제 값 존재 안함
- 자주 쓰이는 join table을 쉽게 사용할 때
- 생성 방법
- 사용 방법
- syonym
- table 명이 있지만 별명을 줘서 별명으로도 접근 가능하도록함
- table, sequence, index, view, synonym, progrem unit
1. sequence
- 생성, 수정, 삭제 가능
- 수정시 주의 사항
- maxvalue는 변경전보다 크거나 같아야한다.
- start with 옵션은 변경 불가
- 문법
- increment by n -- n만큰 증가
- start with n : 생성되는 첫번째 sequence 번호, default 1
- maxvalue n : 생성가능한 최대값
- nomaxvalue n : 기본 옵션 값 존재 10e27
- minvalue n : 생성가능한 sequence의 최소값
- nominvalue : 최소값을 1로 지정
- cycle | nocycle : pk는 nocycle
- cache | nocache
- nextval : 사용 가능한 다음 sequence 값을 반환
- currval: 현재 sequence 값을 포함
--sequence 생성
CREATE sequence seq
INCREMENT by 1
start with 1
MAXVALUE 9
nocache
CYCLE
;
--sequence 제거
drop sequence seq;
--sequence 변경
ALTER sequence seq
increment by 3
-- start with은 이미 시작된 상태에선 변경 불가
MAXVALUE 999 -- 변경전 보다 작을 수 없다.
nocycle
nocache
;
--sequence 생성 확인
SELECT * FROM user_sequences; -- dictionary 접두사 기능
--내가 만든 table에서 연습
SELECT * from MYTABLE m ;
TRUNCATE table student.mytable;
INSERT into STUDENT.MYTABLE m
(id, name)
values(seq.nextval, 'a'); --sequence 이용
-- nextval을 참조한다.
SELECT seq.currval from dual;
2. index
- column 생성시 자동으로 rowId로 생성
- user가 index 생성시,
- 논리적, 물리적 독립적 테이블
- rowId, index column 값을 가진다.
- 해당 조건을 검색시 b-tree를 통해서 빠르게 탐색
- 사용 조건
- where, join 많이 쓸 때
- 기본 data 값이 많고 찾는 데이터가 10~15%
- 비용기준 최적화를 하기 때문에 index 규칙을 항상 따르지 않는다.
-- index 생성
create index myIndex
on myTable(id)
;
-- index 제거
drop index myIndex;
-- index 조회
SELECT *
from ind
;
2.1. 인덱스 활용하기
- index가 사용안되는 조건이 존재
- index column 비교전 변형 일어나는 경우
- 부정 조건 기술
- null로 비교할 경우 - index는 null을 저장하지 않음
-- 컬럼 변형
select id, name, TITLE from s_emp e
where SALARY*12 = 24000;
;
-- 컬럼 변형 안쓰는 방법 - index 사용
select id, name, TITLE from s_emp e
where SALARY = 24000/12;
;
-- 부정
select id, name, TITLE from s_emp e
where title <> '사원'
;
-- 부정 안쓰는 방법 - index 사용
select id, name, TITLE from s_emp e
where not exists (SELECT 'x' from S_EMP se WHERE e.title = '사원')
;
3. view
- table이나 다른 view를 기초로 한 가상 table
- view 자체 데이터는 없지만 table 데이터를 보거나 변경할 수 있는 창과 같다.
- 실제적으로 sql문으로 저장
- method()
- 자주 쓰이는 join table을 쉽게 사용할 때 사용
- 생성 문법
- create [or replace] [force | noForce] view이름 -- force : 기본 table 유무 상관없이 일단 만듬
as subquery -- as : subquery로 선택된 값에 대한 컬럼명
[with check option [constraint 제약조건]] -- view에 의해 접근된 행만 입력,수정 가능
[with read only] -- dml 수행 막음
- create [or replace] [force | noForce] view이름 -- force : 기본 table 유무 상관없이 일단 만듬
- 생성 특징
- view를 정의하는 sql문에는 order by 사용 불가
- subquery 에 join 조건, group, distinct 존재시 dml 연산 불가
-- view 생성
create view myView as --table을 생성하는 거이여서 as 사용
select id, name
from S_EMP se ;
-- view 제거
drop view myView ;
-- view 조회
SELECT * from user_views;
-- view를 통한 조회
SELECT * from myView;
4.syonym
- table 명이 있지만 별명을 줘서 별명으로도 접근 가능하도록함
reate synonym mt
for myTable;
SELECT * from mt;
SELECT * from user_synonyms;
drop synonym mt;