■ 시퀀스란?
오라클에서 순서를 지정해주는 객체 **오라클에서만 사용 가능 |
[1] 시퀀스의 생성
CREATE SEQUENCE seq_테이블명_idx START WITH 1 INCREMENT BY 1;
-- 또는
CREATE SEQUENCE seq_테이블명_idx;
[2] 데이터 추가 시 시퀀스 추가 - 시퀀스명.nextVal
INSERT INTO sungtb VALUES(seq_sungtb_idx.nextVal, '일길동', 90, 80, 70);
[3] 시퀀스의 삭제
DROP SEQUENCE seq_sungtb_idx
■ 인덱스란?
데이터베이스에서 데이터를 빠르게 탐색하기 위해 붙인 색인(포인터) |
인덱스를 사용해야 하는 경우
- 데이터 양이 많고 검색이 수정보다 빈번한 경우
- 도메인의 값이 다양한 값을 가지는 경우
인덱스를 사용할 때 주의할 점
- 인덱스를 사용하는 열에 NULL이 지나치게 많으면 효율이 떨어진다.
■ NVL함수를 통해 인덱스 형성하기
[문법]
NVL(MAX(idx),0)+1
--> (1) Max(idx)는 idx칼럼에서 가장 큰 수를 반환
--> (2) NVL(a , 0) : a라는 칼럼에 NULL이 없으면 (or a라는 데이터가 있으면) 해당 데이터 반환
-- 그렇지 않고 NULL만 있으면 0으로 데이터를 대체한다.
--> 곧, idx에 데이터가 없으면 0을 넣고, 있으면 그 데이터에 +1을 하겠다.
SELECT NVL(MAX(idx), 0) + 1 FROM book;
--> book이라는 테이블에서 가장 큰 인덱스 값을 가져오고 +1을 한다.
[예시]
CREATE TABLE book
(
idx INT,
name CHAR(3 CHAR) NOT NULL,
price INT
);
ALTER TABLE book
ADD CONSTRAINT pk_book_idx PRIMARY KEY(idx);
-- SAMPLE DATA 입력
INSERT INTO book VALUES((SELECT nvl(MAX(idx), 0) + 1 FROM book),'Java',20000);
INSERT INTO book VALUES((SELECT nvl(MAX(idx), 0) + 1 FROM book),'Oracle',30000);
INSERT INTO book VALUES((SELECT nvl(MAX(idx), 0) + 1 FROM book),'HTML',24000);
INSERT INTO book VALUES((SELECT nvl(MAX(idx), 0) + 1 FROM book),'JSP',22000);
[출처]
- 인덱스 참조
https://ltk3934.tistory.com/67
https://coding-factory.tistory.com/746
- 시퀀스 참조
'Language > SQL' 카테고리의 다른 글
[DATABASE] JAVA프로그램과 DB 연결하기 (0) | 2022.04.21 |
---|---|
[DATABASE] JOIN (0) | 2022.04.21 |
[DATABASE] DB모델링, 정규화와 이상현상, 역정규화 (0) | 2022.04.19 |
[DATABASE] 뷰 (VIEW), 인라인 뷰 (0) | 2022.04.19 |
[DATABASE] DECODE, CASE~END 문 (0) | 2022.04.18 |