1 / 64

第四章 约束、默认、规则                                                     

第四章 约束、默认、规则                                                     . 回顾 第三章 表和表数据的操作. 数据类型 创建表 SQL 语句是什么 修改表 SQL 语句是什么 删除表 SQL 语句是什么 对表数据的操作都有哪些操作? (插入数据,修改数据,删除数据 … SQL 语句分别是什么). 本章内容. 数据完整性的概念及分类 约束的概念、及分类、 5 种约束的作用、创建、删除 默认的概念、创建、应用、删除 规则的概念、创建、应用、删除 教学重点及难点(△):

kimberly
Download Presentation

第四章 约束、默认、规则                                                     

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第四章 约束、默认、规则                                                     

  2. 回顾 第三章 表和表数据的操作 • 数据类型 • 创建表 SQL 语句是什么 • 修改表 SQL 语句是什么 • 删除表 SQL 语句是什么 • 对表数据的操作都有哪些操作? • (插入数据,修改数据,删除数据…SQL语句分别是什么)

  3. 本章内容 • 数据完整性的概念及分类 • 约束的概念、及分类、5种约束的作用、创建、删除 • 默认的概念、创建、应用、删除 • 规则的概念、创建、应用、删除 • 教学重点及难点(△): △ 1. check约束与规则的区分 △ 2.主键约束与UNIQUE约束区分 △ 3.DEFAULT约束与默认的区分

  4. 一致性 正确性 一、数据完整性 1、概念:指存储在数据库中数据的一致性和正确性。 数据完整性 + = 表间数据 表内数据 创建表的时候,就应当保证以后数据输入是正确的 ——错误的数据、不符合要求的数据不允许输入

  5. 域完整性 自定义完整性 实体完整性 引用完整性 列(类型、格式、数据范围)有效性如:Check约束、规则 2、数据完整性的类型 也叫列完整性 行非空且不重复,如Primary key、unique约束。 用户定义特定规则 主表与从表数据一致,如:Foreign Key

  6. 学号 姓名 地址 …. 0010012 李山 山东定陶 0010013 吴兰 湖南新田 0010014 雷铜 江西南昌 0010015 张丽鹃 河南新乡 0010016 赵可 河南新乡 0010014 雷铜 江西南昌 实体完整性 × 约束方法:唯一约束、主键约束、标识列

  7. 学号 姓名 地址 …. 0010012 李山 山东定陶 0010013 吴兰 湖南新田 0010014 雷铜 江西南昌 0010015 张丽鹃 河南新乡 0010016 赵可 河南新乡 8700000000 李亮 湖北江门 域完整性 × 约束方法:限制数据类型、检查约束、外键约束、默认值、非空约束

  8. 引用完整性 学号 姓名 地址 … 0010012 李山 山东定陶 0010013 吴兰 湖南新田 0010014 雷铜 江西南昌 0010015 张丽鹃 河南新乡 0010016 赵可以 河南新乡 数学 0010021 98 如果要在右表中插入下面记录… × 约束方法:外键约束

  9. 用户编号 用户姓名 会员证 …. AV0012 孙悟空 AV378289 AV0013 猪悟能 AV378290 AV0014 沙悟净 AV378291 CV0015 玄痛 AV372133 × CV0016 乔峰 AV121322 触发器:检查信用值 自定义完整性 约束方法:规则、存储过程、触发器

  10. 二、约束 • 约束是SQL Server强制实行的应用规则,保证数据库数据完整性的控制机制,它通过限制列中数据、行中数据和表之间数据来保证数据的完整性。 注意:约束可以在创建表时定义,也可以使用ALTERTABLE语句来添加与删除。当表被删除时,约束也同时被删除。 • 类型:有以下几种约束check、primary key、foreign key、unique、default约束 保证数据的完整性 = 实施完整性约束

  11. 1、check约束 • 作用:限制输入到一列或多列的值的范围。强制数据中数据的域完整性。 • 比如,成绩只能在0到100分之间,性别只能是男或女,在校大学生的年龄要在15到65岁之间……还有哪些? 创建、删除方法: • 用企业管理器(演示) • 用SQL语句 例:为客户表的性别列创建check约束xb,要求性别只能为男或女。

  12. 用企业管理器创建约束

  13. 用企业管理器删除约束

  14. 用SQL语句创建及删除check约束 • 创建表时创建check约束语法格式: Use 数据库名 create table 表名 (…… 列名 数据类型[(长度)] 是否为空 [constraint 约束名 check (列值范围)] …… ) • 修改表时添加check约束语法格式: Use 数据库名 alter table 表名 Add constraint 约束名 check(列的取值范围)

  15. 例1.创建客户表,要求性别为男和女。 Create table 客户表 (客户编号 varchar(10) not null, 客户姓名 varchar(10) not null, 客户密码 varchar (16) not null, 性别 char(2) null Constraint xb check (性别=‘男’or 性别=‘女’), 证件号 varchar(18) null, 月收入 smallmoney null ) 例2.对已创建好的客户表表进行增加约束:性别为男和女。 Alter Table 客户表 Add Constraint xb check(性别=‘男’or 性别=‘女’) KingLian

  16. 删除CHECK约束: USE 数据库名 ALTER TABLE 表名 DROP CONSTRAINT 约束名 例1:删除约束名为xb的约束 ALTERTABLE 客户表 DROPCONSTRAINTxb KingLian

  17. 课堂练习: • 在客户表中为月收入列添加check约束,要求要求月收入在2000到5000之间。约束名为yshr(以修改表的形式创建)

  18. 2、Primary Key约束 • 作用:约束主键值不允许为空,不能重复。强制表的实体完整性。 • 添加主键约束以后,设定为主键的列值不能取空,不能有重复值。比如,把客户表里的客户编号设为主键,那客户编号不能有重复值,不能没有客户编号。 • 系统会自动为Primary Key约束创建一个聚簇索引。将在第五章讲解。 • 创建、删除primary key约束的方法 1、企业管理器(演示) 2、sql语句 例:为客户表的客户编号列创建主键约束。

  19. 用SQL语句创建及删除primary key 约束 语法格式 1、创建表时创建: Use 数据库名 Create table 表名 (…… 列名 数据类型[(长度)] 是否为空 constraint 约束名 primary key clustered, …… ) 2、修改表时创建 Use 数据库名 Alter table 表名 add constraint 约束名 primary key clustered(列名)

  20. 例1:在创建客户表时定义‘客户编号’为主键。例1:在创建客户表时定义‘客户编号’为主键。 Use 手机 Create table 客户表 (客户编号 varchar(10) not null constraint khbh primary key clustered, 客户姓名 varchar(10) not null, 客户密码 varchar (16) not null, 性别 char(2) null, 证件号 varchar(18) null, 月收入 smallmoney null ) KingLian

  21. 例2.对客户表添加一个按‘客户编号’建立的主键。例2.对客户表添加一个按‘客户编号’建立的主键。 USE 手机 ALTER TABLE 客户表 ADD CONSTRAINT khbh PRIMARY KEY clustered(客户编号) • 删除primary key约束 语法格式:Use 数据库名 alter table 表名 Drop constraint 约束名 例3.删除客户表中的主键约束 Use 手机 Alter table 客户表 Drop constraint khbh KingLian

  22. 课堂练习 • 将客户表中客户姓名列创建为主键约束 • 思考:如何在一张表里将两个列同时设为主键? 1、首先设为主键的列不能为空:为空时用alter table语句修改 2、再将两列设为主键: • 如何删除主键约束?将客户表中的客户姓名列的主键约束删除。自己写语句…

  23. 3、Foreign Key约束 • 作用:建立和加强两个表(主表和从表)数据间的一致性。确保数据的参照完整性。 • 例如客户表和订单表,如果在主表(客户表)中没有记录的客户信息,在从表(订单表)中是不能插入相关记录的。 注意: ①外表中的外键列的数据类型与长度要与主键表中的一致。 在创建表时(外键表列名)可以不用,但在修改表中(添加外键时)要用。 ②主键表(特别是主键)应先有数据,否则以后无法填写数据。 ③外键表中的外键值一定要属于主键表中的数据或者其值为空。

  24. 创建外键约束(FOREIGNKEY)两种方法: 1、企业管理器(演示) 2、SQL语句 语法格式: 创建表时创建 Use 数据库名 Create table 从表名 (…… 列名 数据类型[(长度)] 是否为空 foreing keyreferences 主表名 (主表主键列名) …… ) 修改表时创建 Use 数据库名 Alter table 从表名 Add constraint 约束名 foreing key(外键列名)reference 主表名(主键列名) KingLian

  25. 实例 • 在订单表里为客户编号列定义外键约束,要求只有在客户表里出现过的客户编号才能在订单表里出现。 • 分析:首先要分清哪一张是主表,哪一张是从表,要对哪一个列进行约束。另外,要确定有外键约束关系的列在主表中都是主键列。 练习 • 在订单表里定义外键。要求只有在商品表里出现的商品编号才能在订单表里出现。

  26. 4、Unique约束 • 作用:确保表中的两个数据行在非主键列上取值唯一。可以为空值。 • 比如说客户表中,客户编号是主键,在表里还有一个证件号的列,该列不作为主键,但它的取值也不能相同,所以,可以用unique约束保证输入数据库中的证件号是不同的。 • 两种创建方法: 1、企业管理器(演示) 2、SQL语句

  27. 用企业管理器创建unique约束

  28. 先看一下,这是一张空表

  29. 第一次执行时,插入了一个85分成绩, 再次执行插入85分成绩时,就不满足 unique约束了

  30. 用sql语句创建unique约束 语法格式: 创建表时创建 Use 数据库名 Create table 表名 (…… 列名 数据类型[( 长度)] 是否为空 Constraint 约束名 unique …… ) 修改表时创建 Use 数据库名 Alter table 表名 Add constraint 约束名 unique nonclustered(列名)

  31. 实例 为客户表中的证件号列添加unique约束 方法一:创建表时添加 Use 手机 Create table 客户表 (客户编号 varchar(10) not null constraint khbh primary key clustered, 客户姓名 varchar(10) not null, 客户密码 varchar (16) not null, 性别 char(2) null, 证件号 varchar(18) null Constraint zhjh unique, 月收入 smallmoney null )

  32. 实例 • 方法二:修改表时创建 Use 手机 Alter table 客户表 Add constraint zhjh unique nonclustered(证件号) KingLian

  33. 删除unque约束 方法: 1、利用企业管理器(演示) 2、利用T-SQL语句 语法格式: use 数据库名 Alter table 表名 Drop constraint 约束名 例:删除客户表中证件号列的unique约束 Use 手机 Alter table 客户表 Drop constraint zhjh

  34. 5、Default约束 作用:数据输入时如果没有为列指定值,系统则取该列DEFAULT定义的默认值。比如在客户表中,性别列默认值为“男”,当用户没有指定该列的初始值时,系统会自动把值设为“男”。 创建方法: 1、企业管理器(演示) 2、T-SQL语句

  35. 利用企业管理器创建default约束

  36. 利用sql语句创建default约束 语法格式: 创建表时创建: Use 数据库名 Create table 表名 (…… 列名 数据类型[(长度)] 是否为空 default 默认值 …… ) 修改表时创建: Use 数据库名 Alter table 表名 Add constraint 约束名 default 默认值 for 列名

  37. 实例 为客户表中的性别列创建default约束,默认值为‘男’ 方法一: Use 手机 Create table 客户表 (客户编号 varchar(10) not null , 客户姓名 varchar(10) not null, 客户密码 varchar (16) not null, 性别 char(2) null default ‘男’, 证件号 varchar(18) null, 月收入 smallmoney null ) KingLian

  38. 实例 方法二: Use 手机 Alter table 客户表 Add constraint xbm default ‘男’ for 性别 • 删除default约束 语法格式: use 数据库名 alter table 表名 drop constraint 约束名 实例:删除客户表中性别列的default约束 Use 手机 Alter table 客户表 Drop constraint xbm KingLian

  39. 三、默认 • 默认:同表一样,是一种数据库对象,为没有指定数据的列提供事先定义的默认值。用户创建一个默认后,需把它绑定到一个或多个列上。 • 功能上与默认约束一样,但使用上有区别。与default约束的比较:

  40. 默认的创建和应用 • 方法: 1、企业管理器(演示) 2、T-SQL语句

More Related