数据库管理及应用 期末复习
期末考试的题型和考试方式 一、考试的题型 1、选择题(10小题,20分) 2、填空题(10小题,30分) 3、简答题(4小题,20分) 4、编程题(3题,30分) (1)数据查询(2题) (2)存储过程(1题) 二、考试方式:开卷 三、考试时间:100分钟
考试范围 第1章 数据库系统概述 第2章 关系数据库 第3章 关系数据库标准语言----SQL 第4章 关系数据库化理论 第5章 数据库安全保护 第6章 数据库设计 第7章 SQL Server 2000高级设计
第1章 数据库系统概述 一、复习课本内容 1.1 信息、数据、数据处理与数据管理(理解) 1.2 数据库技术的产生、发展(理解) 第1章 数据库系统概述 一、复习课本内容 1.1 信息、数据、数据处理与数据管理(理解) 1.2 数据库技术的产生、发展(理解) 1.3 数据库系统的组成(理解) 1.4 数据库系统的模式结构(掌握) 1.6 数据库管理系统(DBMS) (掌握) 1.6.1 DBMS的主要功能 1.6.2 DBMS的组成
第1章 数据库系统概述 一、复习课本内容 1.7 数据模型(掌握) 1.8 四种数据模型 1.8.3 关系模型 (掌握) 第1章 数据库系统概述 一、复习课本内容 1.7 数据模型(掌握) 1.8 四种数据模型 1.8.3 关系模型 (掌握) 1.9 数据库系统的发展(了解)
第1章 数据库系统概述 二、本章练习题 1、网上练习题 2、课本习题(与要求复习内容有关的习题) 三、本章考试题型 (1)选择题 第1章 数据库系统概述 二、本章练习题 1、网上练习题 2、课本习题(与要求复习内容有关的习题) 三、本章考试题型 (1)选择题 (2)填空题 (3)简答题
第2章 关系数据库 一、复习课本内容 2.1 关系模型的数据结构及其形式化定义(理解) 2.2 关系的键与关系的完整性(理解) 第2章 关系数据库 一、复习课本内容 2.1 关系模型的数据结构及其形式化定义(理解) 2.2 关系的键与关系的完整性(理解) 2.3 关系代数 (掌握) 二、本章练习题 1、网上练习题 2、课本习题(与要求复习内容有关的习题) 三、本章考试题型 (1)选择题 (2)填空题 (3)简答题
第3章 关系数据库标准语言--SQL 一、复习课本内容(重要) 3.1 SQL语言的基本概念与特点(了解) 3.2 了解SQL Server 2000 3.2.2 企业管理器 (掌握使用) 3.2.3 查询分析器 (掌握使用) 3.3 创建与使用数据库(理解)
第3章 关系数据库标准语言--SQL 一、复习课本内容 3.4 创建与使用数据表 3.4.1 数据类型 (掌握常用的) 3.4 创建与使用数据表 3.4.1 数据类型 (掌握常用的) 3.4.2 创建数据表 2. 用SQL命令创建数据表 (掌握) 3.4.3 定义数据表的约束 (掌握)
第3章 关系数据库标准语言--SQL 一、复习课本内容 3.5 创建与使用索引 3.5.1 索引的作用 (理解) 3.5 创建与使用索引 3.5.1 索引的作用 (理解) 3.5.2 索引的分类 (理解) 3.5.3 创建索引 2. 用SQL命令创建索引 (掌握)
第3章 关系数据库标准语言--SQL 一、复习课本内容 3.6 数据查询 掌握3.6.1---3.6.7 3.7 数据更新 3.6 数据查询 掌握3.6.1---3.6.7 3.7 数据更新 掌握用SQL命令添加、修改和删除数据 3.8 视图 掌握用SQL命令创建视图 3.9 数据控制(理解)
第3章 关系数据库标准语言--SQL 二、本章练习题 1、网上练习题 2、课本例题、习题(与要求复习内容有关的) 三、本章考试题型 (1)选择题 (2)填空题 (3)简答题 (4)编程题:数据查询
3.4.3 定义数据表的约束 一、域完整性约束 1、字段的数据类型 2、空值约束(NOT NULL) 3.4.3 定义数据表的约束 一、域完整性约束 1、字段的数据类型 2、空值约束(NOT NULL) 3、缺省约束(default constraints) 4、检查约束(check constraints) 二、实体完整性约束 1、主键约束(primary key constraints) 2、唯一约束(unique constraints) 三、参照完整性约束 1、参照约束:被参照表的记录删除,参照表中的相应记录都要删除。如学生表某个学生删除,成绩表中有关该学生的所有记录都要删除。 2、外键约束:外键的值在所参照表的主键值必须存在。 四、用户定义完整性:通过编程实现,如存储过程。
例如,在创建学生表时,加入约束的语句为: CREATE TABLE 学生表 (学号 CHAR(7) NOT NULL, 姓名 CHAR(8), 性别 CHAR(2) DEFAULT '男', 年龄 INT CHECK(年龄>=18 AND 年龄<=60) 专业代号 CHAR(3), 所属系别 CHAR(5), PRIMARY KEY(学号), FOREIGN KEY (所属系别) REFERENCE 系部表(所属系别))
3.8 视图 一、视图概述 二、创建视图 三、查询视图
一、视图概述 1、视图是从一个或几个基本表(或视图)导出的表,视图和基本表不同之处在于,它并没有真正地存储数据,它只是存放视图的定义,它是一种虚的映射关系,它所存取的数据必须依附于所关联的基本表。视图可以和基本表一样被查询、被删除。 2、视图的优点 视图能够简化用户的操作。 视图使用户能以多种角度看待同一数据。 视图对重构数据库提供了一定程度的逻辑独立性。 视图能够对机密数据提供安全保护。
二、创建视图 SQL语言用CREATE VIEW语句建立视图,其一般格式为: CREATE VIEW 视图名 [(字段名[,字段名]…)] AS 子查询 1)组成视图的属性列名或者全部省略或者全部指定,没有第三种选择。 在下列三种情况下必须明确指定组成视图的所有列名: ●其中某个目标列不是单纯的属性名,而是库函数或列表达式; ●多表连接时选出了几个同名列作为视图的字段; ●需要在视图中为某个列启用新的更合适的名字。
2)子查询可以是任意复杂的SELECT语句,但通常不允许含有ORDER BY子句、INTO子句和DISTINCT短语,不能涉及临时表。 1、在单个基本表上建立视图 例:建立200101班学生的视图。 CREATE VIEW V200101 AS SELECT 学号,姓名,出生年份 FROM 学生 WHERE 班级=‘200101’ 实际上,DBMS执行CREATE VIEW语句的结果只是把对视图的定义存入数据字典,并不执行其中的SELECT语句。只是在对视图查询时,才按视图的定义从基本表中将数据查出。
2、在多个基本表上建立视图。 例:建立200101班选修了C1课程号学生的视图。 CREATE VIEW V1(学号,姓名,分数)AS SELECT 学生.学号,姓名,分数 FROM 学生,成绩 WHERE 学生.学号=成绩.学号 AND 成绩.课程号=‘C1’ AND 班级=‘200101’ 3、在基本表与视图上建立视图。 例:建立200101班选修了C1课程号且成绩在90分以上的学生视图。 CREATE VIEW V2 AS SELECT 学号,姓名,分数 FROM V1 WHERE 分数>90
三、查询视图 视图查询过程:DBMS执行对视图的查询时,首先进行有效性检查,检查查询涉及的表、视图等是否在数据库中存在,如果存在,则从数据字典中取出查询涉及的视图的定义,把定义中的子查询和用户对视图的查询结合起来,转换成对基本表的查询,然后再执行这个经过修正的查询。将对视图的查询转换为对基本表的查询的过程称为视图的消解(View Resolution)。
例:在200101班的视图中找出出生年份大于1985年的学生。 SELECT 学号,姓名,出生年份 FROM V200101 WHERE 出生年份>1985 本例转换后的查询为: SELECT 学号,姓名,出生年份 FROM 学生 WHERE 班级=‘200101’ AND 出生年份>1985 说明: 上述查询要求转换成等价的对基本表的查询是可操作的,如果定义视图时子查询的目标列是函数或一般表达式时,将无法实现这样的转换。
例:用视图方式对成绩表生成成绩统计供查询。 CREATE VIEW 成绩统计(课程号,平均分,最高分,最低分)AS SELECT 课程号,AVG(分数),MAX(分数),MIN(分数)FROM 成绩 GROUP BY 课程号 1)查看成绩统计表。使用如下语句: SELECT * FROM 成绩统计 2)也可查某门课程C1的成绩统计情况。使用如下语句: SELECT * FROM 成绩统计 WHERE 课程号=‘C1’ 3)但不能以平均分、最高分、最低分作为查询条件。
第4章 关系数据库理论 一、复习课本内容 4.1 规范化问题的提出(理解) 4.2 函数依赖(了解) 4.4 关系模式的范式(了解) 第4章 关系数据库理论 一、复习课本内容 4.1 规范化问题的提出(理解) 4.2 函数依赖(了解) 4.4 关系模式的范式(了解) 4.5 关系模式的规范化 (了解) 二、本章练习题 1、网上练习题 三、本章考试题型 (1)选择题 (2)填空题
第5章 数据库安全保护 一、复习课本内容 5.1 数据库的安全性(了解) 5.2 完整性控制(了解) 5.3 并发控制与封锁(了解) 第5章 数据库安全保护 一、复习课本内容 5.1 数据库的安全性(了解) 5.2 完整性控制(了解) 5.3 并发控制与封锁(了解) 二、本章练习题 1、网上练习题 三、本章考试题型 (1)选择题 (2)填空题 (3)简答题
5.3 并发控制与封锁 一、事务分类 二、显式事务 三、并发问题
一、事务分类 1、事务定义 2、事务特性 3、 事务分类 事务是一个逻辑工作单元,一个事务内的所有SQL语句要么全部执行,要么都不执行。 一个逻辑工作单元必须有4个属性,只有这样才能成为一个事务。 • 原子性(Atomicity) • 一致性(Consistency) • 隔离性(Isolation) • 持久性(Durability) 3、 事务分类 按事务的启动和执行方式,可以将事务分为3类: • 显式事务 • 自动提交事务 • 隐性事务
二、显式事务 1、启动事务 启动事务使用BEGIN TRANSACTION语句。其语法格式如下: BEGIN TRAN[SACTION] [transaction_name | @tran_name_variable [WITH MARK ['description']]] 2、结束事务 可使用COMMIT TRANSACTION语句成功地结束事务。其语法格式如下: COMMIT [TRAN[SACTION] [transaction_name | @tran_name_variable]]
例如: BEGIN TRANSACTION UPDATE 库存表 SET 库存量=库存量-l0 WHBRE 商品代码=‘K01’ UPDATE 进账表 SET 金额=金额+200.00 WHERE 账号=‘0027-654321’ COMMIT GO
三、并发问题 如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生数据不一致问题,这就是并发问题。它包括: • 丢失或覆盖更新(Lost Update)。 • 未确认的相关性(脏读,Dirty Read)。 • 不一致的分析(非重复读,Non-Repeatable Read)。 • 幻像读。 上述四种情况的例子请见书上
第6章 数据库设计 一、复习课本内容 5.1 数据库设计概述(了解) 5.2 需求分析(理解) 5.3 概念结构设计(理解) 第6章 数据库设计 一、复习课本内容 5.1 数据库设计概述(了解) 5.2 需求分析(理解) 5.3 概念结构设计(理解) 5.4 逻辑结构设计(理解) 5.5 物理结构设计(理解) 5.6 数据库的实施和维护(了解) 二、本章练习题 1、网上练习题 2、课本习题 三、本章考试题型 (1)选择题 (2)填空题 (3)简答题
第7章 SQL Server 2000 高级应用 一、复习课本内容 7.1 Transact-SQL程序设计(掌握) 7.2 存储过程(掌握) 二、本章练习题 1、网上练习题 2、课本例子、习题(与要求复习内容有关的) 三、本章考试题型 (1)选择题 (2)填空题 (3)简答题 (4)编程题:存储过程
7.2.2、7.2.6 创建和执行存储过程 1.使用CREATE PROCEDURE语句创建存储过程 7.2.2、7.2.6 创建和执行存储过程 1.使用CREATE PROCEDURE语句创建存储过程 CREATE PROCEDURE语句的语法格式为: CREATE PROC[EDURE ] procedure_name [ {@parameter data_type} [ = default][OUTPUT] ][,…n] AS sql_statement […n ]
7.2.2、7.2.6 创建和执行存储过程 2.执行存储过程使用EXECUTE语句 其完整语法格式如下: [ EXEC[UTE] ] 7.2.2、7.2.6 创建和执行存储过程 2.执行存储过程使用EXECUTE语句 其完整语法格式如下: [ EXEC[UTE] ] [ @return_status = ] { procedure_name | @procedure_name_var} [ [ @parameter = ] { value | @variable [ OUTPUT ] | [ DEFAULT ] } ][ ,…n ]
7.2.2、7.2.6 创建和执行存储过程 例1:编写一个存储过程能根据用户提供WPH(物品号)、CKS(出库数)进行出库处理,KCB(WPH CHAR(3) NOT NULL,KCS INT)是库存表,RCKMXB(WPH CHAR(3) NOT NULL,RKS INT,CKS INT,RQ DATETIME)是入出库明细表。 (1)创建存储过程 CREATE PROCEDURE USP_CKCL @WPH CHAR(3),@CKS INT AS
7.2.2、7.2.6 创建和执行存储过程 IF @CKS<=(SELECT KCS FROM KCB WHERE WPH=@WPH) 7.2.2、7.2.6 创建和执行存储过程 IF @CKS<=(SELECT KCS FROM KCB WHERE WPH=@WPH) BEGIN BEGIN TRANSACTION UPDATE KCB SET KCS=KCS-@CKS WHERE WPH=@WPH INSERT RCKMXB VALUES (@WPH,0,@CKS,GETDATE()) COMMIT END ELSE RAISERROR('库存数不足!',16,1) GO
7.2.2、7.2.6 创建和执行存储过程 (2)执行存储过程 EXEC USP_CKCL ‘0100’,120 或 7.2.2、7.2.6 创建和执行存储过程 (2)执行存储过程 EXEC USP_CKCL ‘0100’,120 或 EXEC USP_CKCL @WPH =‘0100’, @CKS =120 EXEC USP_CKCL @CKS =120 , @WPH =‘0100’ GO
7.2.2、7.2.6 创建和执行存储过程 例2:编写一个存储过程能根据用户提供WPH(物品号)、RKS(入库数)进行入库处理,KCB(WPH CHAR(3) NOT NULL,KCS INT)是库存表,RCKMXB(WPH CHAR(3) NOT NULL,RKS INT,CKS INT,RQ DATETIME)是入出库明细表。 (1)创建存储过程 CREATE PROCEDURE USP_RKCL @WPH CHAR(3),@RKS INT AS
7.2.2、7.2.6 创建和执行存储过程 BEGIN BEGIN TRANSACTION 7.2.2、7.2.6 创建和执行存储过程 BEGIN BEGIN TRANSACTION IF EXISTS(SELECT * FROM KCB WHERE WPH=@WPH) UPDATE KCB SET KCS=KCS+@RKS WHERE WPH=@WPH ELSE INSERT INTO KCB VALUES(@WPH,@RKS) INSERT INTO RCKMXB VALUES (@WPH,@RKS,0,GETDATE()) COMMIT END GO (2)执行存储过程 EXEC USP_RKCL ‘01003’,150