Computer >> 컴퓨터 >  >> 프로그램 작성 >> SQL Server

SQL Server의 시퀀스

순서 순서대로 정렬된 정수 집합입니다. 많은 응용 프로그램의 요구 사항을 충족하려면 테이블의 각 행에 기본 키와 유사한 고유한 값이 포함되어야 하기 때문에 시퀀스는 데이터베이스에서 자주 사용됩니다.

이 기사에서는 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];

매개변수:

  1. AS 데이터 유형: BIGINT, INT, TINYINT, SMALLINT, DECIMAL 또는 NUMERIC 유형이 될 수 있습니다. 특정 유형을 지정하지 않으면 프로그램은 기본적으로 BIGINT 형식의 데이터 유형을 사용합니다.
  2. 시작 값: 시퀀스가 반환하는 값입니다.
  3. 값별 증가 :증가/감소 순서에 대한 일련의 규칙으로 양수 또는 음수일 수 있습니다. 여기서 값이 양수이면 시퀀스는 증분 값의 시퀀스가 ​​됩니다. 반대는 음수이며 순서가 감소합니다.
  4. MINVALUE 값 :문자열에서 가장 작은 값입니다.
  5. 최소값 없음 :최소값을 지정하지 마십시오.
  6. MAXVALUE 값 :문자열의 최대값입니다.
  7. MAXVALUE 없음 :최대값을 지정하지 마십시오.
  8. 주기 :시퀀스가 ​​완료되면 처음부터 시퀀스가 ​​시작됩니다.
  9. 주기 없음 :문자열의 끝에서 시퀀스가 ​​실패하고 완료되면 다시 시작되지 않습니다.
  10. 캐시 값: 디스크 IO를 최소화하기 위해 캐시(캐시)에 저장합니다.
  11. 캐시 없음: 캐시에 저장하지 마세요.

예:

  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 =값 없음