第三章 关系数库据标准语言文档资料

上传人:cn****1 文档编号:568309919 上传时间:2024-07-24 格式:PPT 页数:72 大小:971KB
返回 下载 相关 举报
第三章 关系数库据标准语言文档资料_第1页
第1页 / 共72页
第三章 关系数库据标准语言文档资料_第2页
第2页 / 共72页
第三章 关系数库据标准语言文档资料_第3页
第3页 / 共72页
第三章 关系数库据标准语言文档资料_第4页
第4页 / 共72页
第三章 关系数库据标准语言文档资料_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《第三章 关系数库据标准语言文档资料》由会员分享,可在线阅读,更多相关《第三章 关系数库据标准语言文档资料(72页珍藏版)》请在金锄头文库上搜索。

1、数据库系统西安电子科技大学Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - Scho

2、ol of Computer Science & Engineering , Xidian University , China 第三章第三章 关系数据库标准语言关系数据库标准语言SQLF3.1 SQL概述概述F3.2 数据定义数据定义F3.3 查询查询F3.4 数据更新数据更新F3.5 视图视图视图定义视图定义查询视图查询视图更新视图更新视图视图的作用视图的作用F3.6 数据控制数据控制F3.7 嵌入式嵌入式SQLEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2

3、004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.2数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 数据库系统的三级模式数据库系统的三级模式SnoSnameSsexSageS

4、deptCnoCnameCpnoCcreditSnoCnoGrade成绩单成绩单学号:学号:xxxxx姓名:姓名:xxx性别:性别:x离散数学离散数学75数据库系统数据库系统81F模式模式(Schema,也称逻逻辑模式)辑模式)数据库中全体数据的逻辑结构和特征(型)的描述F外外模模式式(External Schema,也称子模式子模式或用户模式用户模式)数据库用户使用的局部数据的逻辑结构和特征的描述F内内模模式式(Internal Schema,也称存储模式存储模式)数据物理结构和存储方式的描述Evaluation only.Created with Aspose.Slides for .NE

5、T 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.3数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , Chi

6、na 数据库系统的三级模式数据库系统的三级模式应用程序1应用程序3应用程序4应用程序5应用程序2外模式1外模式3外模式2模式内模式数据库Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.4数据库

7、系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 数据库系统的两级映象数据库系统的两级映象SnoSnameSsexSageSdeptCnoCnameCpnoCcreditSnoCnoGrade成绩单成绩单学号:学号:xxxxx姓名:姓名:xxx性别:性别:x离散数学离散数学75数据库系统数据库系统81模式内模式映象模式内模式映象外模式模式映象外模式模式映象Evaluation only.Created w

8、ith Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.5数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering

9、, Xidian University , China 数据库系统的两级映象数据库系统的两级映象F三级模式是对数据的三个抽象级别三级模式是对数据的三个抽象级别F二级映象在二级映象在DBMS内部实现这三个抽象层次的联系和转换内部实现这三个抽象层次的联系和转换应用程序1应用程序3应用程序4应用程序5应用程序2外模式1外模式3外模式2模式内模式数据库外模式模式映象模式内模式映象Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd

10、.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.6数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 数据的独立性数据的独立性(Data Independence)1.数据的数据的逻辑独立性逻辑独立性(Logical Da

11、ta Independence)应用程序应用程序( (外模式外模式) )与数据库的与数据库的逻辑结构逻辑结构( (模式模式) )是相互独立是相互独立的。即数据的逻辑结构发生改变,应用程序不用改变。的。即数据的逻辑结构发生改变,应用程序不用改变。外模式模式映象外模式模式映象的的用途用途保证数据的逻辑独立性保证数据的逻辑独立性外外模模式式模模式式映映象象定定义义了了外外模模式式与与模模式式之之间间的的对对应应关系关系当当模模式式改改变变时时,数数据据库库管管理理员员只只需需修修改改有有关关的的外外模模式模式映象,使外模式保持不变式模式映象,使外模式保持不变应应用用程程序序是是依依据据数数据据的的外

12、外模模式式编编写写的的,从从而而应应用用程程序序不不必必修修改改,保保证证了了数数据据与与程程序序的的逻逻辑辑独独立立性性,简简称数据的逻辑独立性。称数据的逻辑独立性。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Asp

13、ose Pty Ltd.7数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 数据的独立性数据的独立性(Data Independence)2.2.数据数据的的物理独立性物理独立性(Physical Data Independence) 应用程序应用程序( (外模式外模式) )与存储在磁盘上的数据库与存储在磁盘上的数据库( (文件文件) )中的中的存存储结构储结构( (内模式内模式) )是相互独立的。

14、即数据文件的组织方式改是相互独立的。即数据文件的组织方式改变不需要修改应用程序。变不需要修改应用程序。模式内模式映象模式内模式映象的用途的用途保证数据的物理独立性保证数据的物理独立性模模式式内内模模式式映映象象定定义义了了数数据据全全局局逻逻辑辑结结构构与与存存储储结构之间的对应关系结构之间的对应关系当当数数据据库库的的存存储储结结构构改改变变了了(例例如如选选用用了了另另一一种种存存储储结结构构),数数据据库库管管理理员员修修改改模模式式内内模模式式映映象象,使模式保持不变使模式保持不变应应用用程程序序是是依依据据数数据据的的外外模模式式编编写写的的,从从而而应应用用程程序序不不必必修修改改

15、,保保证证了了数数据据与与程程序序的的物物理理独独立立性性,简简称数据的物理独立性。称数据的物理独立性。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.8数据库系统数据库系统 Principl

16、e of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China SQLSQL与数据库模式与数据库模式FSQL与三级模式体系结构与三级模式体系结构SQL语句基本表1基本表2基本表3基本表4视图1视图2存储文件1存储文件2外模式外模式模式模式内模式内模式Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Asp

17、ose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.9数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 3.5 视图视图F什么是视图什么是视图(View)?视图是从一个或几个基本表(或视图)导出的表,它

18、与视图是从一个或几个基本表(或视图)导出的表,它与基本表不同,是一个虚表。基本表不同,是一个虚表。在数据字典中只存放视图的定义,不会出现数据冗余。在数据字典中只存放视图的定义,不会出现数据冗余。基表中的数据发生变化,从视图中查询出的数据也随之基表中的数据发生变化,从视图中查询出的数据也随之改变。改变。视图一经定义,就可以和基本表一样被查询和删除,并视图一经定义,就可以和基本表一样被查询和删除,并且可以在视图之上再定义新的视图。且可以在视图之上再定义新的视图。视图的更新视图的更新( (增加、删除、修改增加、删除、修改) )操作会受到一定的限制。操作会受到一定的限制。视图对应三级模式体系结构中的外

19、模式。视图对应三级模式体系结构中的外模式。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.10数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算

