【sqlserver主键设计的注意点】教程文章相关的互联网学习教程文章

SqlServer主键外键添加及判断表是否存在

--判断表是否存在方式1 if object_id(N‘EF_User‘,N‘U‘) is null --判断表是否存在方式2 --if not exists (select * from dbo.SysObjects WHERE id = object_id(N‘[EF_User]‘) AND OBJECTPROPERTY(ID, ‘IsTable‘) = 1) begin --直接创建自增且指定主键约束的表 CREATE TABLE [dbo].[EF_User]([ID] [int] identity(1,1) not null,[loginName] [nvarchar](100) NULL,[realName] [nvarchar](100) NULL,[phoneNo] [nvarchar](1...

sqlserver中取出刚插入的主键(主键是guid类型)

25))AS-- select * from [dbo].[Table_2] -- SELECT * FROM [dbo].[Student] BEGIN BEGIN TRANDECLARE @tempTable TABLE(tempId uniqueidentifier)DECLARE @tempId uniqueidentifierINSERT INTO TABLE_2(UserName) OUTPUT Inserted.UserId INTO @tempTable VALUES(@userName) --向第一张表中插入数据SELECT @tempId=tempId FROM @tempTable --赋值给中间变量INSERT INTO dbo.Student( StuName, StuAge, StuSex,StuCode )VALUES ...

SQL Server 如何添加删除外键、主键,以及更新自增属性【图】

1.添加删除主键和外键 例如: -----删除主键约束DECLARE @NAME SYSNAMEDECLARE @TB_NAME SYSNAMESET @TB_NAME = ‘Date‘SELECT TOP 1 @NAME=NAME FROM SYS.OBJECTS WITH(NOLOCK)WHERE TYPE_DESC =‘PRIMARY_KEY_CONSTRAINT‘ AND PARENT_OBJECT_ID = ( SELECT OBJECT_ID FROM SYS.OBJECTS WITH(NOLOCK) WHERE NAME = @TB_NAME )SELECT @NAME as PKDECLARE @ALTERSQL NVARCHAR(MAX)SET @ALTERSQL=N‘ALTER TABLE ‘+@...

SQLSERVER如何使用递增排序的GUID做主键

产品表数据量较大想用Guid做表的主键,并在此字段上建立聚簇索引。 因为Guid是随机生成的,生成的值大小是不确定的,每次生成的数可能很大,也可能很小。这样会影响插入的效率 1.NEWSEQUENTIALID和newid()的区别 NEWSEQUENTIALID() 和 NEWID()都可以产生uniqueidentifier类型的,GUID.NEWID()产生的GUID是无序的,随机的。 而NEWSEQUENTIALID()是SQL SERVER2005新特性,NEWSEQUENTIALID是基于硬件(一定程度上)生成的GUID以十六进制...

SQL Server 查询表的主键的两种方式【代码】

