精华内容
下载资源
问答
  • SQL Server标识列

    千次阅读 2019-06-22 21:57:35
    一、标识列的定义以及特点SQL Server中的标识列又称标识符列,习惯上又叫自增列。该种列具有以下三种特点:1、列的数据类型为不带小数的数值类型2、在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许...

    [转]

    一、标识列的定义以及特点
    SQL Server中的标识列又称标识符列,习惯上又叫自增列。
    该种列具有以下三种特点:
    1、列的数据类型为不带小数的数值类型
    2、在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值
    3、列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列。
    由于以上特点,使得标识列在数据库的设计中得到广泛的使用。

    二、标识列的组成
    创建一个标识列,通常要指定三个内容:
    1、类型(type)
    在SQL Server 2000中,标识列类型必须是数值类型,如下:
    decimal、int、numeric、smallint、bigint 、tinyint
    其中要注意的是,当选择decimal和numeric时,小数位数必须为零
    另外还要注意每种数据类型所有表示的数值范围

    2、种子(seed)
    是指派给表中第一行的值,默认为1

    3、递增量(increment)
    相邻两个标识值之间的增量,默认为1。

    三、标识列的创建与修改
    标识列的创建与修改,通常在企业管理器和用Transact-SQL语句都可实现,使用企业管理管理器比较简单,请参考SQL Server的联机帮助,这
    里只讨论使用Transact-SQL的方法

    1、创建表时指定标识列
    标识列可用 IDENTITY 属性建立,因此在SQL Server中,又称标识列为具有IDENTITY属性的列或IDENTITY列。
    下面的例子创建一个包含名为ID,类型为int,种子为1,递增量为1的标识列
    CREATE TABLE T_test
    (ID int IDENTITY(1,1),
    Name varchar(50)
    )

    2、在现有表中添加标识列
    下面的例子向表T_test中添加一个名为ID,类型为int,种子为1,递增量为1的标识列
    --创建表
    CREATE TABLE T_test
    (Name varchar(50)
    )

    --插入数据
    INSERT T_test(Name) VALUES('张三')

    --增加标识列
    ALTER TABLE T_test
    ADD ID int IDENTITY(1,1)

    3、判段一个表是否具有标识列
    可以使用 OBJECTPROPERTY 函数确定一个表是否具有 IDENTITY(标识)列,用法:
    Select OBJECTPROPERTY(OBJECT_ID('表名'),'TableHasIdentity')
    如果有,则返回1,否则返回0

    4、判断某列是否是标识列
    可使用 COLUMNPROPERTY 函数确定 某列是否具有IDENTITY 属性,用法
    SELECT COLUMNPROPERTY( OBJECT_ID('表名'),'列名','IsIdentity')
    如果该列为标识列,则返回1,否则返回0

    4、查询某表标识列的列名
    SQL Server中没有现成的函数实现此功能,实现的SQL语句如下
    SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.columns
    WHERE TABLE_NAME='表名' AND COLUMNPROPERTY(
    OBJECT_ID('表名'),COLUMN_NAME,'IsIdentity')=1

    5、标识列的引用
    如果在SQL语句中引用标识列,可用关键字IDENTITYCOL代替
    例如,若要查询上例中ID等于1的行,
    以下两条查询语句是等价的
    SELECT * FROM T_test WHERE IDENTITYCOL=1
    SELECT * FROM T_test WHERE ID=1

    6、获取标识列的种子值
    可使用函数IDENT_SEED,用法:
    SELECT IDENT_SEED ('表名')

    7、获取标识列的递增量
    可使用函数IDENT_INCR ,用法:
    SELECT IDENT_INCR('表名')

    8、获取指定表中最后生成的标识值
    可使用函数IDENT_CURRENT,用法:
    SELECT IDENT_CURRENT('表名')
    注意事项:当包含标识列的表刚刚创建,为经过任何插入操作时,使用IDENT_CURRENT函数得到的值为标识列的种子值,这一点在开发数据库应用程序的时候尤其应该注意。

    9.[SQL Server]关于标识列从1开始计数的问题
    在SQL Server中, 我们有时需要在清空数据表之后,重新添加记录时,标识列重新从1开始计数。
    我们只需要在插入记录之前,执行下面的命令:
    DBCC CHECKIDENT (表名, RESEED, 0)
    执行 TRUNCATE TABLE 也可以做到,而且效率高因为:
    用delete将会把每个操作记录到日志中,所以效率低 ,truncate table则一次过,效率快很多。
    但是,Truncate Table有限制,比如说这个标识列是另外一个表的外键,而且标识列当前值为1,插入行从2开始,
    而DBCC CHECKIDENT (表名, RESEED, 0)可以用于即使有外键的情况下。

    转载于:https://www.cnblogs.com/jenneyblog/archive/2012/09/11/IDEntity.html

    展开全文
  • SqlServer标识列

    千次阅读 2012-08-31 16:59:35
    SqlServer标识列  2011-03-22 09:41:09| 分类: SqlServer | 标签: |字号大中小 订阅 收藏这个,非常详细 一、标识列的定义以及特点 SQL Server中的标识列又称标识符列,习惯上又叫自增列。 该...

    SqlServer标识列  

    2011-03-22 09:41:09|  分类: SqlServer |  标签: |字号 订阅

    收藏这个,非常详细
    一、标识列的定义以及特点

    SQL Server中的标识列又称标识符列,习惯上又叫自增列。
    该种列具有以下三种特点:

    1、列的数据类型为不带小数的数值类型
    2、在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值
    3、列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列。

    由于以上特点,使得标识列在数据库的设计中得到广泛的使用。

    二、标识列的组成
    创建一个标识列,通常要指定三个内容:
    1、类型(type)
    在SQL Server 2000中,标识列类型必须是数值类型,如下:
    decimal、int、numeric、smallint、bigint 、tinyint
    其中要注意的是,当选择decimal和numeric时,小数位数必须为零
    另外还要注意每种数据类型所有表示的数值范围

    2、种子(seed)
    是指派给表中第一行的值,默认为1

    3、递增量(increment)
    相邻两个标识值之间的增量,默认为1。

    三、标识列的创建与修改
    标识列的创建与修改,通常在企业管理器和用Transact-SQL语句都可实现,使用企业管理管理器比较简单,请参考SQL Server的联机帮助,这

    里只讨论使用Transact-SQL的方法

    1、创建表时指定标识列
    标识列可用 IDENTITY 属性建立,因此在SQL Server中,又称标识列为具有IDENTITY属性的列或IDENTITY列。
    下面的例子创建一个包含名为ID,类型为int,种子为1,递增量为1的标识列
    CREATE TABLE T_test
    (ID int IDENTITY(1,1),
    Name varchar(50)
    )

    2、在现有表中添加标识列
    下面的例子向表T_test中添加一个名为ID,类型为int,种子为1,递增量为1的标识列
    --创建表
    CREATE TABLE T_test
    (Name varchar(50)
    )

    --插入数据
    INSERT T_test(Name) VALUES('张三')

    --增加标识列
    ALTER TABLE T_test
    ADD ID int IDENTITY(1,1)

    3、判段一个表是否具有标识列

    可以使用 OBJECTPROPERTY 函数确定一个表是否具有 IDENTITY(标识)列,用法:
    Select OBJECTPROPERTY(OBJECT_ID('表名'),'TableHasIdentity')
    如果有,则返回1,否则返回0

    4、判断某列是否是标识列

    可使用 COLUMNPROPERTY 函数确定 某列是否具有IDENTITY 属性,用法
    SELECT COLUMNPROPERTY( OBJECT_ID('表名'),'列名','IsIdentity')
    如果该列为标识列,则返回1,否则返回0

    4、查询某表标识列的列名
    SQL Server中没有现成的函数实现此功能,实现的SQL语句如下
    SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.columns
       WHERE TABLE_NAME='表名' AND  COLUMNPROPERTY(     
          OBJECT_ID('表名'),COLUMN_NAME,'IsIdentity')=1

    5、标识列的引用

    如果在SQL语句中引用标识列,可用关键字IDENTITYCOL代替
    例如,若要查询上例中ID等于1的行,
    以下两条查询语句是等价的
    SELECT * FROM T_test WHERE IDENTITYCOL=1
    SELECT * FROM T_test WHERE ID=1

    6、获取标识列的种子值

    可使用函数IDENT_SEED,用法:
    SELECT IDENT_SEED ('表名')

    7、获取标识列的递增量

    可使用函数IDENT_INCR ,用法:
    SELECT IDENT_INCR('表名')

    8、获取指定表中最后生成的标识值

    可使用函数IDENT_CURRENT,用法:
    SELECT IDENT_CURRENT('表名')
    注意事项:当包含标识列的表刚刚创建,为经过任何插入操作时,使用IDENT_CURRENT函数得到的值为标识列的种子值,这一点在开发数据库应用程序的时候尤其应该注意。

    9.[SQL Server]关于标识列从1开始计数的问题
          在SQL Server中,  我们有时需要在清空数据表之后,重新添加记录时,标识列重新从1开始计数。
    我们只需要在插入记录之前,执行下面的命令:
          DBCC CHECKIDENT (表名,  RESEED, 0)
    执行 TRUNCATE TABLE 也可以做到,而且效率高因为:

    用delete将会把每个操作记录到日志中,所以效率低 ,truncate table则一次过,效率快很多。
    但是,Truncate Table有限制,比如说这个标识列是另外一个表的外键,而且标识列当前值为1,插入行从2开始,

    而DBCC CHECKIDENT (表名, RESEED, 0)可以用于即使有外键的情况下。
    展开全文
  • 重置sql server标识列

    2012-09-15 10:50:50
    sql server标识列是大家非常熟悉的了,下面为您介绍了sql server标识列重置的一些知识,如果您对sql server标识列方面感兴趣的话,不妨一看。 1、删除表内所有值并重置标识值 TRUNCATE TABLE TableName 2、保持表...

    sql server标识列是大家非常熟悉的了,下面为您介绍了sql server标识列重置的一些知识,如果您对sql server标识列方面感兴趣的话,不妨一看。

    1、删除表内所有值并重置标识值 TRUNCATE TABLE TableName

    2、保持表的内容,并重置自动编号列的SEED

    DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value)

    如dbcc checkident ("bc_pos",reseed,1)即可,但如果表内有数据,则重设的值如果小于最大值可能会有问题,这时可以用 dbcc checkident("bc_pos",reseed)即可自动重设值。

    3、判段一个表是否具有sql server标识列

    可以使用 objectPROPERTY 函数确定一个表是否具有 IDENTITY(标识)列,用法:
    Select OBJECTPROPERTY(OBJECT_ID('表名'),'Table HAS Identity')
    如果有,则返回1,否则返回0

    4、判断某列是否是标识列

    可使用 COLUMNPROPERTY 函数确定 某列是否具有IDENTITY 属性,用法
    SELECT COLUMNPROPERTY( OBJECT_ID('表名'),'列名','IsIdentity')
    如果该列为标识列,则返回1,否则返回0

    4、查询某表标识列的列名
    SQL Server中没有现成的函数实现此功能,实现的SQL语句如下
    SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.columns
       WHERE TABLE_NAME='表名' AND COLUMNPROPERTY(     
          OBJECT_ID('表名'),COLUMN_NAME,'IsIdentity')=1

    5、标识列的引用

    如果在SQL语句中引用标识列,可用关键字IDENTITYCOL代替
    例如,若要查询上例中ID等于1的行,
    以下两条查询语句是等价的
    SELECT * FROM T_test WHERE IDENTITYCOL=1
    SELECT * FROM T_test WHERE ID=1

    6、获取标识列的种子值

    可使用函数IDENT_SEED,用法:
    SELECT IDENT_SEED ('表名')

    7、获取标识列的递增量

    可使用函数IDENT_INCR ,用法:
    SELECT IDENT_INCR('表名')

    8、获取指定表中最后生成的标识值

    可使用函数IDENT_CURRENT,用法:
    SELECT IDENT_CURRENT('表名')
    注意事项:当包含标识列的表刚刚创建,为经过任何插入操作时,使用IDENT_CURRENT函数得到的值为标识列的种子值,这一点在开发数据库应用的时候尤其应该注意。

     

     

     

    转自:http://www.codesky.net/article/201010/144625.html

    展开全文
  • 使用sql语句创建修改SQL Server标识列

    千次阅读 2014-02-11 13:45:19
    SQL Server中的标识列又称标识符列,习惯上又叫自增列。 该种列具有以下三种特点: 1、列的数据类型为不带小数的数值类型 2、在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值 3、列值不重复,...

    一、标识列的定义以及特点

    SQL Server中的标识列又称标识符列,习惯上又叫自增列。
    该种列具有以下三种特点:

    1、列的数据类型为不带小数的数值类型
    2、在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值
    3、列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列。

    由于以上特点,使得标识列在数据库的设计中得到广泛的使用。

    二、标识列的组成
    创建一个标识列,通常要指定三个内容:
    1、类型(type)
    在SQL Server 2000中,标识列类型必须是数值类型,如下:
    decimal、int、numeric、smallint、bigint 、tinyint
    其中要注意的是,当选择decimal和numeric时,小数位数必须为零
    另外还要注意每种数据类型所有表示的数值范围

    2、种子(seed)
    是指派给表中第一行的值,默认为1

    3、递增量(increment)
    相邻两个标识值之间的增量,默认为1。

    三、标识列的创建与修改
    标识列的创建与修改,通常在企业管理器和用Transact-SQL语句都可实现,使用企业管理管理器比较简单,请参考SQL Server的联机帮助,这

    里只讨论使用Transact-SQL的方法

    1、创建表时指定标识列
    标识列可用 IDENTITY 属性建立,因此在SQL Server中,又称标识列为具有IDENTITY属性的列或IDENTITY列。
    下面的例子创建一个包含名为ID,类型为int,种子为1,递增量为1的标识列
    CREATE TABLE T_test
    (ID int IDENTITY(1,1),
     Name varchar(50)
    )

    2、在现有表中添加标识列
    下面的例子向表T_test中添加一个名为ID,类型为int,种子为1,递增量为1的标识列
    --创建表
    CREATE TABLE T_test
    (Name varchar(50)
    )

    --插入数据
    INSERT T_test(Name) VALUES('张三')

    --增加标识列
    ALTER TABLE T_test
    ADD ID int IDENTITY(1,1)

    3、判段一个表是否具有标识列

    可以使用 OBJECTPROPERTY 函数确定一个表是否具有 IDENTITY(标识)列,用法:
    Select OBJECTPROPERTY(OBJECT_ID('表名'),'TableHasIdentity')
    如果有,则返回1,否则返回0

    4、判断某列是否是标识列

    可使用 COLUMNPROPERTY 函数确定 某列是否具有IDENTITY 属性,用法
    SELECT COLUMNPROPERTY( OBJECT_ID('表名'),'列名','IsIdentity')
    如果该列为标识列,则返回1,否则返回0

    4、查询某表标识列的列名
    SQL Server中没有现成的函数实现此功能,实现的SQL语句如下
    SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.columns
       WHERE TABLE_NAME='表名' AND  COLUMNPROPERTY(     
          OBJECT_ID('表名'),COLUMN_NAME,'IsIdentity')=1

    5、标识列的引用

    如果在SQL语句中引用标识列,可用关键字IDENTITYCOL代替
    例如,若要查询上例中ID等于1的行,
    以下两条查询语句是等价的
    SELECT * FROM T_test WHERE IDENTITYCOL=1
    SELECT * FROM T_test WHERE ID=1

    6、获取标识列的种子值

    可使用函数IDENT_SEED,用法:
    SELECT IDENT_SEED ('表名')

    7、获取标识列的递增量

    可使用函数IDENT_INCR ,用法:
    SELECT IDENT_INCR('表名')

    8、获取指定表中最后生成的标识值

    可使用函数IDENT_CURRENT,用法:
    SELECT IDENT_CURRENT('表名')
    注意事项:当包含标识列的表刚刚创建,为经过任何插入操作时,使用IDENT_CURRENT函数得到的值为标识列的种子值,这一点在开发数据库应用程序的时候尤其应该注意。


    利用 SQL 语句修改出一个标识列
    --将数据复制到临时表
    select * into #aclist from aclist

    --删除数据表
    drop table aclist

    --创建数据表(并设置标识列)
    create table aclist(id int identity(1,1),[date] datetime,version nvarchar(6),[class] nvarchar(10),actitle nvarchar(50),acdetail nvarchar(max),author nvarchar(50))

    --设置标识列允许插入
    set identity_insert aclist on

    --将数据从临时表转移过来
    insert into aclist(id,[date],version,[class],actitle,acdetail,author)
    select id,[date],version,[class],actitle,acdetail,author from #aclist

    --关闭标识列插入
    set identity_insert aclist off


    --强制设置标识列的起始值:
    DBCC CHECKIDENT (表名, RESEED, 1) --强制使标识值从1开始.

    展开全文
  • 漫谈SQL Server标识列

    千次阅读 2011-06-17 14:15:00
    一、标识列的定义以及特点 SQL Server中的标识列又称标识符列,习惯上又叫自增列。 该种列具有以下三种特点: 1、列的数据类型为不带小数的数值类型 2、在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,...
  • SQL Server 标识列的修改

    千次阅读 2013-03-05 11:42:22
    因工作原因,需要修改sqlserver标识列的值。测试了多次,现总结如下: 一。exec sp_configure 'allow updates',1  reconfigure with override 二。update syscolumns set colstat = 0 where id = object_id...
  • SQL Server 标识列

    2012-11-30 13:23:09
    原文地址:... 删除表内所有值并重置标识值 TRUNCATE TABLE TableName 保持表内容并重置标识列SEED DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value) DBCC CHECKIDENT ("bc_pos",RE
  • SQLServer-让标识列重新开始计算!
  • sql server标识列重置的一些知识

    千次阅读 2014-12-12 11:28:11
    sql server标识列是大家非常熟悉的了,下面为您介绍了sql server标识列重置的一些知识,如果您对sql server标识列方面感兴趣的话,不妨一看。 1、删除表内所有值并重置标识值 TRUNCATE TABLE TableName 2、...
  • SqlServer标识列、修改标识列值

    千次阅读 2016-04-28 15:34:00
    SQL Server中的标识列又称标识符列,习惯上又叫自增列。 该种列具有以下三种特点: 1、列的数据类型为不带小数的数值类型 2、在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值 3、...
  • 介绍了SQL Server手工插入标识列的方法,有需要的朋友可以参考一下
  • 一、标识列的定义以及特点SQL Server中的标识列又称标识符列,习惯上又叫自增列。该种列具有以下三种特点:1、列的数据类型为不带小数的数值类型2、在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许...
  • 更改自增当前的值 ####查看某个表中的自增当前的值: DBCC CHECKIDENT (TableName) ####修改某个表中的自增当前的值: DBCC CHECKIDENT (TableName, RESEED, value) RESEED不是列名,固定写法。 ####比如我...
  • SQL Server中的标识列又称标识符列,习惯上又叫自增列。 该种列具有以下三种特点: 1、列的数据类型为不带小数的数值类型 2、在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值 3、列值不...
  • SQL SERVER中自动标识列的改进.pdf
  • Sql Server 重置标识列

    2010-08-16 11:09:00
    SQL Server中, 我们有时需要在清空数据表之后,重新添加记录时,标识列重新从1开始计数。 我们只需要在插入记录之前,执行下面的命令: DBCC CHECKIDENT (表名, RESEED, 0) 如果是清空表中内容再重置标识列可以...
  • 标识列sql

    2010-04-27 22:56:00
    SQL Server标识列 一、标识列的定义以及特点 SQL Server中的标识列又称标识符列,习惯上又叫自增列。 该种列具有以下三种特点: 1、列的数据类型为不带小数的数值类型 2、在进行插入(Insert)操作时,该列的值是...
  • SQL Server修改标识列方法 ----允许对系统表进行更新exec sp_configure 'allow updates',1reconfigure with overrideGO ----取消标识列标记update syscolumns set colstat = 0 where id = object_id('tablename'...
  • SQL Server修改标识列方法(备忘) 原文:SQL Server修改标识列方法(备忘) SQL Server修改标识列方法 ----允许对系统表进行更新 exec sp_configure 'allow updates',1 reconfigure with ...
  • 代码如下: –允许对系统表进行更新 exec sp_configure ‘allow updates’,1 reconfigure with override GO –取消标识列标记 update syscolumns set colstat = 0 where id = object_id(‘tablename’) and colstat ...
  • SQL Server中Identity标识列的重新设置

    千次阅读 2008-10-10 14:04:00
    SQL Server中,经常会用到Identity标识列,这种自增长的字段操作起来的确是比较方便。但它有时还会带来一些麻烦。 当表中的记录被全部删除,但此时标识列的值越来越大的时候,如果不加以重置,它还会无休止的增长。...
  • 标识列 sqlServer 自增字段取出

    千次阅读 2014-03-11 09:29:38
    SQL Server中的标识列又称标识符列,习惯上又叫自增列。 该种列具有以下三种特点: 1、列的数据类型为不带小数的数值类型 2、在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值 3、列值不重复,...
  • 漫谈SQL Server中的标识列
  • SQLServer标识列”的相关问题

    千次阅读 多人点赞 2012-06-08 17:30:13
    SQLServer“标识列”的相关问题    下面我们看一张表:想一想在数据库SQLServer中我们如何能更简便的向这张表格中添加数据呢?   ... 仔细观察此表我们不难... 这就谈到了SQLServer标识列的问题。我查询一些资
  • SQL Server手工插入标识列

    千次阅读 2013-10-07 23:37:31
    如果我们在标识列中插入值,例如:  insert member(id,username) values(10,'admin') ...当 IDENTITY_Insert 设置为 OFF 时,不能向表 'member' 中的标识列插入显式值。 有的情况我们需要手动插入标识列的值,例如
  • 使用DBCC CHECKIDENT可以重新设置在使用中的表的标识列的起始值; 如在删除表中的所有记录,需要让标识列从1开始时可以在查询分析器中执行:DBCC CHECKIDENT(TableName,RESEED,0); 该语句的使用方法如下: DBCC...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,427
精华内容 26,570
关键字:

server标识列怎么设置sql