20、机学院 - School of Computer Science & Engineering , Xidian University , China 一、视图定义一、视图定义(1) 建立视图建立视图语句格式: CREATE VIEW ( ,)AS WITH CHECK OPTION ;注注: CREATE VIEW 子句中的列名可以省略,但在下列情况下明确指定视图的所有列名:(1) 某个目标列是集函数或列表达式某个目标列是集函数或列表达式(2) 多表连接时选出了几个同名列作为视图的字段多表连接时选出了几个同名列作为视图的字段(3) 需要在视图中为某个列启用新的更合适的名字需要在视图中为某个列启

21、用新的更合适的名字子查询中的属性列不允许定义别名,不允许含有ORDER BY子句和DISTINCT短语。WITH CHECK OPTION表示对视图进行更新操作的数据必须满足视图定义的谓词条件(子查询的条件表达式)。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0

22、.Copyright 2004-2011 Aspose Pty Ltd.11数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 一、视图定义一、视图定义(1) 建立视图建立视图DBMS执行执行CREATE VIEW语句时只是把视图的定义存语句时只是把视图的定义存入数据字典,并不执行其中的入数据字典,并不执行其中的SELECT语句。在对视图查询语句。在对视图查询时,按视图的定义从基本表中将数据查出。时,

23、按视图的定义从基本表中将数据查出。 例例1 建立信息系学生的视图。CREATE VIEW IS_Student AS SELECT Sno, Sname, SageFROM StudentWHERE Sdept = IS ;若一个视图是从若一个视图是从单个单个基本表导出的,并且只去掉了基本基本表导出的,并且只去掉了基本表的某些行和某些列,但表的某些行和某些列,但保留了码保留了码,这类视图称为,这类视图称为行列行列子集视图子集视图。上例所建立的视图即为上例所建立的视图即为行列子集视图行列子集视图。Evaluation only.Created with Aspose.Slides for .NE

24、T 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.12数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , Ch

25、ina 一、视图定义一、视图定义(1) 建立视图建立视图例例2 建立信息系学生的视图,并要求透过该视图进行的更新操作只涉及信息系学生。CREATE VIEW IS_Student AS SELECT Sno, Sname, SageFROM StudentWHERE Sdept = ISWITH CHECK OPTION ;针对此视图,当进行以下更新操作时,修改操作:DBMS自动加上自动加上 Sdept= IS 的条件;的条件;删除操作:DBMS自动加上自动加上 Sdept=IS 的条件;的条件;插入操作:DBMS自动检查自动检查Sdept属性值是否为属性值是否为IS,(1) 如果不是,则拒绝

26、该插入操作如果不是,则拒绝该插入操作(2) 如果没有提供如果没有提供Sdept属性值,则自动定义属性值,则自动定义Sdept为为ISEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.13数据库系

27、统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 一、视图定义一、视图定义(1) 建立视图建立视图例例5 定义一个反映学生出生年份的视图。 CREATE VIEW BT_S ( Sno, Sname, Sbirth ) AS SELECT Sno, Sname, 2000-Sage FROM Student ;当子查询中有由表达式构成的派生属性列当子查询中有由表达式构成的派生属性列( (也称为虚拟列也称为虚

28、拟列) )时,必须明确定义组成视图的各个属性列名。时,必须明确定义组成视图的各个属性列名。例例6 将学生的学号及他的平均成绩定义为一个视图。 CREATE VIEW S_G (Sno, Gavg) AS SELECT Sno, AVG (Grade) FROM SC GROUP BY Sno ; Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.S

29、lides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.14数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 一、视图定义一、视图定义(1) 建立视图建立视图例例7 将Student表中所有女生记录定义为一个视图。CREATE VIEW F_Student1 (stdnum, name, sex, ag

30、e, dept) AS SELECT * FROM Student WHERE Ssex = 女女 ; 存在问题:存在问题:修改基表修改基表Student的结构后的结构后(在非末尾增加一列在非末尾增加一列),Student表与表与F_Student1视图的映象关系会被破坏,导致该视视图的映象关系会被破坏,导致该视图不能正确工作。图不能正确工作。处理方法:处理方法:在子查询的在子查询的SELECT子句中明确指出各属性列的名称,可子句中明确指出各属性列的名称,可以避免对基本表的属性列增加而破坏与视图间的映象关系,以避免对基本表的属性列增加而破坏与视图间的映象关系,但不能解决修改列名的问题,因此上对

31、基本表修改后采用重但不能解决修改列名的问题,因此上对基本表修改后采用重建视图的方法。建视图的方法。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.15数据库系统数据库系统 Principle

32、of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 一、视图定义一、视图定义(2) 删除视图删除视图语句格式:语句格式:DROP VIEW ;注:注:该语句从数据字典中删除指定的视图定义该语句从数据字典中删除指定的视图定义由该视图导出的其他视图定义仍在数据字典中,但已不能由该视图导出的其他视图定义仍在数据字典中,但已不能使用,必须显式删除使用,必须显式删除删除基表时,由该基表导出的所有视图定义都必须显式删删除基表时,由该基表导出的所有视图定义

33、都必须显式删除除 例例8 删除视图IS_S1。DROP VIEW IS_S1 ;如如果果有有在在视视图图IS_S1之之上上建建立立的的视视图图IS_S2,在在IS_S1被被删删除除后后IS_S2已已经经无无法法使使用用,这这时时应应该该使使用用下下列列语语句句删删除除IS_S1: DROP VIEW IS_S2 ;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with

34、 Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.16数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 二、查询视图二、查询视图F从用户角度:查询视图与查询基本表相同从用户角度:查询视图与查询基本表相同FDBMS实现实现视图查询的方法视图查询的方法实体化视图(实体化视图(View

35、 Materialization)1)有效性检查:检查所查询的视图是否存在有效性检查:检查所查询的视图是否存在2)执行视图定义,将视图临时实体化,生成临时表执行视图定义,将视图临时实体化,生成临时表3)查询视图转换为查询临时表查询视图转换为查询临时表4)查询完毕删除被实体化的视图查询完毕删除被实体化的视图(临时表临时表)视图消解法(视图消解法(View Resolution)1)进行有效性检查,检查查询的表、视图等是否存在。如进行有效性检查,检查查询的表、视图等是否存在。如果存在,则从数据字典中取出视图的定义果存在,则从数据字典中取出视图的定义2)把视图定义中的子查询与用户的查询结合起来,转换

36、成把视图定义中的子查询与用户的查询结合起来,转换成等价的对基本表的查询等价的对基本表的查询3)执行执行修正修正后的查询后的查询Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.17数据库系统数据

