📜  SQL Server 中的示例序列

📅  最后修改于: 2022-05-13 01:55:09.322000             🧑  作者: Mango

SQL Server 中的示例序列

顺序 :
序列是有序的数字列表。例如,{1, 2, 3} 是一个序列,{3, 2, 1} 也是一个序列,但是是一个不同的序列。

它是一个用户定义的模式对象,根据 SQL server 中的指定值生成数字列表。

句法 :

CREATE SEQUENCE schema_name.sequence_name  
AS integer_type 
START WITH start_value
INCREMENT BY increment_value 
MINVALUE min_value 
MAXVALUE max_value ;

使用的参数:

  • 序列名称——
    为在数据库中唯一的序列定义一个名称。
  • AS integer_type –
    例如,对序列使用任何整数类型; TINYINT、INT 或 DECIMAL。默认情况下,序列使用 BIGINT。
  • 从 start_value 开始 –
    定义序列的第一个值。
  • INCREMENT BY increment_value –
    定义序列对象的increment_value调用NEXT VALUE FOR函数,increment_value不能为零。
  • MINVALUE min_value –
    定义序列的下限值。
  • MAXVALUE 最大值 –
    定义序列的上限值。

使用以下语句获取 SQL server 中序列的详细信息:

SELECT * 
FROM sys.sequences; 

示例 1:创建一个简单的序列

CREATE SEQUENCE geeks_num
AS INT
START WITH 10
INCREMENT BY 10; 

输出 -

SELECT NEXT VALUE FOR geeks_num; 
Current_value
10

(受影响的 1 行)

再次运行以下语句,geeks_num 的值将增加 10。

SELECT NEXT VALUE FOR geeks_num; 

输出 -

Current_value
20

(受影响的 1 行)

示例 2:在表中使用序列对象。
让我们创建一个名为 geeksch 的模式:

CREATE SCHEMA geeksch;
GO 

并创建一个名为 geektab 的新表:

CREATE TABLE geeksch.geektab
(
geek_id INT PRIMARY KEY, 
DOJ date NOT NULL 
); 

现在,创建一个名为 geek_number 的序列,该序列以 1 开头并增加 1。

CREATE SEQUENCE geeksch.geek_number 
AS INT
START WITH 1
INCREMENT BY 1; 

将行插入 geeksch.geektab 表并使用 geeksch.geek_number 序列的值:

INSERT INTO geeksch.geektab(g_id, DOJ)
VALUES(NEXT VALUE FOR geeksch.geek_number, '2019-07-15');

INSERT INTO geeksch.geektab(g_id, DOJ)
VALUES(NEXT VALUE FOR geeksch.geek_number, '2018-04-10'); 

查看 geeksch.geektab 表的值:

SELECT * FROM  geeksch.geektab; 

输出 -

g_idDOJ
12019-07-15
22018-04-10′

示例 3:在多个表示例中使用序列对象。

CREATE SEQUENCE geeksch.g_no
START WITH 1
INCREMENT BY 1; 

使用 geeksch 序列创建表。

CREATE TABLE geeksch.table1
(id INT PRIMARY KEY
DEFAULT (NEXT VALUE FOR geeksch.g_no),
DOJ DATE NOT NULL,
City NVARCHAR(100) ); 

在这里,table 具有列 id,其值来自 geeksch.g_no 序列。

INSERT INTO geeksch.table1(DOJ, City )
VALUES('2019-05-12', 'Delhi');

INSERT INTO geeksch.table1(DOJ, City )
VALUES(  '2019-06-18',  'Delhi'); 

使用 geeksch 序列创建另一个表。

CREATE TABLE geeksch.table2
(id INT PRIMARY KEY
DEFAULT (NEXT VALUE FOR geeksch.g_no), 
DOJ DATE NOT NULL, 
City NVARCHAR(100) ); 

在这里,table 具有列 id,其值来自 geeksch.g_no 序列。

让我们在 table2 中插入一些没有 id 列值的行:

INSERT INTO geeksch.table2(DOJ, City )
VALUES('2020-02-03','Noida');

INSERT INTO geeksch.table2(DOJ, City )
VALUES('2020-03-14','Noida'); 

输出 -

SELECT * 
FROM geeksch.table1; 

输出 -

id DOJCity
12019-05-12′Delhi
22019-06-18Delhi
SELECT * 
FROM geeksch.table2; 
idDOJCity
32020-02-03Noida
42020-03-14Noida