Access 2003完整教程:关于约束 (ADP)

注释本主题中的信息仅适用于 Microsoft Access 项目 (.adp)。

约束是数据库服务器自动实施的业务逻辑。当实施参照完整性时,它们限制用户可输入到指定列的可能值。在“数据库设计器”中创建约束时,它们将与创建和修改的表的 ANSI 标准保持一致。

约束与参照完整性

使用“查询设计器”更新表时,查询会考虑为所更新的列和表在数据库中定义的任何约束。例如,如果某个表定义有唯一约束,则不能执行将向表中写入非唯一行的“更新”或“追加”查询。类似地,如果更新某个列,而该列带有将列值限制在特定范围内的约束,则如果提供的更新值不在指定范围之内,查询就会出现错误。

查询也会考虑在表与表之间定义的参照完整性。例如,如果在一对多关系的“一”方中对应行不存在,则不能向“多”方中的表添加行。

约束的类型

主键约束

主键约束保证在特别的列中不允许输入相同的值,并且在这些列中也不允许输入空值。您也可以使用主键约束来确保唯一性以及参照完整性。例如,au_id列唯一标识保存在“作者”表中的每个作者。

您可以在数据库图表里直接创建主键约束。

外键约束

外键约束与主键约束或唯一约束协同工作,以确保指定的表之间的参照完整性。例如,可以对“出版商”表的title_id列加以外键约束,以确保输入的值与“书名”表的title_id列中已有的值匹配。

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

检查约束

检查约束指定了能够被表中一个或多个列接受的数据值或格式。例如,可以要求“作者”表的“邮政编码”列只接受五位数字的输入。

可以为一个表定义许多检查约束。您可以使用“Constraints”属性页来创建、更改或删除每个检查约束。

检查约束表达式

检查约束表达式概述

当向表或列附加检查约束时,必须包含一个 SQL 表达式。

对于简单情况,可以创建简单的约束表达式以检查数据;在有些情况下,可以使用 Boolean 运算符创建复杂表达式来检查数据。例如,“authors”表的“zip”列要求输入 5 个数字的字符串。下面的示例约束表达式能保证只输入 5 个数字:

zip LIKE '[0-9][0-9][0-9][0-9][0-9]'

又如,“sales”表的“qty”列要求输入值大于 0。下面的示例约束能保证只输入正数值:

qty > 0

又如,“orders”表限制所有信用卡订单的信用卡类型。下面的示例约束能保证如果是使用信用卡的订单,那么只接受 Visa、MasterCard 或 American Express 卡:

NOT (payment_method = ‘credit card’) OR
 (card_type IN (‘VISA’, ‘MASTERCARD’, ‘AMERICAN EXPRESS’))

定义约束表达式

在属性页的“CHECK 约束”选项卡中,使用以下语法在“约束表达式”框中输入表达式:


{constant | column_name | function | (subquery)}
[{operator | AND | OR | NOT}
{constant | column_name | function | (subquery)}…]

此 SQL 语法由下列参数构成:

参数说明
constant原义文字值,例如数字或字符数据。字符数据必须用单引号(')括起来。
column_name指定一列。
function内置函数。有关函数的详细信息,请参阅 SQL Server 文档。
operator算术、位逻辑、比较或字符串运算符。有关运算符的详细信息,请参阅 SQL Server 文档。
AND用于在 Boolean 表达式中连接两个表达式。当两个表达式都为真时,返回结果。

在一个语句中同时使用 AND 和 OR 两个运算符时,首先处理 AND 运算符。使用括号可以改变执行的顺序。

OR用于在 Boolean 表达式中连接两个或多个表达式。当任何一个表达式为真时,返回结果。

在一个语句中同时使用 AND 和 OR 两个运算符,须在 AND 之后计算 OR。使用括号可以改变执行的顺序。

NOT否定任何 Boolean 表达式(其中可以包含关键字,例如 LIKE、NULL、BETWEEN、IN 和 EXISTS)。

当在一个语句中使用了多个运算符时,首先处理 NOT 运算符。使用括号可以改变执行的顺序。

唯一约束

唯一约束确保不向不是表的主键的列输入重复的值。例如,在“雇员”表(emp_id列是主键)中,可以定义唯一约束,要求社会安全号码 (ssn) 列的输入值在表中是唯一的。

在数据库图表中,您可以使用“索引/键”属性页来创建、修改或删除唯一约束。

默认约束

默认约束使您可以定义一个值,无论何时用户没有能为某一列输入数据时,该值将提供给这一列。例如,假设一个表拥有字段payterms,可以使数据库服务器在用户留空该字段时输入“?”或“以后再输入”。

在数据库图表中,您可以定义默认约束为表的一个列的属性。通过在表的“列属性”视图中指定默认值来定义这种类型的约束。要确保指定带有正确分隔符的约束。例如,字符串必须用单引号引起来。

上页:Access 2003完整教程:比较运算符 (ADP) 下页:Access 2003完整教程:表达式的结构 (ADP)

Access 2003完整教程:关于约束 (ADP)

Access 2003完整教程:表达式的结构 (ADP)Access 2003完整教程:关于 SQL Server 数据库的“数据库设计器”注意事项 (ADP)
Access 2003完整教程:输入搜索值的规则 (ADP)Access 2003完整教程:处理表达式的 SQL 标量函数 (ADP)
Access 2003完整教程:“查询设计器”表示联接的方式 (ADP)Access 2003完整教程:关于索引视图和架构绑定 (ADP)
Access 2003完整教程:关于索引 (ADP)Access 2003完整教程:数据库图表和表设计窗口之间的交互 (ADP)
Access 2003完整教程:数据库图表、表设计窗口和数据库之间的交互 (ADP)Access 2003完整教程:关于自动联接表 (ADP)
Access 2003完整教程:关于键 (ADP)Access 2003完整教程:关于大型数据库项目 (ADP)
Access 2003完整教程:逻辑运算符 (ADP)Access 2003完整教程:关于数据库对象的所有权 (ADP)
Access 2003完整教程:关于 SQL Server 数据库的“查询设计器”注意事项 (ADP)Access 2003完整教程:关于“查询设计器”布局 (ADP)
Access 2003完整教程:在查询中选择与值不匹配的行 (ADP)Access 2003完整教程:关于创建查询 (ADP)
Access 2003完整教程:关于聚合函数 (ADP)Access 2003完整教程:关于“查询设计器”中的汇总和分组行为 (ADP)
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号