본문 바로가기
STUDY/ORACLE

Oracle 9일차(1)-INDEX, SEQUENCE

by Anne of Green Galbes 2019. 1. 18.

1.INDEX

▶테이블의 컬럼에 인덱스 생성

CREATE INDEX 인덱스이름

ON 테이블(컬럼);


CREATE INDEX PER_PAY_IDX

ON PERSONNEL(PAY);


인덱스 확인

SELECT * FROM USER_INDEXES;


▶PK생성시 INDEX 동시 생성

NON-CLUSTERED로 생성 : 정렬X

CREATE TABLE AAA

(ID NUMBER(4) CONSTRAINT AAA_ID_IDX PRIMARY KEY,

NAME CHAR(10));


SELECT * FROM USER_CONSTRAINTS;


SELECT * FROM USER_INDEXES;


INSERT INTO AAA VALUES (3,'K');

INSERT INTO AAA VALUES (2,'N');

INSERT INTO AAA VALUES (1,'E');

INSERT INTO AAA VALUES (4,'O');


PRIMARY KEY를 통해 생성한 인덱스는 PRIMARY KEY를 삭제하면 같이 지워짐

ALTER TABLE AAA

DROP PRIMARY KEY;


SELECT * FROM USER_CONSTRAINTS;

SELECT * FROM USER_INDEXES;



2.SEQUENCE : 일련번호

▶자동으로 번호를 붙여줌

▶시작값, 끝값, 증가/증감값 을 정해줌

▶일련번호의 역할X : 1 2 3 4 5 6 7 →4 삭제 → 1 2 3 5 6 7

고유값을 정해 줌

▶ROWNUM

SELECT ROWNUM,PNAME FROM PERSONNEL;


▶SEQUENCE 생성

CREATE SEQUENCE DIV_DNO

START WITH 시작번호

INCREMENT BY 증가 번호

MAXVALUE 마지막번호 / NOMAXVALUE : 마지막 값X

CYCLE / NOCYCLE : 반복O 1,2,3,...99,100,1,2,3,...99,100,1,2... / 반복X

CACHE / NOCACHE : 메모리에 일정 인덱스 숫자를 저장. 다 쓰면 다시 일정숫자를 올림 / 그러지 않음


CREATE SEQUENCE DIV_DNO

START WITH 90

INCREMENT BY 1

MAXVALUE 99

NOCYCLE

NOCACHE;


생성된 SEQUENCE 확인

SELECT * FROM USER_SEQUENCES;


NEXTVAL/CURRVAL

○NEXTVAL : SEQUENCE의 다음번호(SEQUENCE이름.NEXTVAL)

                     SELECT DIV_DNO.NEXTVAL FROM DUAL;

○CURRVAL : SEQUENCE의 현재번호(SEQUENCE이름.CURRVAL)

                      SELECT DIV_DNO.CURRVAL FROM DUAL;

INSERT INTO DIVISION VALUES

(DIV_DNO.NEXTVAL,'AA','123','AA');


INSERT INTO DIVISION VALUES

(DIV_DNO.NEXTVAL,'BB','123','BB');


▶SEQUENCE 수정

ALTER SEQUENCE DIV_DNO

INCREMENT BY 1

MAXVALUE 999

NOCYCLE

NOCACHE;



ALTER SEQUENCE DIV_DNO

INCREMENT BY 10;


이 열에 대해 지정된 전체 자릿수보다 큰 값이 허용됩니다.

INSERT INTO DIVISION VALUES

(DIV_DNO.NEXTVAL,'CC','123','CC');

→DIV의 최댓값은 99 / NEXTVAL 값은 112


ALTER SEQUENCE DIV_DNO

INCREMENT BY 1

MAXVALUE 999

NOCYCLE

CACHE 20;


▶SEQUENCE 삭제

DROP SEQUENCE PER_PNO;


MY-SQL에서 INDEX 생성

CREATE TABLE AA

(ID INT IDENTIFY(1,1), 1부터 시작해서 1씩 증가

NAME CHAR(10));


CREATE TABLE AA

(ID INT AUTO_INCREMENT, 1부터 시작해서 1씩 증가/중복값 허용X

NAME CHAR(10));

'STUDY > ORACLE' 카테고리의 다른 글

Oracle 9일차(3)-문제  (0) 2019.01.18
Oracle 9일차(2)-PL/SQL  (0) 2019.01.18
Oracle 8일차  (0) 2019.01.16
Oracle 7일차- ALTER,MODIFY, DROP, COMMENT,GRANT, REVOKE,  (0) 2019.01.16
Oracle 6일차(2)-문제  (0) 2019.01.16

댓글