Chillax in dev

Oracle 기초 공부 04 : DDL view(뷰), sequence(시퀀스) 본문

DataBase 공부/Oracle

Oracle 기초 공부 04 : DDL view(뷰), sequence(시퀀스)

Seong Story 2020. 7. 12. 19:05
728x90

Oracle 기초 공부 04 : DDL view(뷰), sequence(시퀀스)를 공부하자.

- 이번에는 DDL의 뷰와 시퀀스를 배워 봅니다. 먼저 간단한 용어부터 알아보면 뷰와 시퀀스 모두 오라클에서 제공하는 객체입니다.

- 뷰(view)

- 뷰(view) : 물리적인 테이블에 근거한 논리적인 가상 테이블인데요.가상이란 단어는 실질적으로 데이터를 저장하고 있지 않기 때문에 붙인 것이고, 그럼에도 테이블이란 단어는 실질적으로 데이터를 저장하고 있지 않더라도 사용 계정자는 마치 테이블을 사용하는 것과 동일하게 뷰를 사용할 수 있기 때문에 붙여진 것입니다.
뷰는 결국 기본테이블에서 파생된 객체로서 기본 테이블에 대한 하나의 함수처럼 생각해도 좋겠네요.  실제 테이블에 저장된 데이터를 뷰를 통해서 볼 수 있도록 합니다. 사용자에게 주어진 뷰를 통해서 기본 테이블을 제한적으로 사용할 수 있습니다. 뷰는 이미 존재하고 있는 테이블에 제한적으로 접근하도록 합니다.
- 뷰를 생성하기 위해서는 실질적으로 데이터를 저장하고 있는 물리적인 테이블이 존재해야 되는데 이 테이블은 기본 테이블이라고 합니다
- 두개이상의 테이블 또는 한 개의 테이블이나 또 다른 뷰를 참조하는 객체입니다
- 저장된 테이블이라기 보다 공식 또는 select 문을 갖고 있다가 명령대로 불러와 그때그때 구성하는 형식입니다
- 원본의 데이터 변화는 실시간으로 반영됩니다!

 

1
2
생성 방법
Create or Replace View 뷰이름 as (select 구문)
cs

- 시퀀스(sequence)

- 시퀀스(sequence) : 유일한 값을 생성해주는 오라클 객체! 이는 시퀀스를 생성하여 마치 기본키(primary key)와 같이 순차적으로 증가하는 칼럼을 자동으로 생성해줍니다.

- 시퀀스는 이런 성질 때문에 대량의 데이터를 다룰 때 기본키의 값을 생성하기 위해 사용하고 시퀀스는 테이블과는 독립적으로 저장되고 만들어지기 때문에 하나의 시퀀스를 생성하여 여러 테이블에 적용하여 활용하면 좋습니다.

 

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
32
33
34
35
36
37
38
39
40
41
42
생성 방법
-- create sequence 시쿼스 이름 start with 시작 숫자 increment by 증가량;
 
--[1] 샘플 테이블 생성
create table memos(
 num  number(4constraint memos_num_pk primary key,
 name  varchar2(20constraint memos_name_nn not null,
 postDate  Date default(sysdate)
);
 
--[2] 해당 테이블의 시퀀스 생성
create sequence memos_seq start with 1 increment by 1;
-- memos_seq : 시퀀스의 이름
-- start with 1 : 시작 숫자
-- increment by 1 : 증감량
 
--[3] 데이터 입력 : 일련번호 포함
insert into memos(num, name) values(memos_seq.nextVal , '홍길동');
insert into memos(num, name) values(memos_seq.nextVal , '이순신');
insert into memos(num, name) values(memos_seq.nextVal , '강감찬');
insert into memos(num, name) values(memos_seq.nextVal , '유관순');
insert into memos(num, name) values(memos_seq.nextVal , '장영실');
 
select * from memos;
 
--[4] 현재 시퀀스가 어디까지 증가되어져 있는지 확인.
select memos_seq.nextVal, memos_seq.currval from dual;
 
--[5] 시퀀스 수정 : 최대 증가값을 14까지로 제한.
alter sequence memos_seq  maxvalue  14;
insert into memos(num, name) values(memos_seq.nextVal, '안중근');
insert into memos(num, name) values(memos_seq.nextVal, '김구');
insert into memos(num, name) values(memos_seq.nextVal, '세종대왕');
insert into memos(num, name) values(memos_seq.nextVal, '안중근');
insert into memos(num, name) values(memos_seq.nextVal, '김구');
select * from memos;
 
--[6] 시퀀스 삭제
drop sequence memos_seq;
--[7] 시퀀스 재생성 : 14 다음 숫자부터 시작하게 하여 기존 레코드와 중복 되지 않게 합니다
create sequence memos_seq start with 15 increment by 1;
 
cs

 

정리

- 뷰 : 실제 데이터는 건들지 않고 원하는 내용만 가져다 모아서 확인할 수 있는 가상의 테이블. 뷰는 실제 테이블에 제한적으로 접근하도록 하여 보안에도 유리함.

-시퀀스 : 기본키를 효과적으로 사용하기 위한 일련번호 자동 생성기이다!

728x90
LIST
Comments