完整性的要求数据库中数据的正确性相容性约束的实现.ppt_第1页
完整性的要求数据库中数据的正确性相容性约束的实现.ppt_第2页
完整性的要求数据库中数据的正确性相容性约束的实现.ppt_第3页
完整性的要求数据库中数据的正确性相容性约束的实现.ppt_第4页
完整性的要求数据库中数据的正确性相容性约束的实现.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

完整性的要求 数据库中数据的正确性、相容性 约束的实现 DBMS支持对约束的声明 for data 使用触发器(触发程序) for action (event),SQL中的约束和触发程序,约束是基于数据变化的 Trigger则是基于对表的操作(动作)的 当指定的表上发生特定的操作,系统便激活Trigger程序 大部分DBMS产品均支持Trigger 触发器类型 Insert / Update / Delete Before / After,举例: CREATE TRIGGER reminder ON titles FOR INSERT, UPDATE, DELETE AS EXEC masterxp_sendmail MaryM, Dont forget to print a report for the distributors. GO,触发器可以强制比用 CHECK 约束定义的约束更为复杂的约束。 与 CHECK 约束不同,触发器可以引用其它表中的列。 触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。 触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。 一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。 激发一个外部动作,触发器的用途,存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名称并给出参数(如果该存储过程带有参数)来执行它。,存储过程(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, dept_head_id) Values (new_dept_num, new_dept_name, new_dept_head_id);,Update employee Set dept_id = new_dept_num Where dept_id=old_dept_num; Delete From department Where dept_id=old_dept_num; END Execute update_dept 123,212,cs,98001,数据访问接口,交互式SQL 嵌入的SQL CLI和ODBC、JDBC OLE DB,嵌入式SQL,宿主语言 处理复杂运算,执行复杂过程 丰富的库函数 数据库访问的困难 嵌入的SQL 方便的数据库访问 事务处理能力 上下文无关,无法处理复杂过程,嵌入式SQL,处理复杂过程 宿主语言 访问数据库 嵌入的SQL语句,嵌入式SQL,宿主语言与嵌入的SQL语句 不同的体系 DB厂商提供库函数 需对SQL语句进行预编译宿主语言的体系 SQL语句宿主语言的函数调用(参数) 统一编译目标程序 嵌入式SQL语句 由EXEC SQL引导、以;结尾 EXEC SQL Delete From 学生;,匹配失衡问题,数据模型之间的匹配 SQL关系数据模型 宿主语言传统数据模型 整数、实数、指针 寻找两者之间的平衡点 SQL数据以单个元组出现 避免元组的集合(组合),SQL/宿主语言的接口,变量 储存数据的单元 SQL/宿主语言通过变量传递信息 共同的变量集合共享变量 以传统的方式在宿主语言中使用 在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 所在系 = :所在系 Where 姓名 = :姓名; 在Select-From-Where中需注意 单元组 多元组:引入游标(Cursor),逐行处理,单元组查询语句,只返回一个元组的Select-From-Where语句 Select-Into-From-Where EXEC SQL Select 学号 Into :学号 From 学生 Where 姓名 = :姓名; 注意返回值的状态判定,游标Cursor,Cursor是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果 用户可以逐行读取(处理)Select结果集中的数据 Cursor result Set Cursor Position,动态SQL,语句可变 条件可变 数据库对象、查询条件均可变,SQL中的事务,是构成单一逻辑工作单元的操作集合 事务管理器 事务恢复机制 并发调度机制,事务的性质ACID,原子性: 事务是原子的,要么都做,要么都不做 一致性: 保证数据库的一致性 从一个一致状态另一个一致状态 隔离性: 事务相互隔离 持久性 一旦事务提交成功,更新则将永久有效,SQL中的事务事务的结束,提交 COMMIT 事务成功结束,永久保存修改 将上次提交后的修改,全部保存 回滚 ROLLBACK 事务异常终止,撤消修改,恢复原值 将上次提交后的修改,全部撤消,SQL编程嵌入式,嵌入式SQL DBMS提供的高级语言方式 Host Variable & Share Variable 直接使用SQL语句 需预编译 各DBMS厂商均提供相应的工具,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年底发布,短短几年已成为事实上的工业标准.它建立了一组规范,提供了一套分层(随着层的扩展,数据服务能力不断的增强)的标准API(支持SQL),它解决了嵌入式SQL接口的非规范核心,数据应用系统用它来访问任何提供了ODBC驱动程序(一组DLL)的数据库,结束了过去针对不同的数据库系统开发须掌握相应数据访问API的时代.事实上,可将ODBC体系看作统一的数据访问界面,而使这种统一的数据访问成为可能的就是各数据库产品厂商提供的相应的ODBC Provider(ODBC提供者即ODBC 驱动)。,结合ODBC API调用顺序描叙工作流程:初始化(分配环境-分配连接句柄-与服务器连接-分配语句句柄)-SQL处理(语句处理和检索部分)-终止(释放语句句柄-与服务器断开-释放连接句柄-释放环境),OLE DB (Object Link and Embedding DataBase),OLE DB作为一种数据访问接口体系,体现了Microsoft的通用数据访问(UDA)策略的理念.UDA能够通过标准接口来访问各种类型的数据.同于ODBC体系它也提供了一套标准API,不过OLE DB API是完全基于COM的,其特点是采用了多层模型.在COM通信层的一侧是数据另一侧则是数据使用者.这种基于COM的通信可被概括为在抽象对象(如DataSource、Session、Command 和 Rowset)上执行的操作.因此,当使用者连接到DataSource,打开 Session,发出Command,并返回数据Rowset时,便会出现这种情况. 事实上,OLE DB是系统级的编程接口,它定义了一组COM接口,这组接口封装了各种数据系统的访问操作,这组接口为数据使用者和数据提供者建立了标准,OLE DB还提供了一组标准的服务组件,用于提供查询、缓存、数据更新、事务处理等操作,因此数据提供方只需实现一些简单的数据操作.在使用方就可以获得全部的数据控制能力.,OLE DB组成,数据提供者(Data Provider) 提供数据存储的组件和数据,数据小到普通的文本文件、大到主机上的复杂数据库,或者电子邮件存储,都是数据提供者的例子.有 的文档把这些软件组件的开发商也称为数据提供者. 数据服务提供者(Data Service Provider) 位于数据提供者之上、从过去的数据库管理系统中分离出来、独立运行的功能组件,例如查询处理器和游标引擎(Cursor Engine),这些组件使得数据提供者提供的数据以表状数据(Tabular Data)的形式向外表示(不管真实的物理数据是如何组织和存储的),并实现数据的查询和修改功能.SQL Server 7.0 的查询处理程序就是这种组件的典型例子. 数据消费者(Data Consumer) 任何需要访问数据的系统程序或应用程序,除了典型的数据库应用程序之外,还包括需要访问各种数据源的开发工具或语言.,1、统计有学生选修的课程门数 2、求选修了数据库课的学生的平均年龄 3、求刘宇老师所授课程的每门课程的学生平均值 4、统计每门课程的学生选修人数。要求输出课程号和人数, 查询结果按人数降序排列,若人数相同,按课程号升序排列 5、检索学号比汪同学大,而年龄比他小的学生姓名 6、求年龄大于女同学平均年龄的男学生姓名和年龄 7、求年龄大于所有女同学年龄的男学生姓

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论