完整性的要求数据库中数据的正确性相容性约束的实现.ppt

上传人:小飞机 文档编号:6268969 上传时间:2023-10-12 格式:PPT 页数:33 大小:400.50KB
返回 下载 相关 举报
完整性的要求数据库中数据的正确性相容性约束的实现.ppt_第1页
第1页 / 共33页
完整性的要求数据库中数据的正确性相容性约束的实现.ppt_第2页
第2页 / 共33页
完整性的要求数据库中数据的正确性相容性约束的实现.ppt_第3页
第3页 / 共33页
完整性的要求数据库中数据的正确性相容性约束的实现.ppt_第4页
第4页 / 共33页
完整性的要求数据库中数据的正确性相容性约束的实现.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《完整性的要求数据库中数据的正确性相容性约束的实现.ppt》由会员分享,可在线阅读,更多相关《完整性的要求数据库中数据的正确性相容性约束的实现.ppt(33页珍藏版)》请在三一办公上搜索。

1、完整性的要求数据库中数据的正确性、相容性约束的实现DBMS支持对约束的声明for data使用触发器(触发程序)for action(event),SQL中的约束和触发程序,约束是基于数据变化的Trigger则是基于对表的操作(动作)的当指定的表上发生特定的操作,系统便激活Trigger程序大部分DBMS产品均支持Trigger触发器类型Insert/Update/DeleteBefore/After,举例:CREATE TRIGGER reminder ON titles FOR INSERT,UPDATE,DELETE AS EXEC master.xp_sendmail MaryM,Do

2、nt forget to print a report for the distributors.GO,触发器可以强制比用 CHECK 约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。激发一个外部动作,触发器的用途,存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通

3、过指定存储过程的名称并给出参数(如果该存储过程带有参数)来执行它。,存储过程(Stored Procedure),允许模块化程序设计,含有控制语句存储过程能够实现较快的执行速度存储过程能够减少网络流量存储过程可被作为一种安全机制来充分利用,存储过程-示例,Create Procedure update_dept(IN old_dept_num INT,IN new_dept_num INT,IN new_dept_name Char(20),IN new_dept_head_id INT)BEGIN ATOMIC Insert Into Department(dept_id,dept_name

4、,dept_head_id)Values(new_dept_num,new_dept_name,new_dept_head_id);,Update employeeSet dept_id=new_dept_numWhere dept_id=old_dept_num;Delete From departmentWhere dept_id=old_dept_num;ENDExecute update_dept 123,212,cs,98001,数据访问接口,交互式SQL嵌入的SQLCLI和ODBC、JDBCOLE DB,嵌入式SQL,宿主语言处理复杂运算,执行复杂过程丰富的库函数数据库访问的困难嵌

5、入的SQL方便的数据库访问事务处理能力上下文无关,无法处理复杂过程,嵌入式SQL,处理复杂过程宿主语言访问数据库嵌入的SQL语句,嵌入式SQL,宿主语言与嵌入的SQL语句不同的体系DB厂商提供库函数需对SQL语句进行预编译宿主语言的体系SQL语句宿主语言的函数调用(参数)统一编译目标程序嵌入式SQL语句由EXEC SQL引导、以;结尾EXEC SQL Delete From 学生;,匹配失衡问题,数据模型之间的匹配SQL关系数据模型宿主语言传统数据模型整数、实数、指针寻找两者之间的平衡点SQL数据以单个元组出现避免元组的集合(组合),SQL/宿主语言的接口,变量储存数据的单元SQL/宿主语言通

6、过变量传递信息共同的变量集合共享变量以传统的方式在宿主语言中使用在SQL语句中使用(以:作前缀),变量的声明,宿主变量仅用于宿主语言的语句中共享变量可在宿主语言、嵌入的SQL语句中使用共享变量声明段,变量的声明,int i=2,j=3;EXEC SQL BEGIN DECLARE SECTION;char 学号8,姓名20;char 所在系6;EXEC SQL END DECLARE SECTION;,使用共享变量,嵌入式SQL中,以共享变量替代具体的值在运行时获得变量的值,使用共享变量,Update、Insert中直接使用,替代值EXEC SQL Update 学生 Set 所在系=:所在系

7、Where 姓名=:姓名;在Select-From-Where中需注意单元组多元组:引入游标(Cursor),逐行处理,单元组查询语句,只返回一个元组的Select-From-Where语句Select-Into-From-WhereEXEC SQL Select 学号Into:学号From 学生Where 姓名=:姓名;注意返回值的状态判定,游标Cursor,Cursor是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果用户可以逐行读取(处理)Select结果集中的数据Cursor result SetCursor Position,动态SQL,语句可变条件可变数据库对象、查询条件均

