打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
主键与索引
PRIMARY   KEY   约束
表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义   PRIMARY   KEY   约束来创建主键。

一个表只能有一个   PRIMARY   KEY   约束,而且   PRIMARY   KEY   约束中的列不能接受空值。由于   PRIMARY   KEY   约束确保唯一数据,所以经常用来定义标识列。

当为表指定   PRIMARY   KEY   约束时,Microsoft®   SQL   Server™   2000   通过为主键列创建唯一索引强制数据的唯一性。当在查询中使用主键时,该索引还可用来对数据进行快速访问。

如果   PRIMARY   KEY   约束定义在不止一列上,则一列中的值可以重复,但   PRIMARY   KEY   约束定义中的所有列的组合的值必须唯一。

如下图所示,titleauthor   表中的   au_id   和   title_id   列组成该表的组合   PRIMARY   KEY   约束,以确保   au_id   和   title_id   的组合唯一。


当进行联接时,PRIMARY   KEY   约束将一个表与另一个表相联。例如,若要确定作者与书名的对应关系,可以使用   authors   表、titles   表和   titleauthor   表的三向联接。因为   titleauthor  


--------------
创建唯一索引
在   SQL   Server   中,当唯一性是数据本身的特点时,可创建唯一索引,但索引列的组合不同于表的主键。例如,如果要频繁查询   employee   表(该表主键为   emp_id)的社会保障号   (ssn)   列,而且要保证保障号是唯一的,则在   ssn   上创建唯一索引。如果用户为多个员工输入了相同的社会保障号,则数据库显示错误,并且不能保存该表。

当创建或修改唯一索引时,可以设置选项以忽略重复的键。如果已设置该选项,并且试图通过添加或更新将影响多行的数据来创建重复键(使用   INSERT   或   UPDATE   语句),则不能添加导致重复的行,或在更新时放弃这样的行。

例如,在已含有 "Jones "的表中试图用 "Jones "更新 "Smith ",则在结果表中只有一个 "Jones ",而没有 "Smith "。原有的 "Smith "行丢失,因为   UPDATE   语句实际上是   DELETE   语句后跟一个   INSERT   语句。 "Smith "已删除,而试图插入另一个 "Jones "的操作失败。整个事务不能回滚,因为该选项的目的是允许事务,而无管是否存在重复项。

创建唯一索引  

在数据库关系图中选择要创建索引的表,右击该表,然后从快捷菜单中选择 "索引/键 "命令。  
-或-

为要创建索引的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择 "索引/键 "命令。

选择 "新建 "命令。 "选定的索引 "列表显示系统分配给新索引的名称。


在 "列名 "下选择要创建索引的列。可以选择多达   16   列。为获得最佳性能,只为每个索引选择一列或两列。对所选的每个索引,指出索引是按升序还是降序组织列值。


选择 "创建   UNIQUE "复选框。


选择 "索引 "选项。


如果要忽略将在索引中创建重复键的新数据或更新数据(使用   INSERT   或   UPDATE   语句),则选择 "忽略重复键 "选项。  
当保存表或关系图时,索引即创建在数据库中。

注意       如果某列有多行包含   NULL   值,则不能在该列上创建唯一索引。同样,如果列的组合中有多行包含   NULL   值,则不能在多个列上创建唯一索引。在创建索引时,这些被视为重复的值。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Oracle数据库数据对象分析(中)--(2)
主键(Primary Key)约束和唯一性(UNIQUE)约束有什么区别?
Mysql基础02-约束
primary key与unique的区别
mysql删除索引
SQL基础:创建、更改和删除表
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服