本文主要介绍了SQL Server中identity用法的详细说明,具有很好的参考价值。希望对大家有帮助。来和边肖一起看看吧。
一、identity的基本用法
1.含义
表示identity字段的值将自动更新,我们不需要维护它。通常我们不能直接给identity修饰的字符赋值,否则编译时会报错。
2.语法
列数据类型约束标识(m,n)
m代表初始值,n代表每次自动增加的值。
如果未指定m和n的值,则默认值为(1,1)。
要么同时指定M和N的值,要么不指定M和N。不能只写其中一个,否则会出错。
3.实例演示
不要指定m和n的值。
创建表student1
(
sid int主键标识,
sname nchar(8)不为空,
ssex nchar(1)
)
插入到学生1 (sname,ssex)值('张三','男');
插入学生1的值(“李四”、“女”);-可以省略列名。
插入student1值(“王五”、“女”);
指定m和n的值。
创建表student2
(
sid int主键标识(20,5),
sname nchar(8)不为空,
ssex nchar(1)
)
插入到学生2 (sname,ssex)值('张三','男');
插入学生2值('李四','女');-可以省略列名。
成学生2值('王五','女');
4.删除一条记录接着插入
删除sid为2的记录,然后继续插入。新插入记录的sid不是2,而是3。
创建表student3
(
sid int主键标识,
sname nchar(8)不为空,
ssex nchar(1)
)
插入到学生3 (sname,ssex)值('张三','男');
插入学生3值('李四','女');
从sid=2的学生3中删除;-删除sid为2的记录
成学生3值(‘王五’,‘女’);
二、重新设置identity的值
1.语法
Dbccheck ident(表名,重新播种,n);
1表示表中标识字段的初始值(n的值可以是0)。
也就是说,如果插入id为2的记录,则n的值为1。
2.实例演示
创建表student4
(
sid int主键标识,
sname nchar(8)不为空,
ssex nchar(1)
)
插入到学生4 (sname,ssex)值('张三','男');
插入学生4值('李四','女');
从sid=2的学生4中删除;-删除sid为2的记录
dbcc checkident('student4 ',reseed,1);-将student4表中identity字段的初始值重置为1。
成学生4值('王五','女');
三、向identity字段插入数据
1.语法
在上设置identity_insert表名;
插入到表名(列名1、列名2、列名3和列名4)值(数据1、数据2、数据3和数据4);
将identity_insert表名设置为off
注意:插入数据时,必须指定由标识修饰的字段的名称。
2.实例演示
创建表student5
(
sid int主键标识(20,5),
sname nchar(8)不为空,
ssex nchar(1)
)
插入到学生5 (sname,ssex)值('张三','男');
插入学生5值('李四','女');
成学生5值('王五','女');
将identity_insert student5设置为on;
/*
插入学生5值('黑六','男');-错误
插入学生5值(21,'黑六','男');-错误
*/
插入学生5 (SID,SNAME,SSEX)值(21,'刘黑','男性');
将identity_insert student5设置为off
/*
插入学生5的值(22,“赵琪”,“女性”);-错误
插入学生5 (SID,SNAME,SSEX)值(22,'赵琪','女性');-错误
*/
插入学生5的值(“赵琪”、“女性”);
补充知识:SQL Server 添加与删除主键约束
主键约束唯一标识数据库表中的每条记录。主键必须包含唯一的值。主键列不能包含空值。每个表都应该有一个主键,并且每个表只能有一个主键。
主键约束操作包括添加约束和删除约束。修改约束实际上就是添加约束或者删除约束。
添加primary key约束很简单,但是删除没有约束名称的primary key约束就比较复杂。如果不是很了解SQL Server,实现这个功能比较困难。
主键约束操作基本语句
如果在创建新表时添加主键约束很简单,只需在列名后直接添加主键。添加主键约束的标准SQL脚本如下:
创建表名(字段名1 int not null,
[约束约束名称]主键(字段名1,…)
)
约束名称是可选的(建议选择它,否则系统会分配一个随机的临时名称)。这种方法可以任意添加多个或一个主键约束。
将primary key约束添加到现有表中,类似于上面的脚本,如下所示:
alter table name[add constraint constraint name]主键(字段名1、)
约束名同上,可选,建议指定。
与MySQL不同,SQL Server删除主键约束,需要主键的约束名才能删除。用于删除主键的SQL Server标准脚本如下:
更改表表名删除约束约束名
当然,该语句只能删除具有已知约束名的主键约束。
删除未知主键约束名的约束
从前面的语句来看,如果之前已经指定了这个约束名就可以了,否则这次就没办法删除了。关键点是如何获取表中的主键约束名。由于它可以基于约束名,这意味着约束名存储在数据库中,当然是在系统表中。运行SELECT * FROM SYS。对象语句来查看查询结果。数据库里所有的约束都在里面。带PK的名称项都是主键约束。我们看看它的type_desc是PRIMARY_KEY_CONSTRAINT还是type是PK。(当然,指定名称不使用PK前缀,另当别论)。
由于表名已知,主键约束的存储位置也已知,关键是如何将两者联系起来,这样就可以利用表名找到主键约束的名称,沟通的桥梁就是parent_object_id。
这里给出的只是object_id,那么如何找出表的object_id呢?仔细看看刚才的搜索结果。原来数据库里所有的相关信息都在里面,包括表,函数等等,而且有自己的object_id。
接下来,整合以上思路,根据表名查询表ID,根据表ID找到主键约束的名称,级联查询。您可以构造以下查询语句:
从系统中选择名称。TYPE _ desc=' PRIMARY _ KEY _ CONSTRAINT '且
父对象标识=(选择对象标识
From sys.objects with (nolock)其中name=' table name ')
那么NAME就是我们需要的约束名。然后,构造上面的SQL语句删除约束并执行就足够了。典型的SQL如下所示:
ALTER TABLE NAME DROP CONSTRAINT NAME(约束名)
其他约束可以通过这种方式删除。
以上对SQL Server中identity用法的详细说明就是边肖分享的全部内容。希望给大家一个参考,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。