《数据管理系统》PPT课件.ppt_第1页
《数据管理系统》PPT课件.ppt_第2页
《数据管理系统》PPT课件.ppt_第3页
《数据管理系统》PPT课件.ppt_第4页
《数据管理系统》PPT课件.ppt_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

第9讲 数据库管理系统,第6章 数据库管理系统 6.1 数据库管理系统 6.2 关系数据库标准语言SQL 6.3 数据库管理系统实例(Microsoft SQL Server 2000) 6.4 数据库应用系统开发 6.5 数据库技术的发展趋势,6.1 数据库管理系统(DBMS),数据库管理系统是位于用户和操作系统之间的数据管理软件。本节包括如下内容: 6.1.1 数据库管理系统的功能 6.1.2 数据库管理系统的特点 6.1.3 数据库系统架构 6.1.4 数据库管理系统组件 6.1.5 常见的数据库管理系统,6.1.1 数据库管理系统的功能,科学地组织和存储数据、高效地获取和维护数据,用户使用的各种数据库命令以及应用程序的执行,最终都是DBMS来实现的。 DBMS 的主要功能包括: (1) 数据库定义 (2) 数据操纵 (3) 数据库控制 (4) 数据库维护,(1) 数据库的定义功能,为了存储大量数据,需要定义数据库和数据库中的各种架构,例如表、视图和索引等对象。对一个具体的数据库系统来说,通常允许用户使用一种被称为数据定义语言(data definition language,DDL)的专门语言来建立数据库,定义数据库的架构。并且还可以对这些数据库和数据库架构进行修改和删除。 例如,在Microsoft SQL Server数据库系统中,可以使用Transact-SQL语言中的下列DDL语句定义数据库和数据库中的各种对象。 CREATE DATABASE:创建数据库; CREATE TABLE:创建表; CREATE VIEW:创建视图;,(2)数据操纵功能,当数据存储到数据库中之后,用户就可以使用其中的数据。数据库系统提供了可以查询数据库中数据的查询(Query)语言,该语言经常被称为数据操纵语言(data manipulation language,DML)。使用DML语言可以在数据库中执行以下操作:检索指定的数据、插入需要的数据、更新已经变化的或错误的数据、删除无用的或不再需要的数据等。 在Microsoft SQL Server数据库系统中,可以实现数据查询功能的Transact-SQL语言包括如下的DML语句。 SELECT:检索数据; INSERT:插入数据; UPDATE:更新数据; DELETE:删除数据。,(3)数据库控制功能,对于存储大量数据的数据库应用系统来说,有大量使用数据和执行操作的用户。 控制多用户的访问包括两层含义: 第一层含义是不同的用户只能执行允许执行的操作 第二层含义是不同用户之间的操作互不影响。,(4)数据库维护功能,数据库维护功能:包括初始数据的装入、数据库的转储或后备功能、数据库恢复功能、数据库的重组织功能以及性能分析等功能。,6.1.2 数据库管理系统的特点,传统的文件管理阶段相比,现代的数据库管理系统阶段具有以下特点: 使用复杂的数据模型表示结构。 具有很高的数据独立性。 为用户提供了方便的接口。 提供了完整的数据控制功能。 提高了系统的灵活性。,6.1.3 数据库管理系统架构,数据库系统架构指数据库系统中数据的存储、管理和使用等规范形式,包括: 1.数据存储架构 2.数据视图管理架构 3.数据库应用架构,1. 数据存储架构,数据存储架构是指数据库中物理数据和逻辑数据的表示形式、物理数据和逻辑数据之间关系映射方式的说明。 在数据库系统中,可以使用两种描述形式表示客观世界的数据,即物理数据描述和逻辑数据描述。 物理数据和逻辑数据之间的转换通过数据库管理系统实现。,逻辑数据和物理数据术语的对应关系示意图,2.数据视图管理架构,数据在存储过程中的不同阶段具有不同的表现形式。这种数据的不同表现形式也可以称为数据视图(data view)。数据视图就是从某个角度看到的数据特性。 数据视图管理架构指在数据库系统中如何使用数据视图定义和管理各种逻辑数据和物理数据。 目前,数据视图管理架构使用三模式方法,即需要从三个不同的角度来定义数据: 外模式 内模式 概念模式,数据视图管理架构示意图,3. 数据库应用架构,在一个数据库应用系统中,包括数据存储层、业务处理层和界面表示层等三个层次。 数据存储层就是完成对数据的各种维护操作,一般是由数据库系统来完成该层上的工作。 业务处理层是数据库应用将要处理的与用户紧密相关的各种业务操作,这一层次的工作通常使用有关程序设计语言的编程来完成。 界面表示层是数据库应用系统提供给用户的可视化操作界面,是用户提出请求和接收回应的地方。 数据库应用架构是指数据库应用系统中数据存储层、业务处理层、界面表示层以及网络通信之间的布局和分布。,数据库应用架构分类,根据目前数据库系统的应用和发展,可以把这些应用归为五类,即: 单用户数据库应用架构 集中式数据库应用架构 客户机/服务器(Client/Server,C/S)应用架构 多层数据库应用架构 Internet数据库应用架构 其中客户机/服务器(C/S)应用架构是当前比较流行的架构。在这种架构中。客户机负责管理用户界面、接受用户数据、处理应用逻辑、生成数据库服务请求,然后将这些请求发送给服务器,服务器接受用户请求、处理请求、把访问数据仓库的结果数据和执行状态返回给客户机。 随着Interne技术的迅猛发展,Internet数据库应用架构也正在广泛应用,该框架的核心是Web服务器,它负责接受浏览器的超文本传输协议的数据请求,然后根据查询条件到数据服务器获得相关的数据,并将结果翻译成超文本标记语言文件传送给提出请求请求的浏览器。,6.1.4 数据库管理系统组件,本节以关系型DBMS为例研究DBMS的组成部分或组件。通过研究DBMS的组件,了解DBMS是如何处理用户的查询和修改等操作的。 DBMS的组成如下: 1.数据和元数据存储 2.存储管理器 3.查询处理器 4.事务管理器 5.输入模块-模式修改、查询和修改 DBMS的核心组件结构如下图所示:,关系型数据库管理系统组件结构示意图,1.数据和元数据,在上图的底部,是一个磁盘形状的图形,用于数据和元数据的存储。此处存储的内容不但包含数据,还包含元数据。 数据是数据库管理系统管理的对象。 元数据是有关数据结构的信息,即元数据是描述数据的数据。 在关系型数据库管理系统中,数据是用户添加到表中的数据,元数据是描述有关表名、列名和数据类型等数据库对象的数据。,2.查询处理器,查询处理器不仅负责处理查询,还负责处理修改和模式修改请求。 查询处理器包括编译器、解释器和预编译器。 编译器负责对查询或修改语句进行优化并转换成可以执行的低层命令。 解释器负责编译或解释模式修改,并将它记录在元数据中。 预编译器完成嵌入在宿主语言中的查询语句。,3. 存储管理器,存储管理器是根据获得的请求信息,从数据存储中获得信息或修改数据存储中的信息。 在一个简单的数据库系统中,存储管理器实际上是操作系统的文件系统。然而,为了提高数据库的使用效率,DBMS通常直接控制存储在磁盘上的数据。 存储管理器由两个组件组成:文件管理器和缓冲区管理器。 文件管理器负责跟踪磁盘上文件的位置或根据内存管理器中的请求获得数据块。 缓冲区管理器负责内存的管理。它通过文件管理器从磁盘上获取数据块,并在内存中选择用于存储这些数据块的内存位置。缓冲区管理器可以把磁盘上的数据块保存一段时间,但是如果内存不足,可以释放这些数据块,然后利用释放出来的空间保存新的数据块。,4.事务管理器,事务管理器负责系统的完整性工作。事务管理器必须确保同时运行的查询语句不互相影响,即使是系统由于各种原因突然失败,不会丢失任何数据。 事务管理器与查询处理器互相影响,因为事务管理器必须了解当前查询所操作的数据以避免操作之间的冲突,并且还可以拖延某些查询或操作的执行使得冲突不会发生。 事务管理器还与存储管理器互相影响,因为为了保护数据,模式修改常常涉及存储数据变化的日志的存储。 事务管理器具有ACID属性,A表示原子性(Atomicity),C表示一致性(Consistency),I表示独立性(Isolation),D表示持久性(Durability)。,5.输入模块-模式修改、查询和修改,输入是数据库管理系统的重要组成部分,是用户使用数据库的主要方式。 从上图中可以看到,对数据库管理系统的输入操作主要包括 查询 修改 模式修改,6.1.5 常见的数据库系统,Oracle公司的Oracle 微软公司的Microsoft SQL Server IBM公司的DB2和Informix MySQL AB公司的MySQL Sybase公司的Sybase ABE 微软公司的Access、Visual Foxpro,四大数据库的比较((SQL Server、Oracle、Sybase和DB2) (开放性、可伸缩性和并行性 、性能 、客户端支持及应用模式 、操作简便 性),开放性: SQL Server 只能在windows上运行,而windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据。 Oracle 能在所有主流平台上运行(包括 windows)。完全支持所有的工业标准。可以使客户选择最适合的解决方案。对开发商全力支持。 Sybase ASE 能在所有主流平台上运行(包括 windows)。 但由于早期Sybase与OS集成度不高,因此VERSION 11.9.2以下版本需要较多OS和 DB级补丁。在多平台的混合环境中,会有一定问题。 DB2 能在所有主流平台上运行(包括windows)。最适于海量数据。DB2在企业级的应用最为广泛,在全球的500家最大的企业中,大多采用DB2数据库服务器。,可伸缩性和并行性:,SQL server 并行实施和共存模型并不成熟。很难处理日益增多的用户数和数据卷。伸缩性有限。 Oracle 并行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。如果windowsNT不能满足需要,用户可以把数据库移到UNIX中。 Oracle的并行服务器对各种UNIX平台的集群机制都有着相当高的集成度。 Sybase ASE 虽然有DB SWITCH来支持其并行服务器,但由于DB SWITCH在技术层面还未成熟,且只支持版本12.5以上的ASE SERVER,而DB SWITCH技术需要一台服务器充当SWITCH。 DB2 具有很好的并行性。DB2把数据库管理扩充到了并行的、多节点的环境。数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日志。,性能 :,SQL Server 多用户时性能不佳 Oracle 性能最高, 保持开放平台下的TPC-D和TPC-C的世界记录。 Sybase ASE 性能接近于 SQL Server。但在UNIX平台下的并发性要优与 SQL Server。 DB2 性能较高适用于数据仓库和在线事物处理。 客户端支持及应用模式 : SQL Server C/S结构,只支持windows客户,可以用ADO,DAO,OLEDB,ODBC连接. Oracle 多层次网络计算,支持多种工业标准,可以用ODBC,JDBC,OCI等网络客户连接。 Sybase ASE C/S结构,可以用ODBC,Jconnect,Ct-library等网络客户连接。 DB2 跨平台,多层结构,支持ODBC,JDBC等客户,操作简便 性: SQL Server 操作简单,但只有图形界面。 Oracle 较复杂,同时提供GUI和命令行,在windowsNT和unix下操作相同 Sybase ASE 较复杂,同时提供GUI和命令行。但GUI较差,常常无法及时状态,建议使用命令行。 DB2 操作简单,同时提供GUI和命令行,在windowsNT和unix下操作相同 。,6.2.1 SQL 概述 6.2.2 SQL的数据定义 6.2.3 SQL的数据查询 6.2.4 SQL的数据更新 6.2.5 SQL的视图 6.2.6 SQL的数据控制 6.2.7 嵌入式SQL 6.2.8 查询优化,6.2关系数据库标准语言SQL,6.2.1 SQL 概述,SQL语言将数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能集于一体,可以独立完成数据库生命周期中的全部活动.所以,很多数据库管理系统(DBMS)都采用SQL语言作为关系数据的标准语言。 SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言, SQL语句能够嵌入到高级语言,比如:C、PL/1、FORTRAN。 嵌入式SQL与高级语言的分工方式:SQL语句负责操纵数据库,高级语言语句负责控制程序流程和处理数据。,6.2.1 SQL的特点(6个),1、综合统一 SQL语言将数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能集于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动.,2、高度非过程化 用SQL语言进行数据操作时,只要提出“做什么”,而无需指明“怎么做”。,3、面向集合的操作方式 SQL语言操作的对象和操作的结果都用关系表示。,4、一种语法,两种使用方式 SQL语言既是自含式语言,又是嵌入式语言。 5、语言简捷,易学易用 完成核心功能只用9个动词,SQL语言接近英语句子。 6、支持三级模式结构 见下图。,SQL支持三级模式结构,视图机制的主要优点:, 简化用户的操作。 多角度看待同一数据。 视图为数据库重构提供了一定程度的逻辑独立性。 对数据安全保护。,6.2.2 SQL的数据定义(1), 基本表的定义、删除与修改, 建立与删除索引, 基本表的定义、删除与修改,说明:方括为可选项,是所要定义的基本表的名字。 建表时可以定义与该表有关的完整性约束条件,其约束条件 被存入DBMS的数据字典中。当用户操作表中数据时由DBMS 自动检查该操作是否违背这些完整性约束条件。 如果完整性约束条件涉及到该表的多个属性列,则必须定义 在表级上,否则既可以定义在列级也可以定义在表级。 CREATE TABLE C (CNO NUMBER(6), CMN CHAR(10) ),命令格式为: CREATE TABLE ( 列级完整性约 束条件 , 列级完整性约束条件 , 表级完整性约束条件);,SQL Server支持的数据类型,TINYINT 整数类型,其值按1个字节存储。 SMALLINT 整数类型,其值按2个字节存储。 INTEGER或INT 整数类型,其值按4个字节存储。 REAL 实数类型,其值按4个字节存储。 FLOAT 实数类型,其值按8个字节存储。 CHARTER(n)或CHAR(n) 长度为n的字符类型,一个字符占 一个字节。 VARCHAR(n) 最大长度为n的变长字符串,所占空间与 实际字符数有关。 DATETIME 日期时间类型,缺损格式为MM-DD- YYYY HH:MM:AM/PM。 TIMESTAMP 更新或插入一行时,系统自动记录的日 期时间类型。,修改基本表,SQL语言用ALTER TABLE语句修改基本表,其一般格式为: ALTER TABLE ADD 完整性约束 DROP 完整性约束名 MODIFY ;,说明:是要修改的基本表表名; ADD子句用于增加新列和新的完整性约束条件; MODIFY子句用于修改原有的列定义,包括修; 改列名和数据类型。,删除基本表,用DROP TABLE语句可删除基本表。 其一般格式为: DROP TABLE ;,向表中添加元组,向表中添加耽搁元组使用INSERT命令,其语句格式为: INSERT INTO (, VALUES(,);,说明:该命令的功能是将一个新元组添加到指定的表中,且 新元组属性列1的值为常量1,属性列2的值为常量2,。 INTO子句中没有出现的属性列,其新元组在这些列上 将取空值。但若在CREATE定义表时使用了NOT NULL约束 的属性列不能取空值,否则会出错。 如果INTO子句中没有指明任何列名,则新插入的元组 必须在每个属性列上均有值。, 建立与删除索引,1 建立索引:使用CREATE INDEX命令,其语句格式为: CREATE UNIQUE CLUSTER INDEX ON ( , );,说明: (1)是要为其创建索引的基本表的名字。索引可以建立在该表的一列或多列上,各列名之间用逗号分隔。每个还可以用来指定索引值按照ASC(升序)或DESC(降序)的方式排序,缺省值为ASC。 (2)UNIQUE表明每一个索引值只对应唯一的一个元组,即索引值相同的元组只索引一次。 (3)CLUSTER表示要建立的索引是聚簇索引。所谓聚簇索引是指索引项的顺序与表中元组的物理顺序一致的索引组织。,删除索引,使用DROP INDEX语句,其一般格式为: DROP INDEX ;,6.2.3 SQL的数据查询, 简单的选择与投影查询 连接查询 嵌套查询 集合查询,查询语句,SELECT语句的一般格式: SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC;,说明:根据WHERE子句的条件,从FROM子句指定的基本 表或视图中找出满足条件的元组,再按目标列表达式规定 的属性列选出元组中对应的属性值形成结果表。 如果有GROUP子句,则将结果按的值进行分组。 如果GROUP子句带HAVING短语,则只输出满足指定条件的组。如果有ORDER子句,则结果表还要按的值升序或降序方式排序。, 简单的选择与投影查询, 无条件查询 条件查询 查询结果排序 集函数的使用 查询结果分组,无条件查询,在SELECT语句中不使用WHERE字句。 例如:SELECT * FEOM Students 条件查询 在SELECT语句中使用WHERE子句。常见的条件有: (1)比较条件。例如: where Sdept = 数学; where Sage18 AND Sage =22;,条件查询,(2)谓词条件。例如: where Sage BETWEEN 18 AND 22; where Sage18 NOT BETWEEN 18 AND 22; where Sdept IN (自动化, 数学,计算机); 还有用LIKE和NOT LIKE构成谓词条件的语法格式如下:NOTLIKEESCAPE 其含义是查找指定的属性列值与向匹配的元组。可以是一个完整的字符串,也可以含有通配符%和-,其意义如下: % (百分号): 代表任意长度(长度可以为0)的字符串。例如a%b表示以a开头,以b结尾的任意长度的字符串。如acb,abcdb,ab等都满足该匹配串。 _ (下横线): 代表任意单个字符。例如a_b 表示以a开头,以b结尾的长度为3的任意字符串。如acb,adb等都满足该匹配串。 此外,还有使用IS NULL和IS NOT NULL谓词进行有关空值判断的谓词条件,如: WHERE Grade IS NULL; 注意:以上的“IS”不能用等号“=”代替。,查询结果排序,使用ORDER BY 字句以及DESC或ASC。 例: ORDER BY Grade DESC,表示按成绩降序排列。 使用集函数 在SELECT语句中使用COUNT()、AVG等集函数。 例如:计算选修C01号课程的学生平均成绩,其命令为: SELECT AVG (Grade) FROM Reports WHERE Cno=01 查询结果分组 在SELECT语句中使用GROUP BY字句将查询结果表按照某一列或多列的值分组,使其列值相等的为一组。还可以用HAVING短语指定结果组满足的条件。, 连接查询 连接查询同时涉及两个或两个以上表的连接查询,这种查询是关系数据库中最主要的查询。主要包括:, 不同表之间的连接查询 自身连接查询 外连接查询,不同表之间的连接查询,一般是在WHERE字句中WHERE子句中将两(多)个表的属性列名,作为连接条件实现,其格式通常为: . . 或者 . BETWEEN . AND . 说明: 当连接运算符为“=”时,称为等值连接,其它为非等值连接。连接条件中列名对应属性的类型必须是可比的,但列名不必是相同的。 DBMS执行连接操作的过程是:首先在表1中找到第1个元组,然后对表2从头开始扫描逐一查找满足连接条件的元组,找到后就将表1中的第1个元组与该元组拼接起来,形成结果表中的一个元组。表2全部查找完后,再找表1中第2个元组,然后再对表2从头开始扫描,逐一查找满足连接条件的元组,找到后就将表1中的第2个元组与该元组拼接起来,形成结果表中的一个元组。重复上述操作,直到表1中的全部元组都处理完毕为止。,自身连接查询,自身连接:将同一个表与自己进行连接的查询,其基本方法是在SELECT语句的FROM子句中将同一个表取两个不同的别名。 比如: SELECT A.cno, A.cname, B.pre_Cno FROM Courses A, Courses B WHERE A.pre_Cno = B.cno; 这里Courses 表取两个别名分别为A,B,目的是查找一门课的间接先修课。,外连接,选定连接操作中涉及的某个表A为基准,即使另一个表B中没有与之匹配的记录,其结果表中也要求包括表A的所有元组。若表B中没有与之匹配的记录,结果表中涉及表B的属性列全部取空值。 外连接分为左连接和右连接两种类型,用加*号表示, 例如: WHERE S.Sno= SC.sno(*) 外连接就好像是为符号*所在一段的表(SC)增加一个“万能”的行,这个行全部由空值组成 ,它可以与另一边的表(S)中所有不满足条件的元组进行连接。, 嵌套查询,嵌套查询:将一个查询块(SELECT-FROM-WHERE)嵌套在另一个查询块的WHERE子句或HAVING短语条件中的查询。 2、常用的嵌套查询 带谓词IN的嵌套查询 带有比较运算符的嵌套查询 带谓词ANY或ALL的嵌套查询 带谓词EXISTS的嵌套查询, 集合查询,1、并操作查询 标准SQL提供了并操作运算命令UNION,将多个SELECT语句的结果进行传统的集合并操作。但这个操作要求参加UNION操作的各个结果表的列数必须相同且对应属性的数据类型也相同。 2、标准SQL中没有直接提供集合的交和差的操作,但可用其它条件查询来实现 例如: SELECT * FROM Students WHERE sdept 数学AND Sage =20;,6.2.4 SQL的数据更新, 插入数据 修改数据 删除数据, 插入数据,将一个子查询语句的结果集插入到表中的INSERT命令格式为: INSERT INTO (,) SELECT子查询语句. 修改数据 修改(UPDATE)操作语句的一般格式为: UPDATE SET =,= WHERE ; 说明:该命令修改指定表中满足WHERE子句条件的元组。其中SET子句是用的值取代相应的属性列的值。如果省略WHERE子句,则表示要修改表中的所有元组。 例:UPDATE S SET Sage=23 WHERE Sno=20100162, 删除数据,删除(DELETE)语句的一般格式为: DELETE FROM WHERE; 说明: DELETE语句的功能是从指定表中删除满足WHERE子句条件的所有元组。如果省略WHERE子句,表示删除表中全部元组,但表的模式定义仍在字典中,既DELETE语句使表成为空表。 增删改操作每次只能对一个表进行,且必须注意关系之间的参照完整性和操作顺序,否则就会操作失败甚至造成数据库的不一致问题。因此,执行删除操作时,必须将有关参照表的相关元组一起删除。一般使用以下的两种策略: 系统自动地删除参照表中相应的元组; 系统检查参照表中是否存在相应的元组,如果存在,则操作失败。 例如:DELETE FROM S WHERE SNO= 20100162,6.2.5 SQL的视图,视图是从一个或几个基本表(或视图)导出的一个虚拟表。 视图可以和基本表一样被查询、被删除。 本节分别介绍如下内容: 定义视图 查询视图 更新视图, 定义视图,SQL语言用CREATE VIEW命令建立视图,其一般格式为: CREATE VIEW (,) AS WITH CHECK OPTION; 说明: 可以是任意复杂的SELECT语句,但通常不允许含有ORDER BY子句和DISTINCT短语。 WITH CHECK OPTION表示用视图进行UPDATE,INSERT和DELETE操作时要保证更新、插入或删除的元组满足视图定义中的谓词条件。 组成视图的属性列名要么全部省略要么者全部指定。如果视图定义中省略了属性列名,则隐含该视图由子查询中SELECT子句的目标列组成。,例:建立数学系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept. CREATE VIEW C_Student AS SELECT Sno,Sname,Sage,Sdept FROM Students WHERE dept=数学 WITH CHECK OPTION;,删除视图 删除视图(DORP VIEW)的语句格式为: DORP VIEW ; 说明:视图删除后视图的定义将从数据字典中删除。但是由该视图导出的其它视图定义仍在数据字典中,不过该视图已失效。用户使用时就会出错,要用DROP VIEW语句显式将它们一一删除。 例:DORP VIEW C_Student, 查询视图,对于已经定义的视图,用户应用SELECT语句,就像查询基本表一样查询视图。 例:SELECT Sname,Sage FROM C _Student WHERE Sage20, 更新视图,1、更新视图的含义:指通过视图来插入(INSERT)、删除(DELETE)和修改(UPDATE)数据。 由于视图是不实际存储数据的虚拟表,因此对视图的更新,系统将自动转换为对基本表的更新。 2、更新视图的限制:由于有些视图的更新操作不能唯一的有意义地转换成对相应基本表的更新操作,因此,用视图完成数据的更新(增加、删除、修改)操作有以下限制规则: 如果一个视图是从多个表通过连接操作导出的,那么不允许对这个视图执行更新操作。 如果在导出视图的过程中,使用了分组和集函数,也不允许对这个视图执行更新操作。 如果一个视图是从单个基本表使用选择和投影操作导出,且视图的属性集包含了基本表的一个候选键,这种视图称为“行列子集视图”,允许对这个视图执行更新操作。,6.2.6 SQL的数据控制功能, 授权 收回权限, 授权,1、向用户授予操作权限的GRANT语句的一般格式为: GRANT , ON TO , WITH GRANT OPTION; 说明:该语句将指定操作对象的指定操作权限授予指定的用户。 例:把对修改学号(Sno)和查询Students表的权限授予 用户User1,User2 GRANT UPDATE(Sno),SELECT ON TABLE Studens TO User1,User2,不同类型的操作对象的操作权限如表所示。, 对数据库可以有建表(CREATETAB)的权限,该权限属于DBA,也可由DBA授予普通用户,普通用户拥有此权限后可以建立基本表,并成为该表的属主(Owner)。基本表的属主拥有对该表的一切操作权限。 接受权限的用户可以是一个或多个具体用户,也可以是PUBLIC,即全体用户。 如果指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限再授予其他的用户。否则该用户只能使用所获得的权限,而不能将其传播给其他用户。, 收回权限,DBA或其授权者可以用REVOKE语句收回向用户授予的权限,其语句格式为: REVOKE, ON FROM,; 例: 收回用户User1对Sno表的修改权限 REVOKE UPDATE(Sno) ON TABLE Students FROM User1,6.2.7 嵌入式SQL,虽然几乎所有的商品化RDBMS都支持标准的SQL,且还有许多功能扩充, 但SQL始终是一种数据语言,只有数据定义、数据存取和数据管理的功能,而绝大多数应用不限于做数据存取,通常有许多复杂的计算,要完成各种形式的输入,对查询结果数据又要求用各种方式显示或输出报表,用标准的SQL语言很难完成这些任务。所以,实用的RDBMS分别针对程序员用户和终端用户,提供了嵌入式和自含型数据SQL语言。 本节主要包括: 嵌入式SQL的介绍 嵌入式SQL语句与主语言之间的通信, 嵌入式SQL的介绍,1、嵌入式SQL:能够嵌入到高级语言中进行混合编程的SQL语言叫嵌入式SQL,而被SQL嵌入的高级语言叫宿主语言或主语言。 2、DBMS处理嵌入式SQL的方法: 预编译的方法; 修改和扩充主语言编译程序使之能处理SQL。 预编译的方法目前常用,DBMS的预处理程序对源程序进行扫描,识别出SQL语句,把它们转化成主语言调用语句,以使主程序编译程序能识别它,最后由主语言的编译程序将整个源程序编译成目标程序。 3、主语言如何区分嵌入式SQL:区分主语言语句与SQL语句的标志一般随主语言的不同而不同。通常有 在嵌入的SQL语句前加前缀EXEC SQL; 在嵌入的SQL语句后面加结束标志END-EXEC或者分号。 在嵌入的SQL语句分别加前缀和结束标志。 把SQL扩充为主语言的一部分,这时在使用上同交互式SQL就没有区别了。, 嵌入式SQL语句与主语言 之间的通信,1、嵌入式SQL与高级语言的分工方式:SQL语句负责操纵数据库,高级语言语句负责控制程序流程和处理数据。 2、嵌入式SQL与主语言之间必须互相通信才能协调工作。 3、数据库工作单元与源程序工作单元之间的通信主要包括: 向主语言传递SQL语句的执行状态信息,使主语言能够据此信息控制程序流程,主要通过定义SQL通信区(SQL Communication Area,简称SQLCA)实现; 主语言向SQL语句提供参数,主要通过主语言中声明的变量:主变量(Host Variable)来实现; 将SQL语句查询数据库的结果数据交给主语言进行进一步地处理,这主要通过主变量和游标(Cursor)实现。,4、SQL通信区-SQLCA SQL语句执行后,DBMS要反馈给应用程序若干信息,主要包括描述系统当前工作状态和运行环境的各种数据。这些信息将送到SQL通信区SQLCA中。应用程序从SQLCA中取出这些状态信息,据此决定接下来执行的语句。 SQLCA是一个数据结构,其定义方法随主语言的不同而不同。有的应用程序中用EXEC SQL INCLUDE SQLCA加以定义。SQLCA中有一个存放每次SQL语句执行情况(成功与否)的变量SQLCODE。应用程序每执行完一条SQL语句之后都应该测试一下SQLCODE的值,以了解该SQL语句执行情况并做相应处理。 如果SQLCODE等于预定义的常量SUCCESS(有的规定为0),则表示SQL语句成功,否则在SQLCODE中存放表示错误的代码。,5、主变量 输入主变量:由应用程序对其赋值,SQL语句引用; 输出主变量:由SQL语句对其赋值或设置状态信息,返回给应用程序引用。 一个主变量有可能既是输入主变量又是输出主变量。 一个主变量可以附带一个任选的指示变量(Indicator Variable)。指示变量是一个整型变量,用来“指示”对应主变量值的状况。在检索数据库后可以使用指示变量来判断返回给主变量的数据是否为空值或者发生了转换错误。 6、游标 游标是计算机系统为用户开设的一个数据缓冲区,存放SQL语句的结果数据集,每个游标区都有一个名字。用户可以通过游标逐一读取数据记录,然后赋值给主变量,再交给主语言程序作进一步地处理。,6.3数据库管理系统实例(Microsoft SQL Server 2000 ),Microsoft SQL Server 2000(SQL Server)是一个分布式的关系型数据库管理系统。本节主要包括: 6.3.1 SQL Server的主要特点 6.3.2 SQL Server的企业管理器 6.3.3 SQL Server的查询分析器 6.3.4 SQL Server的安全性管理 6.3.5 SQL Server的完整性策略 6.3.6 SQL Server的恢复技术 6.3.7 SQL Server的并发控制 6.3.8 数据库编程,6.3.1 SQL Server的主要特点,SQL Server系统具有动态的数据存储机制; SQL Server系统具有强大的安全措施 ; SQL Server系统具有很强的数据互操作性; SQL Server系统具有强大的网上功能,可以在Intemet上发布数据库中的数据; 版本多样化 ; SQL Server系统具有自动配置和动态配置的功能; SQL Server系统具有内置的数据复制功能 ; SQL Server系统与操作系统是紧密集成的 ; SQL Server与Windows DNA 2000集成 ; SQL Server支持XML ; SQL Server支持电子邮件功能 ;,6.3.2 SQL Server的企业管理器,SQL Server的企业管理器(Enterprise Manager)是一个集成化的数据库操作环境工具。几乎所有的操作都可以在该工具中完成,比如创建数据库、制作数据库后备副本、执行各种向导工具、服务器配置、数据复制等。,6.3.3 SQL Server的查询分析器,SQL Server的查询分析器(Query Analyzer)是一个功能强大且使用方便的执行TRANSACT -SQL语句的工具。要求学生学习本节后能够利用查询分析器完成创建表、索引以及各种查询操作。,6.3.4 SQL Server的安全性管理,1、SQL Server的安全认证模式 SQL Server允许设置以下两种安全认证模式之一。 Windows身份验证模式:也称集成登录认证模式,既将登录Windows的用户帐号和登录SQL Server的用户帐号统一。其好处是减少用户对口令的记忆负担,也使管理者能够通过Windows的用户和用户组来实现对SQL Server的用户管理。 混合模式:也称Windows身份验证和SQL Server 身份验证模式,既登录Windows的用户帐号和登录SQL Server的用户帐号无关。其有点是安全性更好。,2、SQL Server的安全体系结构 在一个企业的Windows网络上,若用户要想访问SQL Server 数据库中的某个对象,必须通过4层安全防线的认证: Windows操作系统的安全认证。 基于Windows的SQL Server安全认证。 SQL Server数据库的安全认证。 SQL Server 数据库对象的安全认证。,6.3.5 SQL Server的完整性策略,1、SQL Server中的实体完整性: SQL Server在CREATE TABLE语句中提供了PRIMARY KEY子句,供用户在建表时指定关系的主键列,即定义实体完整性。 2、SQL Server中的参照完整性: SQL Server的CREATE TABLE语句用FOREIGN KEY子句定义哪些列为外键列,用CONSTRAINT REFERENCES子句指明这些外键相应于哪个表的主键。 3、SQL Server中用户定义的完整性: SQL Server在CREATE TABLE语句中允许用户在建表时定义下列用户自定义的完整性约束: 列值非空(NOT NULL短语) 列值唯一(UNIQUE短语) 列缺省值(DEFAULT短语) 检查列值是否满足一个布尔表达式(CHECK短语),6.3.6 SQL Server的恢复技术,SQL Server系统把事务分成两种类型: 1、系统提供的事务: 在执行某些TRANSACT-SQL语句时,一条语句就是一个事务。 2、用户明确定义的事务: 用户使用BEGIN TRANSACTION语句明确定义事务的开始,用COMMIT或ROLLBACK明确定义事务的结束。如果不使用明确的结束语句来结束事务,那么系统可能把从事务开始到用户关闭连接之间的全部操作都作为一个事务来对待。,6.3.6 SQL Server的恢复技术, 恢复技术 SQL Server提供了登记日志文件和数据备份两种数据恢复技术。 1、基于日志文件的恢复技术。 2、基于数据库后备副本的恢复技术。 死锁与死锁的解除 1、SQL Server系统中的两种死锁现象 当两个事务分别锁定了两个单独的粒度对象,这时每个事务又要求在对方已经锁定的对象上获得一个锁,因此每一个事务都必须等待另外一个事务释放占有的锁。这种死锁是最典型的死锁形式。 在一个数据库中,有若干个长时间运行的事务执行并行的操作,当查询分析器处理一种非常复杂的连接查询时,由于不能控制处理的顺序,有可能发生死锁现象。,2、SQL Server系统解决死锁方法: 当发生死锁现象时,SQL Server系统可以自动检测到,然后通过自动取消其中一个事务来结束死锁。在发生死锁的两个事务中,根据事务处理时间的长短作为规则来确定它们的优先级。处理时间长的事务具有较高的优先级,处理时间较短的事务具有较低的优先级。在发生死锁冲突时,保留优先级高的事务,取消优先级低的事务。,6.3.7 SQL Server的并发控制,1、封锁的粒度 SQL Server将封锁的粒度分为5级:行、页、簇、表和数据库,它们对应的锁分别是行级锁、页级锁、簇级锁、表级锁和数据库级锁。 2、锁的类型 SQL Server中锁定资源的两种基本形式: 读操作要求的共享锁(Share Lock,简称S锁); 写操作要求的排它锁(eXclusive Clock,简称X锁)。 SQL Server系统的特殊类型锁:意向锁、修改锁和模式锁。, 意向锁 意向共享(IS)锁: 若一个事务对一个数据对

温馨提示

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

评论

0/150

提交评论