`
徜徉の小溪
  • 浏览: 448693 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数据库中的五种约束及其添加方法(转)

阅读更多

 

sql server 数据库中的五种约束及其添加方法

 

数据库中的五种约束及其添加方法

五大约束
1.----主键约束(Primay Key Coustraint) 唯一性,非空性
2.----唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个
3.----检查约束 (Check Counstraint) 对该列数据的范围、格式的限制
(如:年龄、性别等)
4.----默认约束 (Default Counstraint) 该数据的默认值
5.----外键约束 (Foreign Key Counstraint) 需要建立两表间的关系
并引用主表的列
五大约束的语法示例
1.----添加主键约束(将stuNo作为主键)

alter table stuInfo
add constraint PK_stuNo primary key (stuNo)
 
2.----添加唯一约束(身份证号唯一,因为每个人的都不一样)

alter table stuInfo
add constraint UQ_stuID unique(stuID)
 
3.----添加默认约束(如果地址不填 默认为“地址不详”)

alter table stuInfo
add constraint DF_stuAddress default ('地址不详') for stuAddress
 
4.----添加检查约束 (对年龄加以限定 15-40岁之间)

alter table stuInfo
add constraint CK_stuAge check (stuAge between 15 and 40)

alter table stuInfo
add constraint CK_stuSex check (stuSex='男' or stuSex='女')
 

 

5.----添加外键约束 (主表stuInfo和从表stuMarks建立关系,关联字段stuNo)

alter table stuInfo
add constraint FK_stuNo foreign key(stuNo)references stuinfo(stuNo)
 

 

 

 

约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整性的介绍请参见第9 章)。在SQL Server 中有5 种约束:主关键字约束(Primary Key Constraint)、外关键字约束(Foreign Key Constraint)、惟一性约束(Unique Constraint)、检查约束(Check Constraint)和缺省约束(Default Constraint)。

1 主关键字约束
主关键字约束指定表的一列或几列的组合的值在表中具有惟一性,即能惟一地指定一行记录。每个表中只能有一列被指定为主关键字,且IMAGE 和TEXT 类型的列不能被指定为主关键字,也不允许指定主关键字列有NULL 属性。
定义主关键字约束的语法如下:

CONSTRAINT constraint_name
PRIMARY KEY [CLUSTERED | NONCLUSTERED]
(column_name1[, column_name2,…,column_name16])
 
各参数说明如下:


constraint_name
指定约束的名称约束的名称。在数据库中应是惟一的。如果不指定,则系统会自动生成一个约束名。
CLUSTERED | NONCLUSTERED
指定索引类别,CLUSTERED 为缺省值。其具体信息请参见下一章。
column_name
指定组成主关键字的列名。主关键字最多由16 个列组成。

例7-3: 创建一个产品信息表,以产品编号和名称为主关键字
create table products (
p_id char(8) not null,
p_name char(10) not null ,
price money default 0.01 ,
quantity smallint null ,
constraint pk_p_id primary key (p_id, p_name)
) on [primary] 
 
2 外关键字约束
外关键字约束定义了表之间的关系。当一个表中的一个列或多个列的组合和其它表中的主关键字定义相同时,就可以将这些列或列的组合定义为外关键字,并设定它适合哪个表中哪些列相关联。这样,当在定义主关键字约束的表中更新列值,时其它表中有与之相关联的外关键字约束的表中的外关键字列也将被相应地做相同的更新。外关键字约束的作用还体现在,当向含有外关键字的表插入数据时,如果与之相关联的表的列中无与插入的外关键字列值相同的值时,系统会拒绝插入数据。与主关键字相同,不能使用一个定义为 TEXT 或IMAGE 数据类型的列创建外关键字。外关键字最多由16 个列组成。
定义外关键字约束的语法如下:
CONSTRAINT constraint_name
FOREIGN KEY (column_name1[, column_name2,…,column_name16])
REFERENCES ref_table [ (ref_column1[,ref_column2,…, ref_column16] )]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ] ]
[ NOT FOR REPLICATION ]
 
各参数说明如下:

REFERENCES
指定要建立关联的表的信息。
ref_table
指定要建立关联的表的名称。
ref_column
指定要建立关联的表中的相关列的名称。
ON DELETE {CASCADE | NO ACTION}
指定在删除表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相关联的情况下,如果指定了值CASCADE,则在删除父表数据行时会将子表中对应的数据行删除;如果指定的是NO ACTION,则SQL Server 会产生一个错误,并将父表中的删除操作回滚。NO ACTION 是缺省值。
ON UPDATE {CASCADE | NO ACTION}
指定在更新表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相关联的情况下,如果指定了值CASCADE,则在更新父表数据行时会将子表中对应的数据行更新;如果指定的是NO ACTION,则SQL Server 会产生一个错误,并将父表中的更新操作回滚。NO ACTION 是缺省值。
NOT FOR REPLICATION
指定列的外关键字约束在把从其它表中复制的数据插入到表中时不发生作用。
例7-4:创建一个订货表,与前面创建的产品表相关联
create table   orders(
order_id char(8),
p_id char(8),
p_name char(10) ,
constraint pk_order_id primary key (order_id) ,
foreign key(p_id, p_name) references products(p_id, p_name)
) on [primary]
 
注意:临时表不能指定外关键字约束。

 


惟一性约束
惟一性约束指定一个或多个列的组合的值具有惟一性,以防止在列中输入重复的值。惟一性约束指定的列可以有NULL 属性。由于主关键字值是具有惟一性的,因此主关键字列不能再设定惟一性约束。惟一性约束最多由16 个列组成。
定义惟一性约束的语法如下:
CONSTRAINT constraint_name
UNIQUE [CLUSTERED | NONCLUSTERED]
(column_name1[, column_name2,…,column_name16])
 

例7-5:定义一个员工信息表,其中员工的身份证号具有惟一性。

create table employees (
emp_id char(8),
emp_name char(10) ,
emp_cardid char(18),
constraint pk_emp_id primary key (emp_id),
constraint uk_emp_cardid unique (emp_cardid)
) on [primary]
 

7.2.4 检查约束
检查约束对输入列或整个表中的值设置检查条件,以限制输入值,保证数据库的数据完整性。可以对每个列设置符合检查。
定义检查约束的语法如下:
CONSTRAINT constraint_name
CHECK [NOT FOR REPLICATION]
(logical_expression)
 
各参数说明如下:
NOT FOR REPLICATION
指定检查约束在把从其它表中复制的数据插入到表中时不发生作用。
logical_expression
指定逻辑条件表达式返回值为TRUE 或FALSE。
例7-6: 创建一个订货表其中定货量必须不小于10。
create table   orders(
order_id char(8),
p_id char(8),
p_name char(10) ,
quantity smallint,
constraint pk_order_id primary key (order_id),
constraint chk_quantity check (quantity>=10) ,
) on [primary]
 
注意:对计算列不能作除检查约束外的任何约束。

7.2.5 缺省约束
缺省约束通过定义列的缺省值或使用数据库的缺省值对象绑定表的列,来指定列的缺省值。SQL Server 推荐使用缺省约束,而不使用定义缺省值的方式来指定列的缺省值。有关绑定缺省约束的方法请参见“数据完整性”章节。
定义缺省约束的语法如下:
CONSTRAINT constraint_name
DEFAULT constant_expression [FOR column_name]
 
例7-7:
constraint de_order_quantity default 100 for   order_quantity
 
注意:不能在创建表时定义缺省约束,只能向已经创建好的表中添加缺省约束。


7.2.6 列约束和表约束
对于数据库来说,约束又分为列约束(Column Constraint)和表约束(Table Constraint)。
列约束作为列定义的一部分只作用于此列本身。表约束作为表定义的一部分,可以作用于
多个列。
下面举例说明列约束与表约束的区别。
例7-8:
create table products (
p_id char(8) ,
p_name char(10) ,
price money default 0.01 ,
quantity smallint check (quantity>=10) , /* 列约束 */
constraint pk_p_id primary key (p_id, p_name) /* 表约束 */
 

感谢提供者
为了您的安全,请只打开来源可靠的网址

打开网站    取消

来自: http://hi.baidu.com/%C8%ED%BC%FE%B8%D6%C7%D9%CA%A6/blog/item/9b737364d7a28bfcf63654fd.html

 

分享到:
评论

相关推荐

    数据库五大约束使用方法

    下面将详细解释这五种约束及其在实际应用中的使用方法。 1. 主键约束 (Primary Key Constraint) 主键约束是用于唯一标识表中每一行的字段,它确保了每个值的唯一性和非空性。一个表只能有一个主键,且主键的值不能...

    数据库常见约束

    ### 数据库常见约束 #### 一、主键约束 ...通过以上内容,我们可以了解到MySQL数据库中常见的几种约束类型及其基本操作方法。这些约束有助于维护数据库的一致性和完整性,是开发过程中不可或缺的一部分。

    达梦数据库常用sql语句语法

    向表中添加默认值约束,可以使用如下命令: ```sql ALTER TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT '51windows.NET' FOR [字段名]; ``` - **`DEFAULT`** 用于定义字段的默认值。 #### 十三、删除默认值 从...

    数据库系统概论第五版课后答案

    ### 数据库系统概论第五版课后答案解析 #### 第7章:数据库设计 - **知识点1:数据库设计过程** - **概述**:数据库设计是建立高效且满足用户需求的数据库的重要步骤。本章主要介绍了数据库设计的六个关键阶段。 ...

    Visual FoxPro数据库及其操作

    建立数据库在VFP中有三种常见方法。一是通过项目管理器的数据选项卡,选择“新建”按钮,然后在“创建”对话框中输入数据库名称并保存。二是使用“文件”菜单的“新建”命令,同样在“创建”对话框中输入数据库名称...

    数据库原理

    在企业管理器中,可以通过设计表界面设置唯一约束,而在SQL中,可以使用`ALTER TABLE`添加`UNIQUE`约束。 3. **外键约束**:外键约束用于维护两个表之间的参照完整性,确保引用的外键值存在于父表的主键中。在实验...

    21-08-03_Fluentmigration.Demo(004_自动生成数据库及其表Customer,所有字段和约束规则).rar

    开发团队引入了FluentMigrator库,这是一个强大的工具,用于管理数据库的结构变更,使得开发者能够更高效地自动生成数据库及其表,如本示例中的“Customer”表,并定义所有字段及约束规则。 FluentMigrator是一种用...

    关系数据库理论及其应用

    《关系数据库理论及其应用》这一主题涵盖了数据库设计的基础理论与实际操作技巧,主要关注的是关系型数据库模型,以及SQL语言在数据库管理和开发中的应用。在本文中,我们将深入探讨关系数据库的基本概念,SQL语言的...

    ch08数据库的安全与完整性约束1

    8.2.1 完整性约束及其类型 完整性约束主要有实体完整性、参照完整性和用户定义的完整性。实体完整性要求主键字段不能为NULL;参照完整性确保关系间的引用完整性,防止引用不存在的记录;用户定义的完整性允许定制...

    21-08-03_Fluentmigration.Demo(003_自动生成数据库及其表Customer,但约束规则不能映射到表对应的字段上).rar

    然而,在实际操作中,开发者可能会遇到一个问题:自动生成的数据库及其表Customer在映射约束规则时存在困难。 FluentMigrator是一款强大的、基于.NET的数据库迁移库,它允许开发者使用简洁、直观的API来定义数据库...

    武汉理工大学 数据库实验报告

    实验的主要目标是熟悉DBMS界面,理解数据库的基本概念,掌握创建、修改和管理数据库及表的SQL语句,并了解数据约束及其影响。 一、实验内容与原理 1. 熟悉DBMS界面与操作:DBMS提供了一个图形用户界面(GUI),...

    数据库原理讲义(清华大学)

    数据库原理是计算机科学中的核心课程之一,主要研究如何组织、存储和检索数据的系统。清华大学的这本"数据库原理讲义"无疑是深入学习这一领域的宝贵资料。以下将根据标题和描述,结合通常在数据库原理课程中涉及的...

    数据库技术与应用 外键约束-A学习任务书.doc

    在数据库技术中,外键约束是一项至关重要的概念,它确保了数据的一致性和完整性。外键约束是关系数据库设计中的一个关键元素,特别是在实施参照完整性的场景下。本学习任务书将带你深入理解和掌握外键约束的应用。 ...

    数据库原理与设计

    数据模型是用来描述现实世界中的实体及其之间的关系的一种抽象工具。常见的数据模型有层次模型、网状模型、关系模型等。 **1.3.2 数据模型** 数据模型用于描述数据的结构、数据间的联系以及数据上的操作。关系模型...

    数据库原理及应用实验一(创建数据库和表)

    - **理解数据库及其物理文件的结构关系**:明确数据库内部逻辑结构与外部物理文件之间的对应关系。 - **掌握SQL Server Management Studio管理数据表的方法**:学会如何使用图形界面创建、修改和删除数据表。 - **...

    数据库应用上机实验报告

    实验报告的撰写要求包括实现方法、测试过程和结果分析,旨在让学生深入理解约束和触发器的工作原理及其在实际数据库应用中的作用。通过这样的实验,学生不仅掌握了理论知识,还获得了实践操作经验,进一步提升了...

    论数据库系统的安全性及其管理维护..doc

    DBMS提供了数据定义语言(DDL)和数据操作语言(DML),使得用户能够定义数据库的模式结构与权限约束,并实现数据的添加、删除等操作。 数据库系统(Database Systems)是指由数据库及其管理软件组成的系统。它是一个可...

    数据库原理课程实验报告.doc

    创建数据库时,需要指定数据文件和日志文件的大小及其增长策略。日志文件用于记录所有对数据库的更改操作,确保数据的完整性和一致性。删除数据库则会永久性地移除数据库中的所有数据和结构。 【创建与删除基本表】...

    数据库系统概论第5版PPT.rar

    《数据库系统概论》是学习数据库技术的重要教材,其第五版深入浅出地介绍了数据库的基础理论、设计方法和管理操作。这份PPT压缩包文件包含了该书的主要教学内容,是学习和复习数据库知识的理想资源。标签"sql"表明了...

Global site tag (gtag.js) - Google Analytics