37、库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 二、查询视图二、查询视图例例1 在信息系学生的视图中找出年龄小于20岁的学生。信息系学生的视图定义信息系学生的视图定义( (一节例一节例1):1):CREATE VIEW IS_Student AS SELECT Sno, Sname, Sage FROM Student WHERE Sdept = IS ;查询语句:查询语句: SELECT Sno, SageF

38、ROM IS_StudentWHERE Sage 20 ;视图实体化法视图实体化法:通过视图定义建立视图结构下的临时表并对通过视图定义建立视图结构下的临时表并对临时表进行查询,在查询结束后删除临时表临时表进行查询,在查询结束后删除临时表。视图消解法视图消解法:根据视图定义将对视图的查询转换为对基本表根据视图定义将对视图的查询转换为对基本表的查询,转换后的查询语句如下:的查询,转换后的查询语句如下: SELECT Sno, Sage FROM StudentWHERE Sdept = IS AND Sage = 90 ;使用视图消解转换的查询:使用视图消解转换的查询:SELECT Sno, AV

39、G(Grade)FROM SCWHERE AVG(Grade)=90GROUP BY Sno ;正确的查询:正确的查询:SELECT Sno, AVG(Grade)FROM SCGROUP BY Sno HAVING AVG(Grade)=90 ;注:注:由于对定义中含有集函数的视图不能完全正确地转换为对基由于对定义中含有集函数的视图不能完全正确地转换为对基本表的查询,这类查询应当直接对基本表进行。本表的查询,这类查询应当直接对基本表进行。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0

40、.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.20数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 三、更新视图三、更新视图(1) 用户角度:更新视

