SQL server-基础使用

CreateIdeal 2010-11-26 02:31:45
怎样使用主键和外键
...全文
49 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子 2010-11-26
  • 打赏
  • 举报
回复

--用命令创建主键与外键.
--使用SQL语句创建主键约束可以在创建表(Create Table)或修改表(Alter Table)时进行 创建。
--例创建表时
create table tablename
(
id int (CONSTRAINT pk_id) PRIMARY KEY
)
--例修改表时
ALTER TABLE tablename --修改表
ADD
CONSTRAINT tb_PRIMARY
PRIMARY KEY CLUSTERED (列名) /*将你要设置为主键约束的列*/


--用命令创建默认值对象,并与表中字段绑定.
--使用SQL语句创建主默认值对象可以在创建表(Create Table)或修改表(Alter Table)时进行 创建。
--例创建表时
create table tablename
(
id int DEFAULT 0
)
--例修改表时
ALTER TABLE tablename --修改表
ADD
CONSTRAINT tb_DEFAULT
DEFAULT '10011' FOR 列名 /*将你要设置为默认值对象的列*/


--用命令创建CHECK约束定义某字段.
USE 销售管理系统 --引入数据库
ALTER TABLE 销售表 --修改表
ADD CONSTRAINT ck_sl --创建检查约束
CHECK (数量 >= 1 and 数量 <= 10000) --添加约束条件


--用命令创建规则对象,并与表中字段绑定.
--创建规则使用CREATE RULE语句创建
CREATE RULE RULE_AGE --创建规则
AS
@AGE !> 40 --规则条件不能大于40

CREATE RULE list_rule --创建规则
AS
@list IN ('1001', '1002', '1003') --规则条件只能输入1001、1002、1003

CREATE RULE pattern_rule --创建规则
AS
@value LIKE '_ _-%[0-9]' --规则条件在任意两个字符的后面跟一个连字符和任意多个字符,并以 0 到 9 之间的整数结尾
--创建好一个规则后,必须使用绑定才能够使用规则,一般情况下,规则可以绑定在用户自定义数据类型或是数据列中。下面可以使用SQL Server中的系统存储过程sp_bindrule将规则绑定在数据表中。
EXEC sp_bindrule 'RULE_AGE','操作员信息表.操作员年龄'


--用命令创建用户自定义数据类型,并用该数据类型定义表中字段.
--在“student”数据库中,创建用来存储邮政编码信息的“postalcode”用户定义数据类型。
--SQL语句如下:
USE student
EXEC sp_addtype postalcode,'char(8) ','not null'
dawugui 2010-11-26
  • 打赏
  • 举报
回复
FOREIGN KEY 约束
外键约束与主键约束或唯一约束一起在指定表中强制引用完整性。例如,可以在 publishers 表的 title_id 列中放置一个外键约束,以保证这一列中的输入值与 titles 表 title_id 列中的现有值匹配。

在数据库关系图中,当创建从一个附加了主键约束或唯一约束的表到另一个表之间的关系时,外键约束将自动添加到指定的列上。


FOREIGN KEY 约束
外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。

当创建或更改表时可通过定义 FOREIGN KEY 约束来创建外键。

例如,数据库 pubs 中的 titles 表与 publishers 表有链接,因为在书名和出版商之间存在逻辑联系。titles 表中的 pub_id 列与 publishers 表中的主键列相对应。titles 表中的 pub_id 列是到 publishers 表的外键。



FOREIGN KEY 约束并不仅仅只可以与另一表的 PRIMARY KEY 约束相链接,它还可以定义为引用另一表的 UNIQUE 约束。FOREIGN KEY 约束不允许空值,但是,如果任何组合 FOREIGN KEY 约束的列包含空值,则将跳过 FOREIGN KEY 约束的校验。



说明 FOREIGN KEY 约束可引用同一数据库中的表或同一表(自引用表)内的列,例如,一个包含下面三列的雇员表:employee_number、employee_name 和 manager_ employee_number。由于经理本身也是雇员,所以从 manager_employee_number 列到 employee_number 列存在外键关系。


尽管 FOREIGN KEY 约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了,则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。

FOREIGN KEY 约束是索引的候选约束,其原因有以下两点:

对 PRIMARY KEY 约束的更改可由相关表中的 FOREIGN KEY 约束校验。


当在查询中组合来自相关表中的数据时,经常在联接条件中使用外键列,方法是将一个表的 FOREIGN KEY 约束中的列与另一个表中的主键列或唯一键列匹配。索引使 Microsoft® SQL Server™ 2000 得以快速查找外键表中的相关数据。但是,创建索引不是必需的。即使没有在表间定义 PRIMARY KEY 或 FOREIGN KEY 约束,也可以对来自两个相关表中的数据进行组合,但两个表间的外键关系说明已用其键作为条件对其进行了优化,以便组合到查询中。
dawugui 2010-11-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 createideal 的回复:]
怎样使用主键和外键
[/Quote]
主键约束
主键约束确保在特定的列中不会输入重复的值,并且在这些列中也不允许输入 NULL 值。可以使用主键约束强制唯一性和引用完整性。

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 包含 au_id 和 title_id 两列,对 titles 表的访问可由 titleauthor 和 titles 之间的关联进行。


34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