본문 바로가기
DB/이론 및 개념

[day_03] DB / 06. SQL 기본 4 - Oracle SEQUENCE 시퀀스

by 파프리카_ 2020. 8. 10.
728x90
반응형

[ Review 복습 ]

 

Java application JDBC Interface DBMS
 

- Connection
- PreparedStatement
- ResultSet

- Oracle SQL
- Mysql
- mssql

 

JDBC Interface 사용 이유 : 응집도 ↑ 결합도 ↓

→ 데이터 베이스의 종류는 다양하기 때문에, 단일한 방법으로 사용하기 위해서, Java application에서 JDBC의 인터페이스를 implements(구현)하기만 하면 사용할 수 있는 간편함을 지니기 때문이다. (Encapsulation)

→  DBMS에서 데이터가 변경되더라도, interface에서 연동이되기 때문에 유지보수에 용이하다 (Polymorphism 다형성)

 

JDBC 실행단계

정보 조회 시 정보 수정 시
1. 드라이버 로딩
→ Class.forName(class);
1. 드라이버 로딩 
→ Class.forName(class);
2. 연결 
→ Connection
2. 연결 
→ Connection
3. SQL문 정의 : SELECT 3. SQL문 정의 : DELETE, INSERT .. 
4. PreparedStatement 정의
4. PreparedStatement 정의
5. SQL문 완성 : ? 채우기
→ setString() / setId()
5. SQL문 완성 : ? 채우기 -- 3단계에서 ? 가 있었다면
→ setString() / setId()
6. SQL문 실행하여 ResultSet에 할당
→ 실행 함수 : rs = pstmt.executeQuery()
6. SQL문 실행
→ 실행 함수 : pstmt.executeUpdate(sql)
7. ResultSet
→ rs.next()
→ rs.getString() / getInt()
 

 


[ SEQUENCE ]

 : 순차적으로 증가하는 유일한 값을 생성하기 위한 객체

 * 주로 primary key (unique + not null) 를 생성하기 위해 사용하며, 테이블과는 독립적 구조이다.

 

생성 방법

CREATE SEQUENCE 시퀀스명
 [ START WITH	 시작번호 ]
 [ INCREMENT BY	 증가값 ]
 [ MAXVALUE		 최대값 ]
 [ MINVALUE		 최소값 ]
 [ CYCLE ] or [ NOCYCLE ]   //반복할것인지 여부
 [ NOCACHE ]                 //비정상 종료 시에도 sequence가 이어지도록

 

CREATE SEQUENCE test_seq;

 

삭제 방법

DROP SEQUENCE test_seq;

Oracle dual table

: 오라클에서 제공하는 기본 테이블

- 컬럼 하나만 존재, 주로 시퀀스 또는 날짜함수, 산술연산에 사용
- sys Admin 계정에서 관리하며, 수정 및 삭제 등 조작은 불가

 

조회 방법

SELECT 	* 
FROM 	dual;

 

dual table을 이용해 생성한 시퀀스 값을 확인

시퀀스명.nextval 로 생성 → 다음 시퀀스 값을 생성(계속 값이 증가됨)

SELECT 	test_seq.nextval
FROM	dual;

 

현재 시퀀스 값을 확인

시퀀스명.currval 로 생성 → 하나의 컨넥션(session)에서 nextval 후에만 currval 사용 가능

: 다수의 사용자들에 의해 공유되는 시퀀스이므로, 하나의 컨넥션(session)에서만 시퀀스 현재값을 볼 수 있다.

SELECT 	test_seq.currval
FROM	dual;

* Session(세션) 이란?

 : 장치 간의 정보교환 

( 서버 - 클라이언트 시스템에서,

클라이언트 쪽에서 정보교환에 사용되는 것 →  쿠키

서버 쪽에서 정보교환에 사용되는 것 →  세션 )

 

 


SEQUENCE 활용 예제

 

 CAR table 생성해서 시퀀스 적용해보기

 

1. CAR table 테이블 생성

CREATE TABLE car(
  car_no  NUMBER	    PRIMARY KEY, -- 시퀀스 자동발급
  model	  VARCHAR2(100) NOT NULL
  )

 

2. car_seq 이름으로 시퀀스 생성

CREATE SEQUENCE car_seq;

 

3. sequence로 insert해보기

INSERT INTO car(car_no, model) VALUES(car_seq.nextval, '소나타');
INSERT INTO car(car_no, model) VALUES(car_seq.nextval, '말리부');

 

CAR table 결과


추가 예제 →  https://creamilk88.tistory.com/61

 

CODE [day_03] DB / 05. SEQUENCE 시퀀스(SQL 쿼리, java JDBC)

SQL GUESTBOOK Table 생성 CREATE TABLE guestbook( guestbook_no NUMBER PRIMARY KEY, title VARCHAR2(100) NOT NULL, content VARCHAR2(1000) NOT NULL ); guestbook_seq Sequence 생성 CREATE SEQUENCE guestbo..

creamilk88.tistory.com

 

728x90
반응형