41、图与更新基本表相同用户角度:更新视图与更新基本表相同(2) DBMS实现视图更新的方法实现视图更新的方法视图实体化法(视图实体化法(View Materialization)视图消解法(视图消解法(View Resolution)(3) 关于关于WITH CHECK OPTION指定指定WITH CHECK OPTION子句后,子句后,DBMS在在更新视图时会进行检查,防止用户通过视图对更新视图时会进行检查,防止用户通过视图对不属于不属于视图范围内视图范围内的基本表数据进行更新。的基本表数据进行更新。Evaluation only.Created with Aspose.Slides for

42、.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.21数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University ,

43、 China 三、更新视图三、更新视图例例1 将信息系学生视图IS_Student中学号95002的学生姓名改为“刘辰”。信息系学生视图定义信息系学生视图定义( (一节例一节例2):2):CREATE VIEW IS_StudentAS SELECT Sno, Sname, Sage FROM Student WHERE Sdept = IS WITH CHECK OPTION ;对视图的更新语句:对视图的更新语句: UPDATE IS_StudentSET Sname = 刘辰刘辰WHERE Sno = 95002 ;使用视图消解转换的更新:使用视图消解转换的更新:UPDATE Studen

44、tSET Sname = 刘辰刘辰WHERE Sno= 95002 AND Sdept = IS;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.22数据库系统数据库系统 Principle

45、of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 三、更新视图三、更新视图例例2 向信息系学生视图IS_Student中插入一个新的学生记录:( 95029,赵新,20岁) 。对视图的更新:对视图的更新: INSERTINTO IS_StudentVALUES (95029, 赵新赵新, 20) ;使用视图消解转换的更新:使用视图消解转换的更新:INSERTINTO Student (Sno, Sname, Sage, Sdept)VALU

46、ES (95029, 赵新赵新, 20, IS ) ;例例3 删除视图IS_Student中学号为95029的记录。对视图的更新:对视图的更新: DELETEFROM IS_StudentWHERE Sno = 95029 ;使用视图消解转换的更新:使用视图消解转换的更新:DELETEFROM StudentWHERE Sno=95029 AND Sdept=IS ;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.E

47、valuation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.23数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 三、更新视图三、更新视图一些视图是不可更新的,因为对这些视图的更新不能一些视图是不可更新的,因为对这些视图的更新不能唯唯一

48、地有意义地一地有意义地转换成对相应基本表的更新转换成对相应基本表的更新( (对两类方法均如对两类方法均如此此) )。例例6 学号及平均成绩的视图定义: CREATE VIEW S_G (Sno, Gavg) AS SELECT Sno, AVG (Grade) FROM SC GROUP BY Sno ; 对于如下更新语句:UPDATE S_GSET Gavg = 90WHERE Sno = 95001 ;注:注:无论实体化法还是消解法都无法将其转换成对基本表无论实体化法还是消解法都无法将其转换成对基本表SCSC的更新。的更新。Evaluation only.Created with Aspo

49、se.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.24数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidia

50、n University , China 三、更新视图三、更新视图F实际系统对视图更新的限制实际系统对视图更新的限制可更新视图可更新视图从理论上讲,对其更新能够唯一转换为对应基本从理论上讲,对其更新能够唯一转换为对应基本表更新的视图是可更新的。表更新的视图是可更新的。允许更新的视图允许更新的视图实际使用的实际使用的RDBMS系统对允许更新的视图有不同的系统对允许更新的视图有不同的规定,使用中以参考手册为依据;规定,使用中以参考手册为依据;对于对于行列子集视图行列子集视图,各,各RDBMS都允许更新。都允许更新。Evaluation only.Created with Aspose.Slides

51、 for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.25数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian Univers

52、ity , China 四、视图的作用四、视图的作用(1) 视图能够视图能够简化简化用户的操作用户的操作当视图中数据不是直接来自基本表时,定义视图能当视图中数据不是直接来自基本表时,定义视图能够简化用户的操作。如基于多张表连接形成的视图,基够简化用户的操作。如基于多张表连接形成的视图,基于复杂嵌套查询的视图和含导出属性的视图。于复杂嵌套查询的视图和含导出属性的视图。(2) 视图使用户能以视图使用户能以多种角度多种角度看待同一数据看待同一数据不同的用户和应用程序会以不同的角度看待同一数不同的用户和应用程序会以不同的角度看待同一数据。如学生信息中的据。如学生信息中的生源所在地生源所在地,在招生管理

53、中表达该,在招生管理中表达该学生是从哪个地方录取的,而在户籍管理中则表达该学学生是从哪个地方录取的,而在户籍管理中则表达该学生的生的户口是从哪个地方迁入户口是从哪个地方迁入的。这两种应用所使用的是的。这两种应用所使用的是数据库中存储的数据库中存储的同一数据同一数据。因此,视图可以避免数据存储的冗余性,适应数据因此,视图可以避免数据存储的冗余性,适应数据库共享的需要。库共享的需要。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty

54、 Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.26数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 四、视图的作用四、视图的作用(3) 视图对重构数据库提供了一定程度的视图对重构数据库提供了一定程度的逻辑独立性

55、逻辑独立性例:运行中的学籍管理数据库,其学生关系如下:Student ( Sno, Sname, Ssex, Sage, Sdept ) 因性能需要重构如下:SX ( Sno, Sname, Sage )SY( Sno, Ssex, Sdept ) 这时原关系这时原关系Student已经不存在,应用程序也就无法使用。已经不存在,应用程序也就无法使用。解决方法:可以通过建立以下视图实现可以通过建立以下视图实现 CREATE VIEW Student ( Sno, Sname, Ssex, Sage, Sdept ) AS SELECT SX.Sno, SX.Sname, SY.Ssex, SX.

56、Sage, SY.Sdept FROM SX, SY WHERE SX.Sno = SY.Sno ; 即修改即修改外模式模式映象外模式模式映象! !Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Lt

57、d.27数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 四、视图的作用四、视图的作用(4) 视图能够对机密数据提供视图能够对机密数据提供安全保护安全保护建立面向不同用户的视图,并将对该视图的操作权建立面向不同用户的视图,并将对该视图的操作权限赋予不同的用户,则这些用户只能对视图所见的数据限赋予不同的用户,则这些用户只能对视图所见的数据进行权限内的操作,而视图之外的数据对这些用户是不进行权限内的操作

58、,而视图之外的数据对这些用户是不可见的,从而也就对视图之外的数据进行了保护。可见的,从而也就对视图之外的数据进行了保护。同样,针对不同的应用程序建立视图,使用该应用同样,针对不同的应用程序建立视图,使用该应用程序也只能操作视图内的数据,对视图外的数据也进行程序也只能操作视图内的数据,对视图外的数据也进行了保护。了保护。例如例如Student表涉及三个系的学生数据,可以在其上表涉及三个系的学生数据,可以在其上定义三个视图,每个视图只包含一个系的学生数据,并定义三个视图,每个视图只包含一个系的学生数据,并只允许每个系的系主任查询自己系的学生视图。只允许每个系的系主任查询自己系的学生视图。Evalu

59、ation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.28数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer S

60、cience & Engineering , Xidian University , China 第三章第三章 关系数据库标准语言关系数据库标准语言SQLF3.1 SQL概述概述F3.2 数据定义数据定义F3.3 查询查询F3.4 数据更新数据更新F3.5 视图视图F3.6 数据控制数据控制数据控制概述数据控制概述授权授权收回权限收回权限F3.7 嵌入式嵌入式SQLEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Ev

61、aluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.29数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 数据控制概述数据控制概述数据控制是指数据控制是指DBMS用来保证数据库正确稳定运行所提用来保证数据库正确稳定运行所提供的对数

62、据的管理机制。供的对数据的管理机制。SQL中的数据控制包括事务管理和中的数据控制包括事务管理和数据保护,即数据库的恢复、并发控制、数据库的安全性和数据保护,即数据库的恢复、并发控制、数据库的安全性和完整性控制。完整性控制。数据库的完整性控制是通过数据库定义过程来指定,在数据库的完整性控制是通过数据库定义过程来指定,在数据更新过程中由系统来进行检查并予以保证;事务处理、数据更新过程中由系统来进行检查并予以保证;事务处理、数据库的恢复、并发控制会在以后的章节专门讲解;本节只数据库的恢复、并发控制会在以后的章节专门讲解;本节只讲述讲述SQL中的安全性控制。中的安全性控制。数据库的完整性是用来防止合法

63、的用户对数据库的无意数据库的完整性是用来防止合法的用户对数据库的无意破坏,即防止允许更新的用户不小心对数据的错误更新而破破坏,即防止允许更新的用户不小心对数据的错误更新而破坏数据库;数据库的安全性是用来防止非法用户有意窃取或坏数据库;数据库的安全性是用来防止非法用户有意窃取或恶意破坏数据库中的数据。恶意破坏数据库中的数据。数据库的安全性控制通过授权机制来实现,即通过赋予数据库的安全性控制通过授权机制来实现,即通过赋予用户对数据库的使用权限来保证数据的安全。用户对数据库的使用权限来保证数据的安全。Evaluation only.Created with Aspose.Slides for .NE

64、T 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.30数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , Ch

65、ina 授权授权F授权授权 将数据库中的某些对象的某些操作权限赋予某些用户将数据库中的某些对象的某些操作权限赋予某些用户授权使用授权使用GRANTGRANT语句:语句:GRANT ,. ON TO ,.WITH GRANT OPTION ;DBA拥有数据库操作所有权限,他可以将权限赋予其他用户。拥有数据库操作所有权限,他可以将权限赋予其他用户。建建立立数数据据库库对对象象的的用用户户称称为为该该对对象象的的属属主主(OWNER),他他拥拥有有该该对象的所有操作权限。对象的所有操作权限。接受权限的用户可以是一个或多个具体用户,也可以是全体接受权限的用户可以是一个或多个具体用户,也可以是全体用户用

66、户(PUBLIC)。指定了指定了WITH GRANT OPTION子句子句,获得某种权限的用户还获得某种权限的用户还可以把这种权限可以把这种权限再授予再授予别的用户;没有指定别的用户;没有指定WITH GRANT OPTION子句,获得某种权限的用户只能使用该权限,子句,获得某种权限的用户只能使用该权限,不能传不能传播播该权限。该权限。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.C

67、reated with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.31数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 授权授权F权限一览表:权限一览表:对象对象对象类型对象类型操作权限操作权限属性列TABLESELECT, INSERT, UPDATE, DELETE,

68、ALL PRIVILEGES视图TABLESELECT, INSERT, UPDATE, DELETE, ALL PRIVILEGES基本表TABLESELECT, UPDATE, DELETE, ALTER, INDEX, ALL PRIVILEGES数据库DATABASECREATETAB例例1 把查询Student表权限授给用户U1。 GRANT SELECT ON TABLE Student TO U1;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 200

69、4-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.32数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 授权授权例例2 把对Student表和Course表的全部权限授予用户U2和

70、U3。GRANT ALL PRIVILIGES ON TABLE Student, Course TO U2, U3 ;例例3 把对表SC的查询权限授予所有用户。GRANT SELECT ON TABLE SC TO PUBLIC ;例例4 把查询Student表和修改学生学号的权限授给用户U4。GRANT UPDATE ( Sno ), SELECT ON TABLE Student TO U4 ;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011

71、 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.33数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 授权授权例例5 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户

72、。GRANT INSERT ON TABLE SC TO U5WITH GRANT OPTION ; 执执行行例例5后后,U5不不仅仅拥拥有有了了对对表表SC的的INSERT权权限限,还可以传播此权限:还可以传播此权限:GRANT INSERT ON TABLE SC TO U6 ;WITH GRANT OPTION ; 同样,同样,U6U6还可以将此权限授予还可以将此权限授予U7U7:GRANT INSERT ON TABLE SC TO U7 ; 但但U7U7不能再传播此权限。不能再传播此权限。 U5 U6 U7Evaluation only.Created with Aspose.Sli

73、des for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.34数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian Univ

74、ersity , China 授权授权例例6 DBA把在数据库S_C中建立表的权限授予用户U8。GRANT CREATETABON DATABASE S_C TO U8 ;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 A

75、spose Pty Ltd.35数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 收回权限收回权限F收回权限收回权限 从指定从指定用户用户那里收回对指定那里收回对指定对象对象的指定的指定权限。权限。使用使用REVOKEREVOKE语句:语句: REVOKE ,. ON FROM ,. ;例例7 把用户U4修改学生学号的权限收回。REVOKE UPDATE(Sno)ON TABLE Student F

76、ROM U4 ;例例8 收回所有用户对表SC的查询权限。REVOKE SELECT ON TABLE SC FROM PUBLIC ;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.36数据库

77、系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 收回权限收回权限例例9 把用户U5对SC表的INSERT权限收回。REVOKE INSERT ON TABLE SC FROM U5 ;系统将收回直接或间接从系统将收回直接或间接从U5处获得的对处获得的对SC表的表的INSERT权限权限: U5 U6 U7收回收回U5、U6、U7获得的对获得的对SC表的表的INSERT权限权限: U5 U6 U7若存在多重

78、授与(从不同用户处得到相同权限),则仍具有该权限,即只收回自己所级联(间接)授与出的权限。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.37数据库系统数据库系统 Principle of D

79、ataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 关于权限管理的说明关于权限管理的说明DBA拥有对数据库中所有对象的所有权限,并可以根据拥有对数据库中所有对象的所有权限,并可以根据应用的需要将不同的权限授予不同的用户。应用的需要将不同的权限授予不同的用户。用用户户对对自自己己建建立立的的基基本本表表和和视视图图拥拥有有全全部部的的操操作作权权限限,并且可以用并且可以用GRANT语句把其中某些权限授予其他用户。语句把其中某些权限授予其他用户。被被授授

80、权权的的用用户户如如果果有有“继继续续授授权权”的的许许可可,还还可可以以把把获获得的权限再授予其他用户。得的权限再授予其他用户。所有授予出去的权力在必要时又都可以用所有授予出去的权力在必要时又都可以用REVOKE语句语句收回。收回。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profil

81、e 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.38数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 作业作业(10)FP127题题9 题题11Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pt

82、y Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.39数据库系统Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Cli

83、ent Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 第三章第三章 关系数据库标准语言关系数据库标准语言SQLF3.1 SQL概述概述F3.2 数据定义数据定义F3.3 查询查询F3.4 数据更新数据更新F3.5 视图视图F3.6 数据控制数据控制F3.7 嵌入式嵌入式SQL嵌入式嵌入式SQL概

84、述概述不用游标的不用游标的SQL语句语句使用游标的使用游标的SQL语句语句Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.41数据库系统数据库系统 Principle of DataBase

85、System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 3.7 嵌入式嵌入式SQLF应用程序访问数据库方法应用程序访问数据库方法:嵌入式嵌入式SQL将将SQL语句直接嵌入到程序的源代码中,与其他程序设计语句直接嵌入到程序的源代码中,与其他程序设计语言语句混合语言语句混合用的用的SQL预编译程序将嵌入的预编译程序将嵌入的SQL语句转换为能被程序设语句转换为能被程序设计语言(如计语言(如C语言)的编译器识别的函数调用语言)的编译器识别的函数调用专门的数据库应用系统开发平台如

86、专门的数据库应用系统开发平台如PowerBuilder, Delphi中中可以直接使用嵌入式可以直接使用嵌入式SQL应用程序接口(应用程序接口(API)通过通过API的调用,可以将的调用,可以将SQL语句传递到语句传递到DBMS,并用,并用API调用返回查询结果调用返回查询结果不需要专用的预编译程序不需要专用的预编译程序常用接口:常用接口:ODBC,JDBC,ADO等等API访问数据库将在下学期数据库编程讲中讲授访问数据库将在下学期数据库编程讲中讲授Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.

87、2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.42数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 嵌入式嵌入式SQLSQL概述概述F什么

88、是嵌入式什么是嵌入式SQL ( Embedded SQL )?SQL语句嵌入到其他高级语言中,这时高级语言被语句嵌入到其他高级语言中,这时高级语言被称为称为(宿宿)主语言。主语言。F为什么要引入嵌入式为什么要引入嵌入式SQL?(1) SQL语言是非过程化语言(2) 事务处理应用需要过程化语言这两种方式存在差别,在程序设计的环境下,这两种方式存在差别,在程序设计的环境下,SQL语句语句要做某些必要的扩充。要做某些必要的扩充。F如何区分主语言与如何区分主语言与SQL语句?语句?前缀前缀:EXEC SQL结束标志结束标志:随主语言的不同而不同随主语言的不同而不同如:C语言中使用语言中使用SQL:EX

89、EC SQL ;例:EXEC SQL DROP TABLE Student ;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.43数据库系统数据库系统 Principle of DataBas

90、e System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 嵌入式嵌入式SQLSQL概述概述F如何实现如何实现SQL语句的执行?语句的执行?扩充主语言使之能处理SQL预编译,将SQL语句转为主语言可执行的目标代码预编译的过程:预编译的过程: 1. 由由DBMS的预处理程序对源程序进行扫描,的预处理程序对源程序进行扫描,识别出识别出SQL语句;语句; 2. 把它们把它们转换转换成主语言调用语句,以使主语言编译程序能成主语言调用语句,以使主语言编译程序能识别它;识别它; 3

91、. 最后由主语言的编译程序将整个源程序最后由主语言的编译程序将整个源程序编译编译成目标码。成目标码。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.44数据库系统数据库系统 Principle

92、 of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 嵌入式嵌入式SQLSQL概述概述F嵌入嵌入SQL语句的分类:语句的分类:嵌入SQL语句声明语句可执行语句数据定义数据操纵数据控制在高级语言中,允许出现声明语句的地方,都可以写声明性允许出现声明语句的地方,都可以写声明性SQL语句;语句;允许出现可执行的高级语言语句的地方,都可以写可执允许出现可执行的高级语言语句的地方,都可以写可执行行SQL语句语句。将SQL嵌入到高级语言中混合编程,程序中

93、会含有两种不同计算模型的语句:SQL语句是非过程化的面向集合的语句,负责操纵数据库;高级语言语句是过程化的面向记录的语句, 负责控制程序流程。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.4

94、5数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 嵌入式嵌入式SQLSQL概述概述FSQL与主语言如何交互?与主语言如何交互?1. 主变量主变量1) 主语言向主语言向SQL语句提供参数语句提供参数2) 将将SQL语句查询数据库的结果交主语言进一步处理语句查询数据库的结果交主语言进一步处理2. SQL通信区通信区 ( SQLCA, SQL Communication Area )1) 向主语言传递向

