,,SQL Server中identity(自增)的用法详解

,,SQL Server中identity(自增)的用法详解

本文主要介绍了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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 使用sql语句实现查询排序,顺序和倒序的区别,sql按倒序排序
  • 使用sql语句实现查询排序,顺序和倒序的区别,sql按倒序排序,使用SQL语句实现查询排序,顺序和倒序
  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • 一篇文章带你入门sql编程语句,一篇文章带你入门sql编程题
  • 一篇文章带你入门sql编程语句,一篇文章带你入门sql编程题,一篇文章带你入门SQL编程
  • window无法启动mysql 1067,windows无法启动mysql57服务,错误1053
  • window无法启动mysql 1067,windows无法启动mysql57服务,错误1053,windows无法启动MySQL服务报错1067的解决方法
  • vb中adodb连接数据库,,VB语言使用ADO连接、操作SQLServer数据库教程
  • sql重复记录查询的几种方法有哪些,查询重复记录sql语句
  • sql重复记录查询的几种方法有哪些,查询重复记录sql语句,SQL重复记录查询的几种方法
  • sql语句的各个关键字的解析过程详细总结怎么写,sql语句的各个关键字的解析过程详细总结图
  • sql语句的各个关键字的解析过程详细总结怎么写,sql语句的各个关键字的解析过程详细总结图,SQL语句的各个关键字的解析过程详细总结
  • sql语句游标,sqlserver游标的使用
  • sql语句游标,sqlserver游标的使用,详解SQL游标的用法
  • 留言与评论(共有 条评论)
       
    验证码: