seong
CREAT 테이블 생성하기 본문
테이블 생성
예제로 바로 알아보기
CREATE TABLE customer(
id number(9,0),
username varchar2(12) not null, -- 유저의 이름 12자리 null 불가능
password varchar2(20) not null, -- 비밀번호 20자리 null 불가능
email varchar2(50), -- email 50 자리 null 가능
CONSTRAINT customer_pk PRIMARY KEY(id), -- id가 customer의 프라이 머리키가 된다.
CONSTRAINT customer_username_uk UNIQUE(username) -- username은 중복이 없는 값이 되고, null값을 가질수 없게된다.
);
시퀀스 생성 1
1. 왼쪽에 시퀀스 오른쪽마우스 클릭 -> 새 시퀀스 클릭
2. 이름은 표준이 정해져있다. 이름을 적어준 후 가장 뒷자리 _SEQ를 써준다. 1부터 시작하고, 1씩 증가
시퀀스 생성 2
위의 방법처럼 생성 할 수 있지만, 코드로도 생성이 가능 하다.
CREATE SEQUENCE "PRODUCT_SEQ"
INCREMENT BY 1
START WITH 1;
CREATE SEQUENCE "ORDER_SEQ"
INCREMENT BY 1
START WITH 1;
확인
시퀀스 확인
INSERT INTO customer(id,username,password) VALUES(customer_seq.nextval,'cos','1234');
select * FROM customer;
rollback;
실행 순서
1. customer테이블에 INSERT로 3번 이후 rollback를 실행했다.
2. 현재 테이블에는 ROLLBACK을 했기때문에 아무것도 없다.
3. 이후 한번더 INSERT를 해주었다, 그리고 시퀀스 확인을 해보면 number는 4이다
왜?
오라클에서 시퀀스는 이전 시퀀스 테이블을 참조해 다음 값을 부여해주기 때문이다.
예를 들어 1~5까지 값이 들어갔다.
이후 마지막 값인 5를 지웠다. -> 여기서 최종 max값은 4이다.
1~5까지 값이 들어갔다 ,5를 지웠다 최종 max는 4이다.
보통 생각하면 다음 값을 넣으면 5로 들어가는것이 맞다.
하지만 오라클 DB에서 시퀀스는 참조를해 넣어주기 때문에 이전 max값이 5였으므로 다음 시퀀스 값이 6으로 된다.
시퀀스 초기화
drop SEQUENCE CUSTOMER_SEQ;
초기화를 하면 다시 시퀀스를 만들어주어야 한다.
CREATE SEQUENCE "CUSTOMER_SEQ"
INCREMENT BY 1
START WITH 1;
'데이터베이스 > Oracle DB' 카테고리의 다른 글
DB - UNION ALL(직업별 월급 구해보기) (0) | 2022.08.17 |
---|---|
DB - INSERT,DELETE (0) | 2022.08.16 |
DB 서브 쿼리문 3가지 (0) | 2022.08.11 |