读书频道 > 网站 > 网页设计 > SQL Server数据库管理与开发实用教程
3.5.1 主键约束
15-11-06    下载编辑
收藏    我要投稿   
本书通过实例循序渐进地讲解了SQL Server 2014的理论知识和基本操作。主要内容包括:数据库的基本原理、SQL Server 2014概述、数据库和表的创建与管理、表中数据的查询、Transact_SQL、索引、视图、游标、事立即去当当网订购

主键(PRIMARY KEY)用于唯一标识表中的每一条记录。可以定义表中的一列或多列为主键,主键列上没有任何两行具有相同的值(即重复值),该列也不能为空值。为了有效实现数据的管理,每张表都应该有自己的主键,且只能有一个主键。

1.使用Transact-SQL语句创建主键约束

创建主键约束的语法格式如下:

[ CONSTRAINT constraint_name ] PRIMARY KEY [ CLUSTERED | NONCLUSTERED ]
( col_name [,…n])

其中:

CLUSTERED | NONCLUSTERED:用来指出是否为PRIMARY KEY约束创建聚集索引或非聚集索引,默认为聚集索引。索引将在第5章中详细介绍。

【例3.27】 创建Orders表,包括OrderID、CustomerID、SaleID和OrderDate 4个字段,其中OrderID字段设为主键。

CREATE TABLE Orders
(
    OrderID int CONSTRAINT pk_orderid PRIMARY KEY CLUSTERED,
    CustomerID char(3),
    SaleID char(3),
    OrderDate datetime
)

该例在OrderID字段上创建主键约束,约束名为pk_orderid,并在该表上创建聚集索引。还可以在定义完所有列之后指定主键,并指定主键约束名称。

CREATE TABLE Orders
(
    OrderID int,
    CustomerID char(3),
    SaleID char(3),
    OrderDate datetime,
    CONSTRAINT pk_orderid PRIMARY KEY CLUSTERED (OrderID)
)

创建主键约束时,还可以缺省约束名称。即创建Orders表的Transact-SQL语句还可以写成如下形式:

CREATE TABLE Orders
(
    OrderID int PRIMARY KEY,
    CustomerID char(3),
    SaleID char(3),
    OrderDate datetime
)

这时没有提供主键约束的名称,SQL Server自动为该约束提供一个名称。

【例3.28】 已有Seller表,包含SaleID、SaleName、Sex等字段,将该表中的SaleID字段设为主键。

ALTER TABLE Seller
ADD CONSTRAINT pk_saleid PRIMARY KEY(SaleID)

注意 即使在创建主键约束时带有WITH NOCHECK选项,系统也总要对现有数据进行检查,若现有数据在该列上出现重复值或空值,SQL Server会提示错误信息,并拒绝执行创建主键约束操作。例如,Product表中的数据如图3-38所示。


 

Product表中包含两条记录的ProductID字段的值一样,都是p01001。通过如下语句给Product表设置主键时,系统会报错,如图3-39所示,只有修改Product表中已有数据,使每一条记录的ProductID的值各不相同,并且不为NULL,才可正确执行该语句。


 

ALTER TABLE Product
WITH NOCHECK
ADD CONSTRAINT pk_productid PRIMARY KEY(ProductID)

【例3.29】 OrderDetail表包含OrderID、ProductID和Quantity 3个字段,表中已有数据,如图3-40所示。为该表添加主键约束。

该表较为特殊,因为一张订单中可以订购多样产品,多张订单可以订购同一样产品,因此在OrderDetail表中每一条记录的OrderID值不唯一,ProductID值也不唯一。因此,单独用OrderID字段或ProductID字段做主键都不合适,这就需要用OrderID和ProductID的组合值做为主键。

ALTER TABLE OrderDetail
ADD CONSTRAINT pk_order_product PRIMARY KEY(orderID,productID)

主键约束定义在不止一列上时,一列中的值可以重复,但主键约束定义中所有列的组合值必须唯一。


 

【例3.30】 删除Seller表中创建的名为pk_saleid的主键约束。

ALTER TABLE Seller
DROP CONSTRAINT pk_saleid

2.使用SQL Server Management Studio创建主键约束

在SQL Server Management Studio中也可创建、修改、删除主键约束。

【例3.31】 使用SQL Server Management Studio为Category表添加主键约束。

具体操作步骤如下:

1)在SQL Server Management Studio的“对象资源管理器”中,选中需要添加主键约束的表Category,单击鼠标右键,在弹出的快捷菜单中选择“设计”命令,弹出“表设计器”窗口。

2)右键单击要设置为主键的字段CategoryID(如需设置多个字段为主键,则需先选中这些要设为主键的字段),在弹出的快捷菜单中选择“设置主键”命令,如图3-41所示。


 

这时主键列的左边显示“黄色钥匙”图标,如图3-42所示。


 

3)单击工具栏上的“保存”按钮,完成主键的设置。

4)如果需要取消主键的设置,在已设为主键的字段上单击鼠标右键,在弹出的快捷菜单中选择“删除主键”命令,即可取消主键的设置。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站