일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링 메일 전송
- 스프링 파일 삭제
- 스프링 프로젝트
- 스프링 HikariCP
- 스프링 게시판 구현
- 스프링 게시판
- 회원가입 기능
- 스프링 이미지
- 로그아웃 기능 구현
- spring 프로젝트
- oracle 설치방법
- 인증번호 전송
- 파일 업로드
- Bcrypt
- 스프링 포트폴리오
- arraylist
- 스프링 쇼핑몰
- 스프링 쇼핑몰 프로젝트
- spring 쇼핑몰
- 스프링 프로젝트 기본 설정
- ResponseEntity
- 쇼핑몰 프로젝트
- 스프링 업로드
- 쇼핑몰 포트폴리오
- 스프링 프로젝트 설정
- BCrypt 적용
- 로그인 기능
- 정규표현식
- 이미지 출력
- 삭제 구현
- Today
- Total
Kim VamPa
자동값 증가(Oracle, MySQL)(IDENTITY, AUTO_INCREMENT) 본문
순서
1. Oracle
1.1 IDENTITY
1.1.1 실습
1.1.2 IDENTITY 초기화
2. MySQL
2.1 AUTO_INCREMENT
2.1.1 실습
2.1.2 AUTO_INCREMENT 초기화
1. Oracle
1.1 IDENTITY 사용
기존 Oracle DB에서 자동 증가를 구현하기 위해서는 시퀀스(SEQUENCE), 트리거(TRIGGER)를 사용해야 했습니다. Oracle 12c 이후부터 제공된 기능입니다. 기본적인 형식은 다음과 같습니다.
1
2
3
|
GENERATED [ ALWAYS | BY DEFAULT [ ON NULL ] ] AS IDENTITY [ ( identity_options ) ]
|
IDENTITY COLUMN 기능은 다음과 같은 특징이 있습니다.
- 테이블에 하나의 IDENTITY COLUMN 만을 가집니다.
- NUMBER 형의 데이터 타입만을 정의 합니다.
- 암호화 알고리즘을 적용할 수 있습니다.
- CTAS(Create Table As Select) 명령으로 테이블을 생성한 컬럼은 IDENTITY COLUMN 속성을 상속받지 않으며, 단순한 NUMBER 데이터 타입으로 변환합니다.
1.1.1 실습
자동 증가 값 테스트를 위해서 2개의 컬럼(id, name)을 가진 테이블(test)을 만들겠습니다. id 컬럼에 IDENTITY를 적용할 것입니다.
1
2
3
4
5
6
|
create table test(
id int generated always as IDENTITY ,
name varchar(50)
);
|
데이터를 name 컬럼(Column)만 다음과 같이 삽입합니다.
1
2
3
4
5
6
7
|
insert into test(name) values ('test1');
insert into test(name) values ('test2');
insert into test(name) values ('test3');
insert into test(name) values ('test4');
insert into test(name) values ('test5');
|
select 문을 통해 테이블의 데이터를 보면 id값이 자동으로 증가한 것을 볼 수 있습니다.
1
2
3
|
select * from test;
|
1.1.2 IDENTITY 값 초기화
IDENTITY값을 초기화하기 위한 명령어입니다.
1
2
3
|
ALTER TABLE [테이블명] MODIFY(컬럼명 GENERATED AS IDENTITY (START WITH 초기화값));
|
IDENTITY값 초기화 실습
위에서 실습한 test 테이블로 IDENTITY값 초기화 테스트를 해보겠습니다.
먼저 기존 행(row)들을 모두 삭제하고 삭제되었는지 확인합니다.
1
2
3
4
|
delete from test;
select * from test;
|
새로운 값을 삽입하고 어떠한 값이 들어왔는지 확인해봅니다. id 컬럼(Column)값이 지워지기 전 마지막 값 5에서 +1된 값이 들어오는 것을 확인할 수 있습니다.
1
2
3
4
5
6
7
|
insert into test(name) values ('test1');
insert into test(name) values ('test2');
insert into test(name) values ('test3');
select * from test;
|
삽입한 값을 지웁니다.
1
2
3
4
|
delete from test;
select * from test;
|
아래의 명령어를 통해서 증가 값을 1로 다시 초기화합니다.
1
2
|
ALTER TABLE test MODIFY(id GENERATED AS IDENTITY (START WITH 1));
|
데이터를 삽입하여 id 컬럼(Column)에 1부터 데이터가 삽입되는지 확인합니다.
1
2
3
4
5
6
7
|
insert into test(name) values ('test1');
insert into test(name) values ('test2');
insert into test(name) values ('test3');
select * from test;
|
2. MySQL
2.1 AUTO_INCREMENT
삽입할 데이터 값을 자동으로 증가시켜주는 MySQL에서 제공해주는 기능입니다. 사용방법은 테이블을 생성할 때 값을 자동으로 증가시켜주고 싶은 컬럼(Column)의 속성으로 주면 됩니다.
auto_increment의 주의할 점은 오직 기본키(primary key) 컬럼(Column)에만 해당 속성을 부여할 수 있다는 점입니다.
1
2
3
|
create table 테이블명(
컬럼명 데이터타입 autu_increment
);
|
2.1.1 실습
자동 증가 값 테스트를 위해서 2개의 컬럼(id, name)을 가진 테이블(test)을 만들겠습니다. id 컬럼에 auto_increment를 적용할 것입니다.
1
2
3
4
5
6
|
create table test(
id int auto_increment primary key,
name varchar(50)
);
|
Insert 문을 사용하여 데이터를 삽입 후 정상적으로 증가된 값이 삽입되는지 확인합니다.
1
2
3
4
5
6
7
8
9
10
|
insert into test (name) values
('test1'),
('test2'),
('test3'),
('test4'),
('test5');
select * from test;
|
2.1.2 AUTO_INCREMENT 초기화
auto_increment 값을 초기화하기 위한 명령어입니다.
1
2
3
|
ALTER TABLE [TABLE명] AUTO_INCREMENT = [시작할 값];
|
AUTO_INCREMENT 초기화 실습
앞서 실습하였던 test 테이블을 활용하여 auto_increment 초기화를 실습해보겠습니다.
먼저 기존에 삽입된 행(Row)을 지우고 정상적으로 값이 존재하지 않는지 확인합니다.
1
2
3
4
|
delete from test;
select * from test;
|
데이터를 삽입하여 id값이 어떠한 값이 삽입되는지 확인합니다. 확인을 해보면 기존에 있었던 마지막 값 +1이 지속적으로 삽입되는 것을 확인할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
|
insert into test (name) values
('test1'),
('test2'),
('test3'),
('test4'),
('test5');
select * from test;
|
먼저 새로 삽입한 행(Row)을 다시 지웁니다.
1
2
3
4
|
delete from test;
select * from test;
|
auto_increment값을 초기화하는 명령어를 실행합니다.
1
2
3
|
alter table test auto_increment = 1;
|
새로운 행들을 삽입하여 초기화된 값이 삽입되는지 확인합니다.
1
2
3
4
5
6
7
8
9
10
|
insert into test (name) values
('test1'),
('test2'),
('test3'),
('test4'),
('test5');
select * from test;
|
REFERENCE
IDENTITY
AUTO_INCREMENT
IDENTITY초기화
auto_increment 초기화
DATE
- 2020.02.03
'공부 > 데이터베이스' 카테고리의 다른 글
[MyBatis] <sql>, <include> 사용법 (2) | 2021.03.05 |
---|---|
[MyBatis] <if> 사용법 (1) | 2021.03.04 |
[데이터베이스] 데이터 타입 정리(Oracle, MySQL) (2) | 2020.04.24 |
[데이터베이스][JOIN][1] 조인(JOIN)이란? (0) | 2020.04.21 |
[Oracle 기본사용법][08] 표(table) JOIN (0) | 2020.04.15 |