- 1、本文档共47页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库设计——完整性
约束2:唯一性约束 唯一性约束作用:指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值。 唯一约束与主键约束的区别: 使用唯一性约束的字段允许为空值; 一个表中可以允许有多个唯一性约束; 唯一约束与主键约束的相似: 唯一性约束用于强制在指定字段上创建一个唯一性索引; 创建了唯一约束的列也可以被外键所引用。 例如:在客户表中的客户电话列上创建唯一约束。 唯一约束的例子 [例] 建立部门表DEPT,要求部门名称Dname列取值唯一,部门编号Deptno列为主键。 CREATE TABLE DEPT (Deptno NUMERIC(2), Dname CHAR(9) UNIQUE,/*要求Dname列值唯一,定义在列级*/ Location CHAR(10), PRIMARY KEY (Deptno) ) 将唯一约束定义在表级 CREATE TABLE DEPT2 (Deptno NUMERIC(2), Dname CHAR(9) ,/*要求Dname列值唯一*/ Location CHAR(10), PRIMARY KEY (Deptno), CONSTRAINT UK_Dname UNIQUE (DName) /*唯一约束定义在表级,即表的最后*/ ) 约束3:检查约束 作用:通过一个或多个字段上的输入值是否符合设定的检查条件来保证数据库数据的完整性。 一个表中可以定义多个检查约束; 每个CREATE TABLE语句中每个字段只能定义一个检查约束; 当执行INSERT语句或者UPDATE语句时,检查约束将验证数据; CHECK约束 [例] Student3表的Ssex只允许取“男”或“女”。 CREATE TABLE Student3 (Sno CHAR(9) PRIMARY KEY, Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK (Ssex IN (男,女) ) , /*性别属性Ssex只允许取男或女 */ Sage SMALLINT, Sdept CHAR(20) ) 表级check约束定义 CREATE TABLE Student4 (Sno CHAR(9) PRIMARY KEY, Sname CHAR(8) NOT NULL, Ssex CHAR(2) , /*性别属性Ssex只允许取男或女 */ Sage SMALLINT, Sdept CHAR(20), constraint CK_Ssex CHECK (Ssex IN (男,女) ) ) 约束4:默认约束约束5:空值约束 每个字段只能定义一个默认约束; 默认约束、空值约束在表的定义时指定。 约束4:默认约束约束5:空值约束 create table 图书明细 ( 书号 varchar(50) primary key, 书名 varchar(50) not NULL, 类别 int NULL, 描述 ntext default ‘已出版, 成本价 money not NULL, 零售价 money NULL ) 约束6:外键约束管理 作用:外键约束强制实现参考完整性,通过创建外键约束可以实现表和表之间的依赖关系,实现数据的一致性。 外键约束定义一个列或多个列,这些列可以参考同一个表或另外一个表中的主键约束列或惟一性约束列,唯一索引列。 使用Transact-SQL语句设置外键约束 [CONSTRAINT constraint_name] FOREIGN KEY (column_name[,…n]) REFERENCES ref_table [(ref_column[,…n])] ????????[ ON DELETE { CASCADE | NO ACTION } ]???????[ ON UPDATE { CASCADE | NO ACTION } ]????
文档评论(0)