请给我讲一下主键和外键,且在操作数据时有什么限制和约束,谢谢 对,所有的入门级SQL书上都讲有的. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 定义主键定义主键来强制不允许空值的指定列中输入值的唯一性。如果在数据库中为表定义了主键,则可将该表与其它表相关,从而减少冗余数据。表只能有一个主键。 定义主键 在数据库关系图或表设计器中,单击要定义为主键的数据库列的行选择器。若要选择多个列,请按住 CTRL 键同时单击其它列的行选择器。右击列的行选择器,然后选择"设置主键"命令。将自动创建一个名为"PK_"且后跟表名的主键索引;可在属性页的"索引/键"选项卡上找到该索引。 警告 如果要重新定义主键,则必须先删除任何与现有主键相关的关系才能创建新主键。将出现一条信息,警告您作为该过程的一部分,将自动删除现有关系。行选择器上的主键符号 用于标识一个主键列。如果主键包含不止一列,则在一列中允许有重复值,但主键中所有列值的每个组合必须唯一。如果定义复合键,主键中的列顺序将与关系图中的表所显示的列顺序相匹配。不过,可以在创建主键后更改列的顺序。有关更多信息,请参见修改主键。 创建和修改 FOREIGN KEY 约束FOREIGN KEY 约束可以: 作为表定义的一部分在创建表时创建。如果 FOREIGN KEY 约束与另一个表(或同一表)已有的 PRIMARY KEY 约束或 UNIQUE 约束相关联,则可向现有表添加 FOREIGN KEY 约束。一个表可以有多个 FOREIGN KEY 约束。对已有的 FOREIGN KEY 约束进行修改或删除。例如,要使一个表的 FOREIGN KEY 约束引用其它列。定义了 FOREIGN KEY 约束列的列宽不能更改。 说明 若要使用 Transact-SQL 或 SQL-DMO修改 FOREIGN KEY 约束,必须首先删除已有的 FOREIGN KEY 约束,然后再通过新定义重新创建。当向表的现有列添加 FOREIGN KEY 约束时,默认情况下 Microsoft® SQL Server™ 2000 检查列中的现有数据,以确保除 NULL 外的所有数据存在于被引用的 PRIMARY KEY 或 UNIQUE 约束的列中。不过,SQL Server 也可不对列数据的新约束进行检查,不考虑列中的数据而添加新约束。当现有数据已符合新的 FOREIGN KEY 约束,或业务规则要求从此开始强制约束时,使用此选项比较有用。不过,添加约束而不进行数据检查时一定要注意,因为这样放弃了 SQL Server 对表中数据完整性的控制。禁用 FOREIGN KEY 约束下列情况可以禁用 FOREIGN KEY 约束: INSERT 和 UPDATE 语句 这种情况允许不经约束验证就可修改表中的数据。在执行 INSERT 和 UPDATE 语句过程中,如果新数据违反约束或约束只应适用于数据库中已有的数据,那么禁用 FOREIGN KEY 约束。复制处理。 如果一个 FOREIGN KEY 约束为源数据库特有,请在复制时禁用该约束。复制表时,表定义和数据从源数据库复制到目的数据库。这两个数据库通常(但不一定)在不同的服务器上。如果 FOREIGN KEY 约束为源数据库特有而在复制时未禁用,则有可能无谓地妨碍向目标数据库输入数据。删除 FOREIGN KEY 约束,从而删除了强制外键列和另一表中相关主键(或 UNIQUE 约束)列的引用完整性要求。 select xxxx? 重复 非常非常急的一个问题,请求各位大哥帮助,谢谢! 异地备份问题!!!!!!!! 关于一个并发查询时问题 百分相送 请问如何用SQL语句设置字段的IDENETITY属性? 求帮,select 执行语句的 逻辑执行顺序 请问在存储过程中用Select语句给一个变量赋值代码怎样写?最后80分! 一个不知道是简单还是困难的问题,关于MSSQL,存储过程的问题 在SQL SERVER 存储过程中 如何取出表的字段名给一变量?? 倒霉的事让我碰上了,请各位大侠诊断一下. 一个关于“触发器”的实例问题,急!!!
定义主键来强制不允许空值的指定列中输入值的唯一性。如果在数据库中为表定义了主键,则可将该表与其它表相关,从而减少冗余数据。表只能有一个主键。 定义主键 在数据库关系图或表设计器中,单击要定义为主键的数据库列的行选择器。若要选择多个列,请按住 CTRL 键同时单击其它列的行选择器。
右击列的行选择器,然后选择"设置主键"命令。将自动创建一个名为"PK_"且后跟表名的主键索引;可在属性页的"索引/键"选项卡上找到该索引。
警告 如果要重新定义主键,则必须先删除任何与现有主键相关的关系才能创建新主键。将出现一条信息,警告您作为该过程的一部分,将自动删除现有关系。行选择器上的主键符号 用于标识一个主键列。如果主键包含不止一列,则在一列中允许有重复值,但主键中所有列值的每个组合必须唯一。如果定义复合键,主键中的列顺序将与关系图中的表所显示的列顺序相匹配。不过,可以在创建主键后更改列的顺序。有关更多信息,请参见修改主键。
创建和修改 FOREIGN KEY 约束
FOREIGN KEY 约束可以: 作为表定义的一部分在创建表时创建。
如果 FOREIGN KEY 约束与另一个表(或同一表)已有的 PRIMARY KEY 约束或 UNIQUE 约束相关联,则可向现有表添加 FOREIGN KEY 约束。一个表可以有多个 FOREIGN KEY 约束。
对已有的 FOREIGN KEY 约束进行修改或删除。例如,要使一个表的 FOREIGN KEY 约束引用其它列。定义了 FOREIGN KEY 约束列的列宽不能更改。
说明 若要使用 Transact-SQL 或 SQL-DMO修改 FOREIGN KEY 约束,必须首先删除已有的 FOREIGN KEY 约束,然后再通过新定义重新创建。当向表的现有列添加 FOREIGN KEY 约束时,默认情况下 Microsoft® SQL Server™ 2000 检查列中的现有数据,以确保除 NULL 外的所有数据存在于被引用的 PRIMARY KEY 或 UNIQUE 约束的列中。不过,SQL Server 也可不对列数据的新约束进行检查,不考虑列中的数据而添加新约束。当现有数据已符合新的 FOREIGN KEY 约束,或业务规则要求从此开始强制约束时,使用此选项比较有用。不过,添加约束而不进行数据检查时一定要注意,因为这样放弃了 SQL Server 对表中数据完整性的控制。禁用 FOREIGN KEY 约束
下列情况可以禁用 FOREIGN KEY 约束: INSERT 和 UPDATE 语句
这种情况允许不经约束验证就可修改表中的数据。在执行 INSERT 和 UPDATE 语句过程中,如果新数据违反约束或约束只应适用于数据库中已有的数据,那么禁用 FOREIGN KEY 约束。复制处理。
如果一个 FOREIGN KEY 约束为源数据库特有,请在复制时禁用该约束。复制表时,表定义和数据从源数据库复制到目的数据库。这两个数据库通常(但不一定)在不同的服务器上。如果 FOREIGN KEY 约束为源数据库特有而在复制时未禁用,则有可能无谓地妨碍向目标数据库输入数据。删除 FOREIGN KEY 约束,从而删除了强制外键列和另一表中相关主键(或 UNIQUE 约束)列的引用完整性要求。