一、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...