b.column_name from information_schema.table_constraints a inner join information_schema.constraint_column_usage b on a.constraint_name = b.constraint_name where a.constraint_type = ‘PRIMARY KEY‘ and a.table_name = ‘products‘ go 方式2:SELECT a.name FROM syscolumns a inner join sysobjects d on a.id=d.id where d.name=‘products‘ and exists(SELECT 1 FROM sysobjects where xtype=‘PK‘ ...

SQL Server 主表主键自增量,如何获取主键呢?

开发过程中经常存在主表的主键是自增量的情况,需要获取增量值才能插入字表数据,获取方法如下三种:IDENT_CURRENT 返回为某个会话和用域中的指定表生成的最新标识值。 @@IDENTITY 返回为跨所有作用域的当前会话中的某个表生成的最新标识值。 SCOPE_IDENTITY() 返回为当前会话和当前作用域中的某个表生成的最新标识值。推荐使用IDENT_CURRENT ,不容易因为域和表产生错误值。 参考资料: 1、http://www.cnblogs.com/Gin-23333/p/39...

获取mssqlserver数据库表的字段名称,字段说明,数据类型,主键等表的信息

TableName=case when a.colorder=1 then d.name else ‘‘ end,---表名 TableShowsThat=case when a.colorder=1 then isnull(f.value,‘‘) else ‘‘ end,---表说明 TheSerialNumberField=a.colorder,---字段序号 FieldName=a.name,---字段名 Identification=case when COLUMNPROPERTY( a.id,a.name,‘IsIdentity‘)=1 then ‘√‘else ‘‘ end, PrimaryKey=case when exists(SEL...

MSSQL 主键自增【图】

可以看出每次自增为1具体操作方案 :本文出自 “Better_Power_Wisdom” 博客,请务必保留此出处http://aonaufly.blog.51cto.com/3554853/1943707MSSQL 主键自增标签:mssql 主键自增本文系统来源:http://aonaufly.blog.51cto.com/3554853/1943707

mybatis 针对SQL Server 的 主键id生成策略【代码】【图】

SQL Server中命令: select newId() ,可以得到SQL server数据库原生的UUID值,因此我们可以将这条指令写到 Mybatis的主键生成策略配置selectKey中。 如下: 在 mapper.xml 类型映射配置文件中<insert id="insert" parameterType="com.hqdl.xiaoyi.bean.SpUser"><selectKey keyProperty="id" resultType="String" order="BEFORE"> select newId() </selectKey> insert into sp_user_list (id, name, full_name, password, ...

写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续

http://blog.sina.com.cn/s/blog_a342ff0a0101u3kb.html sql server: 解1: select top 10 * from A where id not in (select top 30 id from A); 解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A); 按我的理解, 第一种方法: 首先根据ID查询前30条数据(默认正序),然后正序查询不在这30条数据中的前10条数据。 第二种方法: 首先根据ID正序查询前30条数据,求出ID最大的数据ID,...

在MySQL或者SQLServer中,添加对象后自动返回主键到对象模型中的配置方式

在MySQL或者SQLServer中,添加对象后自动返回主键到对象模型中的配置方式标签:key 方式 不能 通过 height oralce 数据 div 添加 本文系统来源:http://www.cnblogs.com/waves-a/p/8028590.html

SQL Server(第一章) 创建表 删除表 创建主键约束、唯一约束、外键约束、CHECK约束、默认约束【代码】

/** 创建Employees员工表 **/ USE TSQL2012 IF OBJECT_ID(‘dbo.Employees‘,‘U‘) IS NOT NULL DROP TABLE dbo.EmployeesCREATE TABLE dbo.Employees (empid INT NOT NULL,firstname VARCHAR(30) NOT NULL,lastname VARCHAR(30) NOT NULL,hiredate DATE NOT NULL,mgrid INT NULL,ssn VARCHAR(20) NOT NULL,salary MONEY NOT NULL ) /** 添加主键约束 **/ ALTER TABLE dbo.Employe...

SQL Server(MySql)中的联合主键(联合索引) 索引分析【代码】

原则,根据索引字段,由左往右依次and(where字段很重要,从左往右) 2.Or 不会使用联合索引 3.where语句中查询字段包含全部索引字段,字段顺序无关,可随意先后 4.数据量较少时,一般不会使用索引,数据库本身机制会自动判断是否使用索引 ===================================================== 测试脚本(部分借鉴其他作者的脚本):/*创建测试数据表*/ create table MyTestTable ( id varchar(10)not null, parent varchar(40)...

MS SQL SERVER搜索某个表的主键所在的列名

SYSCOLUMNS.name FROM SYSCOLUMNS,SYSOBJECTS,SYSINDEXES,SYSINDEXKEYS WHERE SYSCOLUMNS.id = object_id(‘Tab_XXX‘) --syscolumns.id为该列所属的表对象ID AND SYSOBJECTS.xtype = ‘PK‘ --sysobjects.xtype对象类型 AND SYSOBJECTS.parent_obj = SYSCOLUMNS.id AND SYSINDEXES.id = SYSCOLUMNS.id AND SYSOBJECTS.name = SYSINDEXES.name AND SYSINDEXKEYS.id = SYSCOLUMNS.id AND SYSINDEXKEYS.indid = SYSIND...

Sql Server中的游标最好只能用于有主键或唯一键的表【代码】【图】

TABLE #Foo([ID] [smallint] IDENTITY(1,1),[Code] [char](3) NULL,[Name] [varchar](50) NULL,[ProvinceID] [tinyint] NULL ) go Insert #Foo(Code, Name, ProvinceID) Select ‘A‘, ‘New York‘, 3;Declare ID Cursor For Select top 5 ID From #Foo Order by ID Open ID; Fetch From ID ; Update #Foo Set Name+=‘1‘ Where Current OF ID Close ID ; Deallocate ID Select * From #Foo goDrop Table #Foo执行结果如下:...