SQLServer主键和唯一约束的区别

首先说明一点,主键又称主键约束,它也是一种约束,看下它和唯一约束的创建语法:

alter table Person add constraint PK_Id primary key (Id) alter table Person add constraint UQ_Name unique (Name)

主键和唯一约束都要求字段值唯一,除此外,它们还有如下区别:

·同一张表只能有一个主键,但能有多个唯一约束;
·主键字段值不能为NULL,唯一约束字段值可以为NULL;
·主键字段可以做为其他表的外键,唯一约束字段不可以做为其他表的外键;
·SQLServer默认为主键字段创建聚集索引,为唯一约束字段创建非聚集索引;

主键,唯一,但是不能为空;唯一约束,唯一,但是可以为空

时间: 2024-10-26 13:15:03

SQLServer主键和唯一约束的区别的相关文章

SQLServer主键和唯一约束的区别_MsSql

首先说明一点,主键又称主键约束,它也是一种约束,看下它和唯一约束的创建语法: alter table Person add constraint PK_Id primary key (Id) alter table Person add constraint UQ_Name unique (Name) 主键和唯一约束都要求字段值唯一,除此外,它们还有如下区别: ·同一张表只能有一个主键,但能有多个唯一约束: ·主键字段值不能为NULL,唯一约束字段值可以为NULL: ·主键字段可以做为其他表的外

Oracle技术:基于主键和唯一约束的显示索引控制

从Oracle9i开始,主键创建时的索引和唯一性约束可以在建表时独立定义. 随后,约束可以被独立drop,而索引可以保留.这是Oracle9i中对于索引增强的几个特性之一. SQL> CREATE TABLE employees 2  ( 3    empno NUMBER(6), 4    NAME VARCHAR2(30), 5    dept_no NUMBER(2), 6    CONSTRAINT emp_pk PRIMARY KEY(empno) 7      USING INDEX

sqlserver主键设计的注意点

在设计主键的时候往往需要考虑以下几点: 1.无意义性:此处无意义是从用户的角度来定义的.这种无意义在一定程度上也会减少数据库的信息冗余.常常有人称呼主键为内部标识,为什么会这样称呼,原因之一在于"内部",所谓内部从某种程度上来说就是指表记录,从大的范围来说就是数据库,如果你在设计的时候选择了对用户来说有意义的信息来作为主键,那么迟早会面对用户提出对这块信息进行更新的需求,那么你就违背了它应有的静态. 2.静态性:主键除了唯一地标识一条记录及外键的关联外,应不再考虑其他的意义,最理想的状

link 环境下定义了主键再定义唯一字段,那么是不是会冲突?

问题描述 link 环境下定义了主键再定义唯一字段,那么是不是会冲突? link 环境下定义了主键再定义唯一字段,那么是不是会冲突? 解决方案 不会,参考http://www.cnblogs.com/ShadowLoki/archive/2013/09/09/3310419.html

OCP1z0-047 :主键与唯一索引

主键包括非空和唯一约束,它会自动创建唯一索引(注:唯一约束也会自动创建唯一索引),测试如下: 1. 创建一个表products gyj@OCM> Create table products( 2  product_id number(6) constraintprod_id_pk PRIMARY KEY, 3  product_name varchar2(15) 4  ); Table created. 2. 查表products的索引 gyj@OCM> select INDEX_NAME,I

Oracle中唯一约束和唯一索引的区别

在使用TOAD来操作Oracle数据库时,会注意到创建约束时有Primary Key.Check.Unique和Foreign Key四种类型的约束,这与SQL Server中的约束没有什么区别,这里的Check约束除了用于一般的Check约束外,在Oracle中也用于非空约束的实现.也就是说如果一个字段不允许为空,则系统将会创建一个系统的Check约束,该约束定了某字段不能为空. 除了约束,还有另外一个概念是索引,在TOAD中创建索引的界面如下: 我们可以注意到在唯一性组中有三个选项:不唯一.

c# 数据库-c#sqlserver 怎么让2个表的主键(ID)相同呢?

问题描述 c#sqlserver 怎么让2个表的主键(ID)相同呢? c#sqlserver 怎么让2个表的主键(ID)相同呢 ? 解决方案 既然主键相同,何不放入一个表,建议看看范式 解决方案二: 额....相同的话就不用2个表了吧,主键是唯一标识的

联合主键和复合主键区别

问题描述 在数据库中,什么是联合主键和复合主键?他们之间有什么区别?他们应用场景是什么?他们和普通主键id有什么区别? 解决方案 什么是数据表的复合主键所谓的复合主键 就是指你表的主键含有一个以上的字段组成比如create table test( name varchar(19), id number, value varchar(10), primary key (name,id))上面的name和id字段组合起来就是你test表的复合主键它的出现是因为你的name字段可能会出现重名,所以要加

MySQL 主键与索引的联系与区别分析_Mysql

关系数据库依赖于主键,它是数据库物理模式的基石.主键在物理层面上只有两个用途: 惟一地标识一行. 作为一个可以被外键有效引用的对象. 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.下面是主键和索引的一些区别与联系. 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键. 所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引.因为主键可以唯一标识某一行记录,所以可以确保执行数据更新.删除的