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_id | DOJ |
---|---|
1 | 2019-07-15 |
2 | 2018-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 | DOJ | City |
---|---|---|
1 | 2019-05-12′ | Delhi |
2 | 2019-06-18 | Delhi |
SELECT *
FROM geeksch.table2;
id | DOJ | City |
---|---|---|
3 | 2020-02-03 | Noida |
4 | 2020-03-14 | Noida |