数据库课件ch5
- 格式:ppt
- 大小:762.50 KB
- 文档页数:35
Chapter 5 数据库完整性
数据库的完整性是指数据的正确性和相容性
DBMS必须能够:
1.定义完整性
定义完整性时可给完整性条件取个名字
2.完整性检查
3.违约处理
拒绝,级连操作,设置空值
一.实体完整性
1.实体完整性定义
2.实体完整性检查和违约处理
二.参照完整性
1.参照完整性定义
2.参照完整性检查和违约处理
三.用户定义的完整性
1.属性上的约束条件的定义
①不允许取空值
②列值唯一
③用check指定列值应该满足的条
件
a)S表中属性ssex只允许取‘男’或
'女'
b)SC表中属性grade的值应在
0~100之间
c)S表中,计算机系(‘CS’)的学生年
龄应在16~25之间,其他系的
学生年龄应在16~35之间
2.约束条件检查和违约处理
拒绝执行
¾触发器
¾问题:
当用户输入一个修改表的语句给DBMS,DBMS做什么?
①检查语法
②检查用户权限
③检查此修改是否违反某个完整性
约束条件
④对相应数据项加锁
⑤执行修改操作
上机六
1.增加表SC对S、C的外键约束
2.将system.C中的值插入你的C
3.增加表C中cpno对cno的外键约束
4.在表SC中插入system.SC的相应记录
5.在表S中增加完整性约束:性别只允许
取‘男’或‘女’, 男学生的年龄在17~28之间,女学生的年龄在16~30之间6.在表S中将你的年龄改为16。
82第5章结构化查询语言SQL在Visual FoxPro 数据库管理系统中,除了具有Visual FoxPro 命令外,还支持结构化查询语言SQL 。
SQL 是关系数据库的标准语言。
查询是SQL 语言的重要组成部分,但不是全部,SQL 还包含数据定义、数据操纵和数据控制等功能。
本章将从数据查询、数据定义、数据修改这3个方面来介绍Visual FoxPro 支持的SQL 语言。
5.1 SQL 简介SQL 来源于20世纪70年代IBM 的一个被称为SEQUEL (Structured English Query Language )的研究项目。
20世纪80年代,SQL 由美国国家标准局(简称ANSI )进行了标准化。
1989年,国际标准化组织ISO 将SQL 定为国际标准,推荐它为标准关系数据库语言。
1990年,我国也颁布了《信息处理系统数据库语言SQL 》,将其定为中国国家标准。
现在,SQL 语言已广泛应用于各大、中、小数据库,如Oracle 、Access 、Sybase 、SQL Server 、FoxPro 等。
SQL 语言的主要特点如下。
(1)SQL 是一种一体化语言,它包括数据定义、数据查询、数据操纵和数据控制等方面的功能,可以完成数据库活动中的全部工作。
包括对表结构的定义、修改,记录的插入、更新、删除和查询以及安全性控制等一系列操作,为数据库应用系统的开发提供了良好的环境。
(2)SQL 是一种高度非过程化语言,它没有必要一步步告诉计算机“如何”去做,而只需要描述清楚用户要“做什么”,SQL 语言就可以将要求交给系统,系统自动完成全部工作。
(3)SQL 语言简洁,易学易用。
虽然SQL 语言功能很强,但它只有为数不多的几条命令,表5.1给出了分类的命令动词。
另外,SQL 的语法也非常简单,接近于自然语言(英语),容易学习与掌握。
(4)统一的语法格式,不同的工作方式。
不仅可以直接以命令的方式交互使用SQL ,也可以嵌入到程序设计语言中以程序方式使用SQL 。
5 多表查询(连接)5.1 一个两表查询例子列出所有班级,显示班级的年级、班级号、专业名称和专业的学制。
“班级”表包含班级的班级号、所属学院代码、所属专业代码、年级。
“专业”表包含专业大类代码、代码、名称、专业特色、培养目标、培养要求、学制。
1) 写下查询结果的四个字段名,然后转移到“班级”表从第一个订单开始;2) 扫描行以找出年级(2004)和班级号(04014001),并且将其值拷贝到查询结果的第一行中;3) 扫描行以找出该班级中的所属专业(110103),并且转到“专业”表中找出代码为110103的字段(通过查询代码字段);4) 扫描“专业”表中的行,找出代码为110103的名称(工业工程)和学制(4),并拷贝到查询结果表中。
5)现在就生成了查询结果的一行了。
回到“班级”表的下一行,从第2步开始,重复上述过程,直到班级完毕。
这不是生成这个查询结果的唯一的方法,但是不管怎样,有两件事是相同的: 查询结果的每行数据均来自特定匹配行,一个来自于“班级”表,另一个来自于“专业”表。
匹配行是通过匹配表间对应字段的内容而找出的。
5.2 简单连接(相等连接)通过匹配相关内容形成匹配行的过程称之为连接表。
结果表称之为两表间的一个连接。
基于两个字段间的完全匹配的连接更准确地称之为相等连接。
列出所有班级,显示班级的年级、班级号、专业名称和专业的学制。
SELECT 年级, 班级号, 名称, 学制FROM 班级, 专业WHERE 所属专业 = 代码5.2.1父/子查询大多数普通的多表查询涉及具有自然父/子关系的两个表。
例如:每个教师(子)具有相关联的单位(父)每个单位(父)具有许多与之关联的教师(子)产生查询结果的匹配行是父/子行的结合。
主键和外键创建一个父/子关系。
在关系中,包含外链的表是子,包含主键的表是父。
为了在查询中生成父/子关系,你必须指定一个比较外键和主键的搜索条件。
列出每个教师及其所在的单位SELECT 姓名, 名称FROM 教师, 单位WHERE 单位代码 = 代码下面是包含相问两表的另—个查询,但其父子关系颠倒。