순서 순서대로 정렬된 정수 집합입니다. 많은 응용 프로그램의 요구 사항을 충족하려면 테이블의 각 행에 기본 키와 유사한 고유한 값이 포함되어야 하기 때문에 시퀀스는 데이터베이스에서 자주 사용됩니다.
이 기사에서는 SQL Server에서 시퀀스를 만들고 삭제하는 방법에 대한 구문과 예제를 제공합니다.
시퀀스 생성(시퀀스 생성)
구문
시퀀스를 생성하기 위해 다음 구문이 있습니다:
CREATE SEQUENCE [schema.] Sequence_name
[AS datatype]
[START WITH value]
[INCREMENT BY value]
[MINVALUE value | NO MINVALUE]
[MAXVALUE value | NO MAXVALUE]
[CYCLE | NO CYCLE]
[CACHE value | NO CACHE];
매개변수:
- AS 데이터 유형: BIGINT, INT, TINYINT, SMALLINT, DECIMAL 또는 NUMERIC 유형이 될 수 있습니다. 특정 유형을 지정하지 않으면 프로그램은 기본적으로 BIGINT 형식의 데이터 유형을 사용합니다.
- 시작 값: 시퀀스가 반환하는 값입니다.
- 값별 증가 :증가/감소 순서에 대한 일련의 규칙으로 양수 또는 음수일 수 있습니다. 여기서 값이 양수이면 시퀀스는 증분 값의 시퀀스가 됩니다. 반대는 음수이며 순서가 감소합니다.
- MINVALUE 값 :문자열에서 가장 작은 값입니다.
- 최소값 없음 :최소값을 지정하지 마십시오.
- MAXVALUE 값 :문자열의 최대값입니다.
- MAXVALUE 없음 :최대값을 지정하지 마십시오.
- 주기 :시퀀스가 완료되면 처음부터 시퀀스가 시작됩니다.
- 주기 없음 :문자열의 끝에서 시퀀스가 실패하고 완료되면 다시 시작되지 않습니다.
- 캐시 값: 디스크 IO를 최소화하기 위해 캐시(캐시)에 저장합니다.
- 캐시 없음: 캐시에 저장하지 마세요.
예:
CREATE SEQUENCE contacts_seq
AS BIGINT
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 99999
NO CYCLE
CACHE 10;
여기에 contacts_seq라는 시퀀스를 만들었습니다. , 값 1에서 시작하여 다음 값 각각이 한 단위 증가합니다(즉, 2, 3, 4 .). 문자열은 약 10개의 값을 캐시에 저장합니다. 시퀀스의 최대값은 99999이며 시퀀스가 가장 큰 값에서 끝난 후 문자열을 다시 시작하지 않습니다.
위 명령을 다음과 같이 간단하게 실행할 수도 있습니다.
CREATE SEQUENCE contacts_seq
START WITH 1
INCREMENT BY 1;
이제 자동 번호 필드를 시뮬레이션하는 시퀀스를 만들었습니다. 다음으로 이 시퀀스에서 값을 출력하기 위해 NEXT VALUE FOR을 사용합니다. 명령
SELECT NEXT VALUE FOR contacts_seq;
이 문은 contacts_seq.에서 다음 값을 검색합니다. 그런 다음 실행에 필요한 명령을 사용합니다. 예:
INSERT INTO contacts
(contact_id, last_name)
VALUES
(NEXT VALUE FOR contacts_seq, 'Smith');
이 INSERT 문은 연락처 테이블에 새 레코드를 삽입합니다. 연락처 ID 필드에는 contacts_seq의 다음 번호가 할당됩니다. 성 필드는 'Smith'입니다.
DROP SEQUENCE(순서 삭제)
일단 시퀀스가 생성되면 여러 가지 이유로 데이터베이스에서 시퀀스를 제거하려는 경우도 있습니다.
구문
시퀀스를 삭제하기 위한 구문은 다음과 같습니다.
DROP SEQUENCE sequence_name;
매개변수:
시퀀스_이름: 삭제하려는 시퀀스 이름입니다.
예:
DROP SEQUENCE contacts_seq;
이 명령을 실행하여 contacts_seq를 제거했습니다. 데이터베이스의 문자열입니다.
시퀀스 속성
시퀀스 속성을 테스트하기 위해 다음 구문이 있습니다.
SELECT * FROM sys.sequences WHERE name = ' sequence_name' ;
매개변수:
sequence_name: 속성을 테스트할 문자열의 이름입니다.
예:
SELECT *
FROM sys.sequences
WHERE name = 'contacts_seq';
이 예는 sys.sequences에서 정보를 쿼리합니다. contacts_seq에 대한 결과를 검색합니다. 문자열 .
Sys.sequences 시스템에는 다음 열이 포함됩니다.
컬렉션 참고 명령문에서 생성된 시퀀스의 이름 CREATE SEQUENCE object_id 시퀀스 ID의 principal_id 개체 ID principal(숫자 값) schema_id 시퀀스의 스키마 ID parent_object_id 상위 개체 유형의 ID SO type_desc SEQUENCE_OBJECT create_date CREATE SEQUENCE로 생성된 날짜/시간 시퀀스 명령 modify_date 마지막 수정 시퀀스 날짜/시간 is_ms_shipped 값 0 또는 1 is_published 값 0 또는 1 is_schema_published 값 0 또는 1 start_value 시퀀스 증가의 시작 값 minimum_value 문자열의 최소값 maximum_value is_cycling 문자열의 최대값 0 또는 1. 0 =NO CYCLE, 1 =CYCLE is_cached 값 0 또는 1, 0 =NO CACHE, 1 =CACHE cache_size is_cached =1일 때 메모리 크기 버퍼 system_type_id 시퀀스의 ID 시스템 user_type_id 시퀀스 정밀도 user에서 ID 걱정 데이터에 대한 최대 정확도 시퀀스 시퀀스의 최대 범위 스케일 유형 current_value 시퀀스에서 검색된 마지막 값 is_exhausted 값 0 또는 1. 0 =연속된 여러 값. 1 =값 없음