8、可变,SQL中的事务,是构成单一逻辑工作单元的操作集合事务管理器事务恢复机制并发调度机制,事务的性质ACID,原子性:事务是原子的,要么都做,要么都不做一致性:保证数据库的一致性从一个一致状态另一个一致状态隔离性:事务相互隔离持久性一旦事务提交成功,更新则将永久有效,SQL中的事务事务的结束,提交COMMIT事务成功结束,永久保存修改将上次提交后的修改,全部保存回滚ROLLBACK事务异常终止,撤消修改,恢复原值将上次提交后的修改,全部撤消,SQL编程嵌入式,嵌入式SQLDBMS提供的高级语言方式Host Variable&Share Variable直接使用SQL语句需预编译各DBMS厂商均

9、提供相应的工具,SQL编程CLI(API),CLI(Call Level Interface)定义了一套可以从宿主语言调用的公共函数提供一套API,通过函数调用,实现对DBMS的操作DBLib、OCI、ODBC、JDBC逐步替代嵌入式SQL,Application,Oracle,OCI,Oracle 的CLI模型,ODBC(Open DataBase Connectivty:开放数据库互连),ODBC是Microsoft Windows Open Standards Architecture(WOSA,Windows开放服务体系)的重要组成部分,由Microsoft公司于1991年底发布,短短

10、几年已成为事实上的工业标准.它建立了一组规范,提供了一套分层(随着层的扩展,数据服务能力不断的增强)的标准API(支持SQL),它解决了嵌入式SQL接口的非规范核心,数据应用系统用它来访问任何提供了ODBC驱动程序(一组DLL)的数据库,结束了过去针对不同的数据库系统开发须掌握相应数据访问API的时代.事实上,可将ODBC体系看作统一的数据访问界面,而使这种统一的数据访问成为可能的就是各数据库产品厂商提供的相应的ODBC Provider(ODBC提供者即ODBC 驱动)。,结合ODBC API调用顺序描叙工作流程:初始化(分配环境-分配连接句柄-与服务器连接-分配语句句柄)-SQL处理(语句

11、处理和检索部分)-终止(释放语句句柄-与服务器断开-释放连接句柄-释放环境),OLE DB(Object Link and Embedding DataBase),OLE DB作为一种数据访问接口体系,体现了Microsoft的通用数据访问(UDA)策略的理念.UDA能够通过标准接口来访问各种类型的数据.同于ODBC体系它也提供了一套标准API,不过OLE DB API是完全基于COM的,其特点是采用了多层模型.在COM通信层的一侧是数据另一侧则是数据使用者.这种基于COM的通信可被概括为在抽象对象(如DataSource、Session、Command 和 Rowset)上执行的操作.因此,

12、当使用者连接到DataSource,打开 Session,发出Command,并返回数据Rowset时,便会出现这种情况.事实上,OLE DB是系统级的编程接口,它定义了一组COM接口,这组接口封装了各种数据系统的访问操作,这组接口为数据使用者和数据提供者建立了标准,OLE DB还提供了一组标准的服务组件,用于提供查询、缓存、数据更新、事务处理等操作,因此数据提供方只需实现一些简单的数据操作.在使用方就可以获得全部的数据控制能力.,OLE DB组成,数据提供者(Data Provider)提供数据存储的组件和数据,数据小到普通的文本文件、大到主机上的复杂数据库,或者电子邮件存储,都是数据提供者

13、的例子.有 的文档把这些软件组件的开发商也称为数据提供者.数据服务提供者(Data Service Provider)位于数据提供者之上、从过去的数据库管理系统中分离出来、独立运行的功能组件,例如查询处理器和游标引擎(Cursor Engine),这些组件使得数据提供者提供的数据以表状数据(Tabular Data)的形式向外表示(不管真实的物理数据是如何组织和存储的),并实现数据的查询和修改功能.SQL Server 7.0 的查询处理程序就是这种组件的典型例子.数据消费者(Data Consumer)任何需要访问数据的系统程序或应用程序,除了典型的数据库应用程序之外,还包括需要访问各种数据

14、源的开发工具或语言.,1、统计有学生选修的课程门数2、求选修了数据库课的学生的平均年龄3、求刘宇老师所授课程的每门课程的学生平均值4、统计每门课程的学生选修人数。要求输出课程号和人数,查询结果按人数降序排列,若人数相同,按课程号升序排列5、检索学号比汪同学大,而年龄比他小的学生姓名6、求年龄大于女同学平均年龄的男学生姓名和年龄7、求年龄大于所有女同学年龄的男学生姓名和年龄8、检索全部学生都选修的课程的课程号和课程名9、检索选修课程包含了刘宇老师所授课程的学生学号,作业,1、使用SQL创建关系学生、课程、选课2、把自己的信息添加到学生表中3、检索每一门课程成绩都大于或等于85分的学生的学号、姓名和性别,并把检索的值送到已经存在的表优秀学生(学号、姓名、性别)中4、在选课表中删除没有成绩的记录5、把汪姓同学的成绩都删除6、把数据库不及格,并年龄小于18岁的同学的数据库成绩乘以107%,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号