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 值,则不能在多个列上创建唯一索引。在创建索引时,这些被视为重复的值。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。