95、主语言传递SQL语句的执行状态信息语句的执行状态信息2) 主语言能够据此控制程序流程主语言能够据此控制程序流程3. 游标游标解决集合性操作语言与过程性操作语言的不匹配解决集合性操作语言与过程性操作语言的不匹配Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Cop

96、yright 2004-2011 Aspose Pty Ltd.46数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 嵌入式嵌入式SQLSQL概述概述F含嵌入式含嵌入式SQL的执行流程的执行流程(不使用游标不使用游标):不含游标的不含游标的SQL语句语句结束结束主语言对主变量赋值主语言对主变量赋值SQLCA 声明、主变量声明声明、主变量声明主语言头文件、变量声明主语言头文件、变量声明开始开始Eval

97、uation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.47数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer

98、Science & Engineering , Xidian University , China 嵌入式嵌入式SQLSQL概述概述F含嵌入式含嵌入式SQL的执行流程的执行流程(不使用游标不使用游标):1)主语言进行变量声明和界面处理,并读取用户数据;主语言进行变量声明和界面处理,并读取用户数据;2)SQL语句用主变量从主语言中接收执行参数,操纵数据库;语句用主变量从主语言中接收执行参数,操纵数据库;3)SQL语句的执行状态由语句的执行状态由DBMS送至送至SQLCA中;中;4)主语言程序从主语言程序从SQLCA中取出状态信息,据此决定下一步操中取出状态信息,据此决定下一步操作;作;5)如果如

