반응형





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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* 
    Sequence (시퀀스) 
        : 순서
        : 연속적인 번호를 만들어 주는 기능
        : 각각의 레코드가 추가될 때마다 자동으로 줄번호가 생기는 것
        : mySQL에서 auto_increment 사용
        : 오라클에서는 시퀀스 제공
    
    구문형식
    create sequence 시퀀스 이름
       
        increment by n <- 증가값(n) 설정, 기본값은 1 
        start with n <- 시작값(n) 설정, 기본값은 1
       
        maxvalue n   <- 시퀀스 최대값(n) 설정
        nomaxvalue n  <- 맥스를 설정하지 않고 계속 증가하게 함
       
        minvalue n <- 시퀀스 최소값 : cycle옵션일 경우 시작 값
        nominvalue n <- 최소를 설정하지 않고 계속 증가하게 함
        
        cycle <- 시퀀스를 순환사용할지 설정
        nocycle
       
        cache n <- 시퀀스의 속도를 개선하기 위해 캐싱여부 지정
        no cache n
    
*/
 
/* 시퀀스 생성 : 제품번호 생성하는 시퀀스 만들기 */
 
create sequence seq_serial_no
increment by 1
start with 100
maxvalue 110
minvalue 99
cycle
cache 2;
 
 
 
create table good(
    good_no number(3),
    good_name varchar2(10)    
);
 
 
 
insert into good 
values (seq_serial_no.nextval, '제품1');
 
insert into good 
values (seq_serial_no.currval, '제품1');
 
 
 
 
/*  
   nextval : 다음 value
   currval : 현재 value
*/
 
insert into good 
values (seq_serial_no.nextval, '제품2');
 
 
select * from good;
 
 
select seq_serial_no.currval from dual;
 
 
 
/* 
    제품번호가 Maxvalue인 110까지 생성된 이후(Cycle이 끝난 후) 한번 더 생성하면
    minvalue인 99로 생성됨
 */
 
insert into good 
values (seq_serial_no.nextval, '제품12');
 
 
create table good2(
    good_no number(3),
    good_name varchar2(10)
    );
    
 
create sequence seq_serial_no2
increment by 1
start with 100
maxvalue 105
cache 2;
 
 
insert into good2
values (seq_serial_no2.nextval, '제품1');
commit;
 
 
select * from good2;
 
 
 
/* 
    데이터베이스 다운시키는 명령어
    cmd창에서 입력
    sqlplus 
    hr
    비번입력
    select * from good2;
    
    conn sys/비번 as sysdba;
    
    shutdown abort;
    데이터베이스 시작시키는 명령어
    starup
    conn hr /비번
    select * from good2;
    
    insert into good2 values(seq_serial_no2.nextval,'제품2');
    select * from good2;
    
 */
 
 
/* 시퀀스 삭제 */
drop sequence 시퀀스명;
 
 
/* 
    시퀀스 감소
    increment by 1 값에 음수를 적용 
*/
cs


반응형

'프로그래밍 > SQL' 카테고리의 다른 글

[Oracle SQL] PL/SQL  (0) 2017.08.21
[Oracle SQL] 계층형 쿼리  (0) 2017.08.17
[Oracle SQL] VIEW  (0) 2017.08.16
[Oracle SQL] 무결성 제약조건  (0) 2017.08.12
[Oracle SQL] INSERT, UPDATE, DELETE, COMMIT, ROLLBACK  (0) 2017.08.10

+ Recent posts