SQLServer中identity 自增 的用法

2021-12-30 08:25:00 字數 3114 閱讀 3155

一、identity的基本用法

1.含義

identity表示該字段的值會自動更新,不需要我們維護,通常情況下我們不可以直接給identity修飾的字元賦值,否則編譯時會報錯

2.語法

列名 資料型別 約束 identity(m,n)

m表示的是初始值,n表示的是每次自動增加的值

如果m和n的值都沒有指定,預設為(1,1)

要麼同時指定m和n的值,要麼m和n都不指定,不能只寫其中乙個值,不然會出錯

3.例項演示

不指定m和n的值

create table student1

sid int primary key identity,

sname nchar(8) not null,

s*** nchar(1)

insert into student1(sname,s***) values ('張三','男');

insert into student1 values ('李四','女');--可以省略列名

insert into student1 values ('王五','女');

指定m和n的值

create table student2

sid int primary key identity(20,5),

sname nchar(8) not null,

s*** nchar(1)

insert into student2(sname,s***) values ('張三','男');

insert into student2 values ('李四','女');--可以省略列名

insert into student2 values ('王五','女');

4.刪除一條記錄接著插入

把sid為2的記錄刪除,繼續插入,新插入的記錄的sid不是2,而是3

create table student3

sid int primary key identity,

sname nchar(8) not null,

s*** nchar(1)

insert into student3(sname,s***) values ('張三','男');

insert into student3 values ('李四','女');

delete from student3 where sid=2;--把sid為2的記錄刪除

insert into student3 values ('王五','女');

二、重新設定identity的值

1.語法

dbcc checkident(表名,reseed,n);

n+1表示的是表中identity欄位的初始值(n的值可以為0)

也就是說:如果插入的是id為2的記錄,則n的值是1

2.例項演示

create table student4

sid int primary key identity,

sname nchar(8) not null,

s*** nchar(1)

insert into student4(sname,s***) values ('張三','男');

insert into student4 values ('李四','女');

delete from student4 where sid=2;--把sid為2的記錄刪除

dbcc checkident('student4',reseed,1);--把student4表中identity欄位的初始值重新設定為1

insert into student4 values ('王五','女');

三、向identity欄位插入資料

1.語法

set identity_insert 表名 on;

insert into 表名(列名1,列名2,列名3,列名4) values (資料1,資料2,資料3,資料4);

set identity_insert 表名 off;

注意:插入資料時必須得指定identity修飾的字段的名字

2.例項演示

create table student5

sid int primary key identity(20,5),

sname nchar(8) not null,

s*** nchar(1)

insert into student5(sname,s***) values ('張三','男');

insert into student5 values ('李四','女');

insert into student5 values ('王五','女');

set identity_insert student5 on;

insert into student5 values ('黑六','男');--error

insert into student5 values (21,'黑六','男');--error

insert into student5(sid,sname,s***) values (21,'黑六','男');

set identity_insert student5 off;

insert into student5 values (22,'趙七','女');--error

insert into student5(sid,sname,s***) values (22,'趙七','女');--error

insert into student5 values ('趙七','女');

如何用sql語句去掉列的自增長 identity

如何用sql語句去掉列的自增長 identity 無法通過alter把現有自增字段改為非自增 比如alter table a alter id int,自增屬性不會去掉 通過修改系統表可以做到 此法可能有不可預知的結果,慎之.sp configure allow updates 1 go recon...

sqlserver 中Cube,rollup的使用

一 select from cj 1張三語文80.0 2張三數學90.0 3張三物理85.0 4李四語文85.0 5李四數學92.0 6李四物理82.0 二 select name,sum result from cj group by name 李四259.0 張三255.0 三 select n...

sql server 中語法校驗

在今天的培訓考試過程中,我提出乙個擴充套件題,要求對提交的sql進行語法校驗.其實這個題很簡單,根本不需要用正規表示式去做語法分析,可以直接使用sql server自帶的功能.不多說,上 alter proc sp checksql sql varchar 8000 error varchar ma...