99、果SQL语句从数据库中成功地检索出数据,则通过主变量语句从数据库中成功地检索出数据,则通过主变量传给主语言做进一步处理,否则退出主程序;传给主语言做进一步处理,否则退出主程序;6)如果如果SQL语句返回的是结果集,则主语言通过游标逐一处理语句返回的是结果集,则主语言通过游标逐一处理各记录。各记录。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.S

100、lides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.48数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 不用游标的不用游标的SQL语句语句一、声明性语句一、声明性语句声明性语句是专为在嵌入式声明性语句是专为在嵌入式SQLSQL中声明主变量、中声明主变量、SQLCASQLCA等等而设置的而设置的声明

101、主变量声明主变量1. EXEC SQL BEGIN DECLARE SECTION ; 2. EXEC SQL END DECLARE SECTION ;这两条语句必须配对出现,相当于一个括号,两这两条语句必须配对出现,相当于一个括号,两条语句中间是主变量的说明。条语句中间是主变量的说明。声明声明SQLCA 3. EXEC SQL INCLUDE SQLCA ;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Eval

102、uation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.49数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 不用游标的不用游标的SQL语句语句二、数据定义语句二、数据定义语句例例1 建立一个“学生”表Student。 EXEC SQL

103、CREATE TABLE Student ( Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20), Ssex CHAR(1), Sage INT, Sdept CHAR(15) ) ;M 数据定义语句(数据定义语句(DDL)中不允许使用主变量!)中不允许使用主变量!例:错误语句 EXEC SQL DROP TABLE :table_name ;三、数据控制语句三、数据控制语句例例2 把查询Student表权限授给用户U1。EXEC SQL GRANT SELECT ON TABLE Student TO U1;Evaluation only.Created

104、with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.50数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineerin

105、g , Xidian University , China 不用游标的不用游标的SQL语句语句四、查询结果为四、查询结果为单记录单记录的的SELECT语句语句 语句格式:语句格式:EXEC SQL SELECT ALL|DISTINCT ,. INTO ,. FROM , . WHERE GROUP BY HAVING ORDER BY ASC|DESC ;说明:说明:把从数据库中找到的符合条件的记录,放到把从数据库中找到的符合条件的记录,放到INTO子句指出的主变量中去。子句指出的主变量中去。Evaluation only.Created with Aspose.Slides for .NE

106、T 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.51数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , Ch

107、ina 不用游标的不用游标的SQL语句语句使用注意事项使用注意事项: 1. 主变量的使用范围INTO子句子句WHERE子句的条件表达式子句的条件表达式HAVING短语的条件表达式短语的条件表达式 2. 使用指示变量指示变量只能用于指示变量只能用于INTO子句中子句中当当SELECT子句的目标列返回空值时,系统不会给对应的子句的目标列返回空值时,系统不会给对应的主变量赋值主变量赋值(仍保持执行仍保持执行SQL语句之前的值语句之前的值),而将其后的,而将其后的指示变量置为负值指示变量置为负值当发现指示变量值为负值时,不管主变量为何值,均应认当发现指示变量值为负值时,不管主变量为何值,均应认为主变量

108、值为为主变量值为NULL四、查询结果为四、查询结果为单记录单记录的的SELECT语句语句Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.52数据库系统数据库系统 Principle of Da

109、taBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 不用游标的不用游标的SQL语句语句3. 查询结果为空集如果数据库中没有满足条件的记录,即查询结果为空,如果数据库中没有满足条件的记录,即查询结果为空,则则DBMS将将SQLCODE的值置为的值置为1004. 查询结果为多条记录程序出错,程序出错,DBMS会在会在SQLCA中返回错误信息中返回错误信息四、查询结果为四、查询结果为单记录单记录的的SELECT语句语句使用注意事项使用注意事项:Evaluat

110、ion only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.53数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Sci

111、ence & Engineering , Xidian University , China 不用游标的不用游标的SQL语句语句例例3 根据学生号码查询学生信息。 EXEC SQL SELECT Sno, Sname, Ssex, Sage, Sdept INTO :Hsno, :Hname, :Hsex, :Hage, :Hdept FROM Student WHERE Sno = :givensno ;主变量主变量givensno需要在此前由宿主语言赋值,且在需要在此前由宿主语言赋值,且在SQL声明段中已经声明;主变量声明段中已经声明;主变量Hsno, Hname, Hsex, Hage和

112、和Hdept也均已在前面的声明段中声明过了。也均已在前面的声明段中声明过了。此此SQL语句执行后,语句执行后,INTO子句将查询的返回值赋给子句将查询的返回值赋给对就的五个主变量,可以由主语言进行过程化处理对就的五个主变量,可以由主语言进行过程化处理。解解决了非过程化向过程化的转变。决了非过程化向过程化的转变。四、查询结果为四、查询结果为单记录单记录的的SELECT语句语句Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Lt

113、d.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.54数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 不用游标的不用游标的SQL语句语句例例4 查询某个学生选修某门课程的成绩。 假设已将要查询的学生的学号赋给了主变量假

