identity는 해당 열이 자동으로 값이 증가하도록 설정 할 수 있다.
CREATE TABL]E (
[컬럼명] [숫자데이터형식] IDENTITY ([초기값], [증가값]) [제약조건]
)
컬럼 추가 시
ALTER TABLE
[테이블명]
ADD
[컬럼명] [숫자형 데이터형식] IDENTITY ([초기값], [증가값]) [제약조건]
1씩 자동으로 증가 하는 테이블 만들기 ( INSERT 문에서 생략 가능)
CREATE testTable ( id int IDENTITY, name);
GO
INSERT INTO testTable values('이름');
IDENTITY에 원하는 값을 직접 입력 하고 싶을때
*주의사항 IDENTITY_INSERT를 ON으로 변경한 테이블은 입력할 열을 꼭 지정해줘야 한다. 생략하면 오류가 난다.
*다시 IDENTITY_INSERT를 OFF로 변경하고 입력하면 ID 값은 최대값+1부터 자동으로 입력될것이다.
SET IDENTITY_INSERT tableTest ON;
GO
INSERT INTO testTable(id, name) values( 1, '이름');
특정 테이블의 현재 IDENTITY 값을 확인 하는 방법
SELECT IDENT_CURRENT('테이블이름');
현재 쿼리창에서 가장 최근에 생성된 ID 값을 확인 하는 방법
SELECT @@IDENTITY ;
시퀀스는 오라클에서 제공한 개체인데 SQL SERVER에서 오라클과 동일한 방식으로 제공하기 위해 SQL SERVER 2012부터 제공된다.
시퀀스 만들기
CREATE SEQUENCE idSEQ
START WITH 1
INCREMENT BY 1;
시퀀스를 입력하려면 NEXT VALUE FOR [시퀀스이름]을 사용한다.
INSERT INTO testTable values(NEXT VALUE FOR idSEQ, '', '')
시퀀스가 아닌 다른걸 입력 하고 싶을 때도 입력 가능하다.
INSERT INTO testTable values(15, '', '')
시퀀스 번호를 다시 설정 해 주고 싶을 때
INSERT INTO testTable values(15, '', '')
GO
ALTER SEQUENCE idSEQ
RESTART WITH 12;
GO
INSERT INTO testTable values(NEXT VALUE FOR idSEQ, '', '')
특정 범위의 값을 반복해서 입력 가능
CREATE SEQUENCE idSEQ
START WITH 10
INCREMENT BY 10
MINVALUE 10
MAXVALUE 50
CYCLE;
--10, 20, 30, 40, 50, 10, 20.... 반복 해서 나타남
테이블에 디폴트로 시퀀스 값을 입력하면 시퀀스 표기를 생략해도 자동으로 입력 가능하다 == IDENTITY 와 마찬가지
CREATE SEQUENCE idSEQ
START WITH 1
INCREMENT BY 1;
GO
CREATE TABLE testTB (
id int DEFAULT (NEXT VALUE FOR idSEQ),
name varchar(3)
);
GO
INSERT INTO testTB (name) value('이름');
'개발 > DB' 카테고리의 다른 글
[mssql] 문자 데이터 형식 char, varchar, nchar, nvarchar 차이점 (0) | 2019.03.23 |
---|---|
[mssql] 테이블 복제 쉽게 하기 SELECT.. INTO .. (0) | 2019.03.23 |
[mssql] WITH 절 , 비재귀적 CTE (1) | 2019.03.16 |
[mssql] ROLLUP() 그룹별 합계 구하기, GROUPING_ID() 사용법 (0) | 2019.03.16 |
[mssql] GROUP BY / HAVING 사용법 (0) | 2019.03.16 |