• 분류 전체보기 (132)
    • 공지사항 (2)
    • 블로그팁 (4)
    • GKSkin (5)
      • 소개 (1)
      • 스킨다운로드 (1)
      • 사용법 (3)
    • GKTool (4)
      • 소개 (1)
      • 시연영상 (3)
    • 코드저장소 (41)
      • javascript (2)
      • jQuery 플러그인 (7)
      • java (12)
      • sql (10)
      • mybatis(ibatis) (3)
      • 스마트에디터연동 (3)
      • 다음에디터연동 (2)
      • 샘플링답변 (2)
    • 웹개발강좌 (48)
      • jQuery (8)
      • jQueryUI (5)
      • ExtJS (28)
      • 부트스트랩 (7)
    • 모바일웹강좌 (1)
      • SenchaTouch (1)
    • 개발에필요한연동법 (27)
      • 스프링연동 (16)
      • 리눅스서버구축 (11)
댓글
/32
2014. 10. 14. 19:30
MySQL과 MSSQL의 시퀀스생성 및 초기화 하는방법에 대해서 알아보도록 하자

이번 다루어 보고자 할 주제는 MySQL과 MS-SQL의 시퀀스생성 및 초기화에 대해서 포스팅을 해볼까 합니다.


MySQL 시퀀스 생성 및 초기화하기

MySQL의 경우 시퀀스 생성이 간단합니다.

테이블 생성 시 auto_increment라는 속성을 시퀀스로 지정해줄 컬럼에 적용만 해주면 됩니다.

예를들어보도록 하겠습니다.


auto_increment를 적용한 임시 테이블생성

CREATE TABLE sequence_table(
   seq int auto_increment primary key,
   title varchar(20)
)

위와같이 임의의 테이블을 생성해보았습니다.



코드를 보시면 seq 컬럼에 auto_increment라는 속성이 지정되어있습니다.

INSERT 문을 통해서 title 컬럼만 데이터 추가를 해주면 알아서 seq 컬럼에는 1씩 자동증가하는 넘버가 부여가 됩니다.



한번 데이터를 삽입해보도록 하겠습니다.


INSERT 데이터

insert into sequence_table(title)
values('제목1');
insert into sequence_table(title)
values('제목2');


실행결과






title 컬럼만 insert함으로써 seq컬럼에 자동으로 1씩증가되어 등록이 되었습니다.

하지만 현재 상태에서 모든 데이터들을 삭제를 한다음에 다시 insert 쿼리를 시도 하게 된다면 

seq컬럼에 insert되는 데이터는 3부터 등록이 되게 됩니다.

뭐 문제는 없지만 초기화를 간혹가다 원하는 경우가 생기기 때문에 

이번에는 시퀀스 초기화에 대해서 알아보도록 하겠습니다 



MySQL AUTO_INCREMENT 초기화

ALTER TABLE sequence_table auto_increment=1;



위처럼 ALTER TABLE 문을 이용하여 AUTO_INCREMENT를 초기화 하고자 하는 숫자값을 지정해주면 됩니다.


※ 만약 모든 데이터를 삭제하지 않고 1~10까지 증가된 데이터들은 남겨 놓았다고 가정을 한다면

 "AUTO_INCREMENT = 11" 로 지정을 해주셔야 겠죠??


위 명령을 지정해준 후 다시 한번 데이터를 insert 해보았습니다.




가상의 데이터 INSERT

insert into sequence_table(title)
values ('aaaa');
insert into sequence_table(title)
values ('bbbb');

SEQUENCE_TABLE SELECT 결과




위와같이 정상적으로 시퀀스값이 초기화 된것을 확인할 수 있습니다.



MySQL 시퀀스 생성 및 초기화하기


MS-SQL 역시 MySQL과 동일하게 CREATE TABLE 생성시 증가시키고자 하는 컬럼에 AUTO_INCREMENT 대신 IDENTITY()라는 속성을 지정해주면 됩니다.


이부분 역시 예를 들어보도록 하겠습니다.


IDENTITY를 적용한 임시 테이블생성


CREATE TABLE sequence_table_mssql(
   seq int identity(1,1) primary key,
   title varchar(20)
)

위와같이 테이블 생성문을 실행 하셨다면 데이터를 등록해보도록 하겠습니다.


insert into sequence_table_mssql(title)
values('시퀀스타이틀1');
insert into sequence_table_mssql(title)
values('시퀀스타이틀2');



MSSQL INSERT 실행결과



결과는 MySQL과 동일합니다.


마지막으로 MS-SQL의 시퀀스를 초기화 하는 방법을 설명드리겠습니다.

MySQL에 경우에는 ALTER TABLE문으로 시퀀스를 초기화 해주었지만 

MS-SQL 시퀀스는 MySQL과는 다르게 "DBCC CHECKIDENT함수(?)를 이용하여 초기화를 하시면 되겠습니다.




MS-SQL 시퀀스 초기화 함수(?)실행

DBCC CHECKIDENT('sequence_table_mssql', RESEED, 0)

위와 같은 명령어를 주시면 되겠습니다. 

MS-SQL의 시퀀스가 정상적으로 이루어졌는지 데이터 삭제및 등록에 대해서는 생략하겠습니다.

결과가 MySQL의 예제와 동일하기 때문입니다 .


오라클은 시퀀스가 별도로 생성되기때문에 

다음포스팅에 이어서 진행하도록 하겠습니다.




by 개발로짜


저작자표시 비영리 변경금지 (새창열림)

'코드저장소 > sql' 카테고리의 다른 글

oracle,mssql,mysql 문자열 합치기 사용법을 비교해보자  (0) 2014.10.17
오라클 시퀀스 생성법과 테이블에 등록시 시퀀스 자동증가등을 알아보자  (0) 2014.10.15
MySQL- GROUP_CONCAT 함수로 세로로 출력된 결과를 하나의 컬럼에 가로로 출력하기  (0) 2014.10.13
쿼리의 조건문 사용시 oracle에는 decode가있고 mysql에는 if가 있다  (0) 2014.10.09
ORACLE/MYSQL/MSSQL 관계없이 CASE WHEN THEN ELSE END 사용하기  (0) 2014.10.08

티스토리툴바