114、设已将要查询的学生的学号赋给了主变量givensno,将课程号赋给了主变量将课程号赋给了主变量givencno 。 EXEC SQL SELECT Sno, Cno, Grade INTO :Hsno, :Hcno, :Hgrade:Gradeid FROM SC WHERE Sno=:givensno AND Cno=:givencno ;当该学生成绩为空时,当该学生成绩为空时,SQL语句执行后会给指示变量语句执行后会给指示变量Gradeid置为负值,而主变量置为负值,而主变量Hgrade仍保持原来的值仍保持原来的值(不正确不正确),这时主程序应根据指示变量的值判定主变量是否为有效值。,这时

115、主程序应根据指示变量的值判定主变量是否为有效值。在开发应用程序时应慎用此句:随着数据的变动或查询条在开发应用程序时应慎用此句:随着数据的变动或查询条件的不同,返回记录可能不止一条,造成应用程序出错。件的不同,返回记录可能不止一条,造成应用程序出错。四、查询结果为四、查询结果为单记录单记录的的SELECT语句语句Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with A

116、spose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.55数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 不用游标的不用游标的SQL语句语句五、非五、非CURRENT形式的形式的UPDATE语句语句例例6 修改某个学生c1号课程的成绩。 假设该学生的学号已赋假设该学生的学号已赋give

117、nsno,新成绩已赋给,新成绩已赋给newgrade。 EXEC SQL UPDATE SC SET Grade = :newgrade WHERE Cno= c1 AND Sno = :givensno ;例例7 将计算机系全体学生年龄置NULL值。Sageid = -1; EXEC SQL UPDATE Student SET Sage = :Raise :Sageid WHERE Sdept = CS ;将指示变量将指示变量Sageid赋一个负值后,无论主变量赋一个负值后,无论主变量Raise为何为何值,值,DBMS都会将都会将CS系所有记录的年龄属性置空值。系所有记录的年龄属性置空值。

118、Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.56数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Compu

119、ter Science & Engineering , Xidian University , China 不用游标的不用游标的SQL语句语句六、非六、非CURRENT形式的形式的DELETE语句语句例例8 某个学生退学了,现要将有关他的所有选课记录删除掉。 假设该学生的姓名已赋给主变量假设该学生的姓名已赋给主变量stdname EXEC SQL DELETE FROM SC WHERE Sno = ( SELECT Sno FROM Student WHERE Sname = :stdname ) ;Evaluation only.Created with Aspose.Slides for

120、 .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.57数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University

121、, China 不用游标的不用游标的SQL语句语句七、非七、非CURRENT形式的形式的INSERT语句语句例例9 某个学生新选修了某门课程,将有关记录插入SC表 假设学生的学号已赋给主变量stdno,课程号已赋给主变量couno 。 gradeid = -1;EXEC SQL INSERT INTO SC ( Sno, Cno, Grade ) VALUES ( :stdno, :couno, :gr :gradeid ) ;由于该学生刚选修课程,尚未考试,因此成绩列为空。由于该学生刚选修课程,尚未考试,因此成绩列为空。所以本例中用指示变量指示相应的主变量为空值。所以本例中用指示变量指示相应

122、的主变量为空值。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.58数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School

123、of Computer Science & Engineering , Xidian University , China 嵌入式嵌入式SQLSQL概述概述例:例:带有嵌入式SQL的一小段C程序:查询并打印学生成绩。./* C语言的头文件、变量声明等 */ EXEC SQL INCLUDE SQLCA; /* (1) 定义SQL通信区 */ EXEC SQL BEGIN DECLARE SECTION; /* (2) 声明主变量 */ CHAR Sno(5); CHAR Cno(3); INT grade, Gradeid; EXEC SQL END DECLARE SECTION; main

124、() printf(“Input Sno and Cno:”);scanf(“%s%s”, &Sno, &Cno); /*(3)略去连接数据库*/ EXEC SQL SELECT Sno, Cno, Grade /* (4) 查询 */ INTO :Hsno, :Hcno, :Hgrade:Gradeid FROM SC WHERE Sno=:givensno AND Cno=:givencno ; if (sqlca.sqlcode SUCCESS) /* (5) 判定查询是否成功执行 */ return -1; printf(Sno: %s, Cno: %s, Grade:%d, Sno,

125、 Cno, Grade); /*打印结果*/ /* (6) 释放连接*/ Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.59数据库系统数据库系统 Principle of DataBase

126、System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 使用游标的使用游标的SQL语句语句F什么是游标什么是游标(Cursor)?游标是嵌入式游标是嵌入式SQL引入的机制引入的机制游标是游标是SQL查询语句向宿主语言提供查询结果集的一段查询语句向宿主语言提供查询结果集的一段公共缓冲区公共缓冲区嵌入式嵌入式SQL提供了逐条处理游标记录的功能,将当前记提供了逐条处理游标记录的功能,将当前记录各字段值推入主变量,并移动游标指针录各字段值推入主变量,并移动游标指针游标解决了游标

127、解决了SQL语言只有记录处理能力的问题,将记录语言只有记录处理能力的问题,将记录的各字段赋给主变量,交由宿主语言进行单值处理的各字段赋给主变量,交由宿主语言进行单值处理Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Asp

128、ose Pty Ltd.60数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 嵌入式嵌入式SQLSQL概述概述F含嵌入式含嵌入式SQL的执行流程的执行流程(使用游标使用游标):主语言对主变量赋值主语言对主变量赋值SQLCA 声明、主变量声明声明、主变量声明主语言头文件、变量声明主语言头文件、变量声明开始开始定义游标定义游标打开游标打开游标读取游标中的当前记录;读取游标中的当前记录;推进游标指针推进游

129、标指针读取成功?读取成功?处理当前记录处理当前记录关闭游标关闭游标YN结束结束Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.61数据库系统数据库系统 Principle of DataBas

130、e System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 使用游标的使用游标的SQL语句语句F使用游标的步骤使用游标的步骤1. 说明游标EXEC SQL DECLARE CURSOR FOR ;2. 打开游标EXEC SQL OPEN ;3. 移动游标指针,然后取当前记录EXEC SQL FETCH NEXT | PRIOR | FIRST | LAST FROM INTO ,. ;4. 关闭游标EXEC SQL CLOSE ;Evaluation only.Crea

131、ted with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.62数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engine

132、ering , Xidian University , China 使用游标的使用游标的SQL语句语句一、一、 查询结果为多条记录的查询结果为多条记录的SELECT语句语句例例1 查询某个系全体学生的信息(学号、姓名、性别和年龄)。要查询的系名由用户在程序运行过程中指定,放在主要查询的系名由用户在程序运行过程中指定,放在主变量变量deptnamedeptname中中 . EXEC SQL INCLUDE SQLCA; /* 包含SQL通信区*/EXEC SQL BEGIN DECLARE SECTION; . /* 说明主变量 deptname, HSno, HSname, HSsex, HS

133、age等*/.EXEC SQL END DECLARE SECTION;.gets(deptname); /* 为主变量deptname赋值 */.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Lt

134、d.63数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 使用游标的使用游标的SQL语句语句EXEC SQL DECLARE SX CURSOR FOR SELECT Sno, Sname, Ssex, Sage FROM Student WHERE SDept=:deptname ; /* 定义游标 */EXEC SQL OPEN SX /* 打开游标 */WHILE(1) /* 用循环结构逐条处

135、理结果集中的记录 */ EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex, :HSage; /* 将游标指针向前推进一行,然后从 结果集中取当前行,送相应主变量*/ if (sqlca.sqlcode SUCCESS) break; /* 若所有查询结果已处理完或出现SQL语句错误,则退出循环 */ . /* 由主语言语句进行进一步处理 */ ; EXEC SQL CLOSE SX; /* 关闭游标 */ .F游标解决了单记录游标解决了单记录SQL查询的局限性,提高了程序的健壮性查询的局限性,提高了程序的健壮性。Evaluation only.Crea

136、ted with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.64数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engine

137、ering , Xidian University , China 使用游标的使用游标的SQL语句语句二、二、CURRENT形式的形式的UPDATE语句和语句和DELETE语句语句使用游标的步骤:使用游标的步骤:(1) 说明游标说明游标(2) 打开游标,把所有满足查询条件的记录从指定表取至缓冲区打开游标,把所有满足查询条件的记录从指定表取至缓冲区(3) 推进游标指针,并把当前记录从缓冲区中取出来送至主变量推进游标指针,并把当前记录从缓冲区中取出来送至主变量(4) 检查该记录是否需要处理(修改或删除),是则处理之检查该记录是否需要处理(修改或删除),是则处理之 (5) 重复第重复第(3)和和(4

138、)步,用逐条取出结果集中的行进行判断和处步,用逐条取出结果集中的行进行判断和处理理(6) 关闭游标,释放结果集占用的缓冲区和其他资源关闭游标,释放结果集占用的缓冲区和其他资源Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011

139、Aspose Pty Ltd.65数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 使用游标的使用游标的SQL语句语句例例3 对某个系的学生信息,根据用户的要求修改其中某些人的年龄字段。.EXEC SQL INCLUDE SQLCA;EXEC SQL BEGIN DECLARE SECTION; . /* 说明主变量 deptname,HSno,HSname,HSsex,HSage,NEWAge等*

140、/.EXEC SQL END DECLARE SECTION;.gets(deptname); /* 为主变量deptname赋值 */. EXEC SQL DECLARE SX CURSOR FORSELECT Sno, Sname, Ssex, SageFROM StudentWHERE SDept = :deptnameFOR UPDATE OF Sage; /* 说明游标 */Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose

141、Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.66数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 使用游标的使用游标的SQL语句语句EXEC SQL OPEN SX /* 打开游标 */WHILE(1)

142、 /* 用循环结构逐条处理结果集中的记录 */ EXEC SQL FETCH SX INTO :HSno,:Hsname,:HSsex,:HSage; /* 将游标指针向前推进一行,然后从 结果集中取当前行,送相应主变量*/ if (sqlca.sqlcode SUCCESS) break; /* 若所有查询结果均已处理完或 出现SQL语句错误,则退出循环 */ printf(%s, %s, %s, %d, HSno, HSname, HSsex, HSage); /* 显示该记录 */ printf(“UPDATE AGE ? ”); /* 问用户是否要修改 */ scanf(%c, &yn

143、);Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.67数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Com

144、puter Science & Engineering , Xidian University , China 使用游标的使用游标的SQL语句语句 if (yn=y or yn=Y) /* 需要修改 */ printf(INPUT NEW AGE: ); scanf( %d, &NEWAge ); /* 输入新的年龄值 */ EXEC SQL UPDATE Student SET Sage = :NEWAge WHERE CURRENT OF SX; /* 修改当前记录的年龄字段 */ ; .;EXEC SQL CLOSE SX; /* 关闭游标 */.Evaluation only.Crea

145、ted with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.68数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engine

146、ering , Xidian University , China 使用游标的使用游标的SQL语句语句例例4 对某个系的学生信息,根据用户的要求删除其中某些人的记录。.EXEC SQL INCLUDE SQLCA;EXEC SQL BEGIN DECLARE SECTION; . /* 说明主变量 deptname,HSno,HSname,HSsex,HSage等*/ .EXEC SQL END DECLARE SECTION;.gets(deptname); /* 为主变量deptname赋值 */.EXEC SQL DECLARE SX CURSOR FOR SELECT Sno, Sna

147、me, Ssex, Sage FROM Student WHERE SDept=:deptname FOR UPDATE; /* 无此句无法用无此句无法用current of*/Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-201

148、1 Aspose Pty Ltd.69数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 使用游标的使用游标的SQL语句语句EXEC SQL OPEN SX /* 打开游标 */WHILE(1) /* 用循环结构逐条处理结果集中的记录 */ EXEC SQL FETCH SX INTO :HSno,:HSname,:HSsex,:HSage; /* 将游标指针向前推进一行,然后从 结果集中取当前行,送

149、相应主变量*/ if (sqlca.sqlcode SUCCESS) break; /* 若所有查询结果均已处理完或 出现SQL语句错误,则退出循环 */ printf(%s, %s, %s, %d, HSno, HSname, HSsex, HSage) ; /* 显示该记录 */ printf(DELETE ? ) ; /* 问用户是否要删除 */ scanf(%c,&yn);Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pt

150、y Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.70数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 使用游标的使用游标的SQL语句语句 if ( yn=y or yn=Y) /* 需要删除 */ EXEC S

151、QL DELETE FROM Student WHERE CURRENT OF SX ; /* 删除当前记录 */ .;EXEC SQL CLOSE SX; /* 关闭游标 */.游标提供了逐条提取结果集中记录的功能,转为由高级游标提供了逐条提取结果集中记录的功能,转为由高级语言处理。语言处理。是否需要引入是否需要引入CURRENT形式的形式的INSERT语句?为什么语句?为什么?Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pt

152、y Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.71数据库系统数据库系统 Principle of DataBase System西安电子科技大学计算机学院 - School of Computer Science & Engineering , Xidian University , China 静态静态SQL与动态与动态SQLF静态静态SQL嵌入的SQL语句中涉及的表名及属性名是确定的,即在编译时已确

153、定,而可变的部分只是相应的取值(用主变量传递),称为静态SQLF动态动态SQL嵌入的SQL语句中允许由主变量传递属性名、表名、数据对象名及其取值,以及完整的SQL语句,称为动态SQL有关动态SQL的内容将在下学期数据库编程中专门讲授Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.72

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号