第四部分SQL教学课件.ppt

上传人:牧羊曲112 文档编号:1390510 上传时间:2022-11-18 格式:PPT 页数:85 大小:570.01KB
返回 下载 相关 举报
第四部分SQL教学课件.ppt_第1页
第1页 / 共85页
第四部分SQL教学课件.ppt_第2页
第2页 / 共85页
第四部分SQL教学课件.ppt_第3页
第3页 / 共85页
第四部分SQL教学课件.ppt_第4页
第4页 / 共85页
第四部分SQL教学课件.ppt_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《第四部分SQL教学课件.ppt》由会员分享,可在线阅读,更多相关《第四部分SQL教学课件.ppt(85页珍藏版)》请在三一办公上搜索。

1、第四章 SQL,SQL概述SQL数据定义功能SQL数据查询功能SQL数据修改功能SQL数据控制功能嵌入式SQL,SQL概述(),历史1974年,由Boyce和Chamber提出。1975-1979年,在System R上实现,由IBM的San Jose研究室研制,称为Sequel,现在称为SQL (Struceured Query Languang)。标准化有关组织ANSI(American Natural Standard Institute)ISO(International Organization for Standardization)有关标准SQL-86:“数据库语言SQL”,SQ

2、L概述(),SQL-89:“具有完整性增强的数据库语言SQL”,增加了对完整性约束的支持。SQL-92:“数据库语言SQL”,是SQL-89的超集,增加了许多新特性,如新的数据类型,更丰富的数据操作,更强的完整性、安全性支持等。SQL-3:正在讨论中的新的标准,将增加对面向对象模型的支持。特点一体化集DDL,DML,DCL于一体。单一的结构-关系,带来了数据操作符的统一。面向集合的操作方式一次一集合。,SQL概述(),高度非过程化 用户只需提出“做什么”,无须告诉“怎么做”,不必了解存取路径。两种使用方式,统一的语法结构 SQL既是自含式语言(用户使用),又是嵌入式语言(程序员使用)。语言简洁

3、,易学易用,示例关系,DEPT(D# , DNAME , DEAN)S(S# , SNAME , SEX , AGE , D#)COURSE(C# , CN , PC# , CREDIT)SC(S# , C# , SCORE)PROF(P# , PNAME, AGE, D# , SAL)PC(P# , C#),SQL数据定义功能,域定义基本表的定义索引的定义数据库的建立与撤消SQL数据定义特点,域定义(),域类型(SQL-92)char(n):固定长度的字符串。varchar(n):可变长字符串。int:整数。smallint:小整数类型。numeric(p,d):定点数,小数点左边p位,右边

4、q位。real:浮点数。double precision:双精度浮点数。date:日期(年、月、日)。time:时间(小时、分、秒)。interval:两个date或time类型数据之间的差。,域定义(),域定义格式 create domain 域名 数据类型示例create domain person-name char(20) 类似C语言中:typedef ADDRESS_LISTchar name10;char telephone20;char location20char email20;ADDRESS_LIST tom;,基本表的定义(),基本表的定义(CREATE)格式 creat

5、e table 表名( 列名 数据类型 default 缺省值 not null ,列名 数据类型 default 缺省值 not null ,primary key(列名 ,列名 ) ,foreign key (列名 ,列名 ) references 表名 (列名 ,列名 ) ,check(条件),基本表的定义(),示例 create domain person_name char(20)create table PROF( PNO char10, person_name PNAME not null, SAL int, AGE int, DNO char10, primary key (P

6、NO), foreign key (DNO) references DEPT(DNO), check (SAL 0),基本表的定义(),修改基本表定义(ALTER)格式:alter table 表名add 子句增加新列drop 子句删除列modify 子句修改列定义示例alter table PROFadd LOCATION char30,基本表的定义(),撤消基本表定义(drop)格式drop table 表名示例 drop table DEPT危险 撤消基本表后,基本表的定义、表中数据、索引、以及由此表导出的视图的定义都被删除。,索引的定义(),索引的定义格式 create unique/

7、distinct cluster index 索引名 on 表名 (列名 asc/desc , 列名asc/desc) unique(distinct):唯一性索引,不允许表中不同的行在索引列上取相同值。若已有相同值存在,则系统给出相关信息,不建此索引。系统并拒绝违背唯一性的插入、更新。 cluster:聚集索引,表中元组按索引项的值排序并物理地聚集在一起。一个基本表上只能建一个聚集索引。 asc/desc:索引表中索引值的排序次序,缺省为asc。 示例: create cluster index s-index on S(S#),索引的定义(),索引的删除格式: drop index 索引名

8、索引的有关说明可以动态地定义索引,即可以随时建立和删除索引。不允许用户在数据操作中引用索引。索引如何使用完全由系统决定,这支持了数据的物理独立性。应该在使用频率高的、经常用于连接的列上建索引。一个表上可建多个索引。索引可以提高查询效率,但索引过多耗费空间,且降低了插入、删除、更新的效率。,数据库的建立与撤消,有的数据库系统支持多库。建立一个新数据库create database 数据库名撤消一个数据库drop database 数据库名指定当前数据库database 数据库名指定当前数据库close database 数据库名,SQL数据定义特点,SQL中,任何时候都可以执行一个数据定义语句,

9、随时修改数据库结构。而在非关系型的数据库系统中,必须在数据库的装入和使用前全部完成数据库的定义。若要修改已投入运行的数据库,则需停下一切数据库活动,把数据库卸出,修改数据库定义并重新编译,再按修改过的数据库结构重新装入数据。数据库定义不断增长(不必一开始就定义完整)。数据库定义随时修改(不必一开始就完全合理)。可进行增加索引、撤消索引的实验,检验其对效率的影响。,SQL数据查询功能,SQL数据查询基本结构select子句重复元组的处理from子句where子句更名运算字符串操作元组显示顺序集合操作,SQL数据查询功能,分组和聚集函数空值嵌套子查询派生关系视图关系的连接,SQL数据查询基本结构,

10、基本结构select A1 , A2 , , Anfrom r1 , r2 , , rmwhere P A1 , A2 , , An(p(r1 r2 rm)示例给出所有老师的姓名。select PNAMEfrom PROF,select子句,目标列形式 可以为列名,* ,算术表达式,聚集函数。“*”:表示“所有的属性”。给出所有老师的信息。select *from PROF带, , 的算术表达式 给出所有老师的姓名及税后工资额。select PNAME,SAL 0.95from PROF,重复元组的处理,语法约束 缺省为保留重复元组,也可用关键字all显式指明。若要去掉重复元组,可用关键字di

11、stinct或unique指明。示例 找出所有选修课程的学生。 select distinct SNO from SC,from子句(),说明 from子句列出查询的对象表。当目标列取自多个表时,在不混淆的情况下可以不用显式指明来自哪个关系。示例例:找出工资低于500的职工的姓名、工资、系别。 select PNAME , SAL , DNAME from PROF , DEPT where SAL 500 and PROF.DNO = DEPT.DNO,from子句(),例:列出教授“哲学”课程的老师的教工号及姓名。 select PROF. PNO , PNAME from PROF ,

12、PC , COURSE where PROF.PNO = PC.PNOand PC.CNO = COURSE.CNOand COURSE.CNAME = “哲学”,where子句,语法成分比较运算符:、 、=、 。逻辑运算符:and,or,not。between条件:判断表达式的值是否在某范围内。示例列出工资在500800之间的老师姓名。 select PNAME from PROF where SAL between 500 and 800,更名运算(),格式old_name as new_name为关系和属性重新命名,可出现在select和from子句中。示例属性更名 例:给出所有老师的姓

13、名、所纳税额及税后工资额。 select PNAME,SAL0.05 as taxi, SAL*0.95 as incomingfrom PROF,更名运算(),关系更名 找出工资比所在系主任工资高的老师姓名及工资。 select P1.PNAME,P1.SALfrom PROF as P1,PROF as P2,DEPT where P1.DNO = DEPT.DNOand DEPT.DEAN = P2.PNO and P1.SAL P2.SAL 注:as可选。,字符串操作(),命令格式like:找出满足给定匹配条件的字符串。 格式:列名 not like “字符串”匹配规则: “%” :匹

14、配零个或多个字符。 “”:匹配任意单个字符。 escape :定义转义字符,以去掉特殊字符的特定含义,使其被作为普通字符看待。如escape “”,是定义了 作为转义字符,则可用%去匹配%,用去匹配,用 去匹配 。,字符串操作(),示例列出姓名以“张”打头的教师的所有信息。 select * from PROF where PNAME like “张%”列出名称中含有4个字符以上,且倒数第3个字符是d,倒数第2个字符是_的系的所有信息。 select * from PROF where PNAME like “% d ”,元组显示顺序,命令order by 列名 asc | desc示例按系名

15、升序列出老师姓名,所在系名,同一系中老师按姓名降序排列。 select DNAME,PNAME from PROF,DEPT where PROF.DNO = DEPT.DNO order by DNAME asc,PNAME desc,集合操作(),命令集合并:union集合交:intersect集合差: except示例求选修了001或002号课程的学生号。(select SNO from SC where CNO = 001)union all(select SNO from SC where CNO = 002),集合操作(),求选修了001和002号而没有选003号课程的学生号。(s

16、elect SNO from SC where CNO = 001 or CNO = 002 )except(select SNO from SC where CNO = 003)提示 集合操作自动去除重复元组,如果要保留重复元组的话,必须用all关键词指明。,分组和聚集函数(),分组命令group by 列名 having 条件表达式 group by将表中的元组按指定列上的值相等的原则分组,然后在每一分组上使用聚集函数,得到单一值。having则对分组进行选择,只将聚集函数作用到满足条件的分组上。聚集函数平均值:avg最小值:min最大值:max总和:sum记数:count,分组和聚集函数

17、(),示例列出各系的老师的最高、最低、平均工资。 select DNO,max(SAL),min(SAL),avg(SAL) from PROF group by DNO列出及格的学生的平均成绩。 select SNO,avg(SCORE) from SC group by SNO having min(SCORE) = 60,分组和聚集函数(),? 求选修了课程的学生人数。 select count (SNO ) from SC select PNAME,max(SAL) from PROF select DNO,avg(SAL) from PROF group by DNO where A

18、GE 60,空值(),空值测试is not null测试指定列的值是否为空值。示例找出年龄值为空的老师姓名。 select PNAME from PROF where AGE is null不可写为where AGE = null,空值(),注意事项除is not null之外,空值不满足任何查找条件。如果null参与算术运算,则该算术表达式的值为null。如果null参与比较运算,则结果可视为false。在SQL-92中可看成unknown。如果null参与聚集运算,则除count(*)之外其它聚集函数都忽略null。 例:select sum(SAL) from PROF 例:select

19、 count(*) from PROF,嵌套子查询,集合成员资格集合之间的比较集合基数的测试测试集合是否为空测试集合是否存在重复元组,集合成员资格(),in 子查询表达式 not in (子查询)判断表达式的值是否在子查询的结果中。示例选修了001号课程的学生的学号及姓名。 select SNO,SNAME from S where SNO in (select SNO from SC where CNO = 001),集合成员资格(),列出选修了001号和002号课程的学生的学号。 select SNO from SC where SC.CNO = 001 and SNO in (selec

20、t SNO from SC where CNO = 002)列出张军和王红同学的所有信息。 select * from S where SNAME in (“张军”,“王红”),集合之间的比较(),some/all子查询表达式 比较运算符 some (子查询) 表达式的值至少与子查询结果中的一个值相比满足比较运算符 。表达式 比较运算符 all (子查询) 表达式的值与子查询结果中的所有的值相比都满足比较运算符。,集合之间的比较(),示例找出平均成绩最高的学生号。 select SNO from SC group by SNO having avg(SCORE) = all(select av

21、g(SCORE) from SC group by SNO),集合基数的测试(),测试集合是否为空not exists (子查询)判断子查询的结果集合中是否有任何元组存在。列出选修了01号课程的学生的学号及姓名。 select SNO,SNAME from S where exists (select * from SC where CNO = 01 and SNO = S.SNO),集合基数的测试(),列出选修了001号和002号课程的学生的学号。 select SNO from SC SC1 where SC1.CNO = 001 and exists (select SNO from S

22、C SC2 where SC2. CNO = 002 and SC2.SNO = SC1.SNO)注:in后的子查询与外层查询无关,每个子查询执行一次,而exists后的子查询与外层查询有关,需要执行多次,称之为相关子查询。,列出至少选修了001号学生选修的所有课程的学生名。 select SNAME from S where not exists(select CNO from COURSE where exists(select * from SC where SC.CNO = COURSE.CNO and SC.SNO = 001) and not exists(select * fro

23、m SC where SC.CNO = COURSE.CNO and SC.SNO = S.SNO),任意课程,001号学生选之,所求学生选之。 不存在任何一门课程,001号学生选之,所求学生没有选之。,集合基数的测试(),测试集合是否存在重复元组unique (子查询)如果子查询结果中没有重复元组,则返回true。示例找出所有只教授一门课程的老师姓名。 select PNAME from PROF where unique(select PNO from PC where PC.PNO = PROF.PNO),集合基数的测试(),找出至少选修了两门课程的学生姓名。 select SNAME

24、from S where not unique(select SNO from SC where SC.SNO = S.SNO)思考 to TRUE or not to TRUE , that is the question. unique (a , b , null) , (a , b , null) ?,派生关系(),命令(子查询) as 关系名(列名,列名,) SQL-92中,允许在from子句中使用子查询表达式,这时可将该子查询的结果命名为一个临时关系加以引用。示例找出平均成绩及格的学生。 先求出每个学生的平均成绩,再从中找出及格的学生 select SNAME , avg(SCORE

25、) from S,SC where SC.SNO = S.SNO group by SC .SNO,派生关系(),select SNAME , AVG_SCOREfrom (select SNAME , avg(SCORE) from S,SC where SC.SNO = S.SNO group by SC .SNO) as result(SNAME , AVG_SCORE )where AVG_SCORE = 60派生关系 Vs 视图?,视图(),定义视图create view view_name(列名,列名 ) as (查询表达式)with check option 视图的属性名缺省为子

26、查询结果中的属性名,也可以显式指明。with check option指明当对视图进行insert,update时,要检查是否满足视图定义中的条件。撤消视图drop view view_name,视图(),示例create view COMPUTER_PROFas (select PNO , PNAME , SAL from PROF,DEPT where PROF.PNO = DEPT.PNO and DEPT.DNAME = “计算机系”)create view DEPTSAL( DNO, LOW, HIGH, AVERAGE, TOTAL )as ( select DNO, min(SA

27、L), max(SAL), avg(SAL), sum(SAL) from PROF group by DNO ),视图(),给出计算机系工资超过800的老师姓名。select PNAMEfrom COMPUTER_PROFwhere SAL 800给出计算机系老师的最低、最高、平均工资以及工资总额。select LOW , HIGH , AVERAGE , TOTALfrom DEPTSAL , DEPTwhere DEPTSAL.DNO = DEPT.DNO and DEPT.DNAME =“计算机系”,关系的连接(),基本分类 连接成分包括两个输入关系、连接条件、连接类型。连接条件:决定

28、两个关系中哪些元组相互匹配,以及连接结果中出现哪些属性。连接类型:决定如何处理与连接条件不匹配的元组。,关系的连接(),自然连接:出现在结果关系中的两个连接关系的元组在公共属性上取值相等,且公共属性只出现一次。on :出现在结果关系中的两个连接关系的元组在公共属性上取值满足谓词条件P,且公共属性出现两次。using (A1, A2 , An): (A1, A2 , An)是两个连接关系的公共属性的子集,元组在(A1, A2 , An)上取值相等,且(A1, A2 , An)只出现一次。内连接:舍弃不匹配的元组。左外连接:内连接 + 左边关系中失配的元组(缺少的右边关系属性值用null表示)。,

29、关系的连接(),右外连接:内连接 + 右边关系中失配的元组(缺少的左边关系属性值用null表示)。全外连接:内连接 + 左边关系中失配的元组(缺少的右边关系属性值用null表示)+ 右边关系中失配的元组(缺少的左边关系属性值用null表示)。cross join:两个关系的笛卡儿积。union join:左边关系中失配的元组+ 右边关系中失配的元组。对于外连接,连接条件是必须的;对于内连接,连接条件是可选的,没有连接条件等价于两个关系的笛卡儿积。,关系的连接(),列出老师的教工号、姓名、工资、所教课程号。select PNO,PNAME,SAL,CNOfrom (PROF nature lef

30、t outer join PC),R inner join S on R.C = S.C,R,S,关系的连接(),R left outer join S on R.C = S.C,R nature right outer join S,关系的连接(),R full outer join S on R.C = S.C,SQL的数据修改功能,插入删除修改视图更新,插入操作(),命令insert into 表名 (列名,列名values (值 ,值)插入一条指定好值的元组insert into 表名 (列名,列名(子查询)插入子查询结果中的若干条元组示例insert into PROF values

31、 ( P123, “王明”, 35, D08, 498 )insert into PROF (PNO, PNAME, DNO) values ( P123, “王明”, D08 ) 思考:SAL取何值?如何防止插入带有空值的元组?,插入操作(),将平均成绩大于90的学生加入到EXCELLENT中。insert into EXCELLENT ( SNO, GRADE)select SNO , avg(SCORE)from SCgroup by (SNO)having avg(SCORE) 90FORBIDDEN( INFORMIX) insert into PROFselect *from PR

32、OF,若支持,则完成查询后,再执行修改操作,不支持修改在子查询中出现的表,删除操作(),命令delete from 表名 where 条件表达式 从表中删除符合条件的元组,如果没有where语句,则删除所有元组。示例清除所有选课记录delete from SC删除王明老师所有的任课记录。delete from PCwhere PNO in (select PNO from PROF where PNAME = “王明”),删除操作(),删除低于平均工资的老师记录。delete from PROFwhere SAL (select avg(SAL) from PROF) 思考:是先找到所有符合条

33、件的元组,一并删除,还是找到一个删除一个?,更新操作(),命令update 表名 set 列名 = 表达式 | 子查询 列名 = ,表达式 | 子查询where 条件表达式指定对哪些列进行更新,以及更新后的值是什么。示例老师工资上调5%。update PROFset SAL = SAL * 1.05,更新操作(),将D01系系主任的工资改为该系的平均工资update PROFset SAL = (select avg(SAL) from PROFwhere DNO = D01)where PNO = (select DEAN from DEPT where DNO = D01),更新操作(),

34、工资超过2000的缴纳10%所得税,其余的缴纳5%所得税。 update PROF set SAL = SAL * 0.9 where SAL 2000 update PROF set SAL = SAL * 0.95 where SAL = 2000执行顺序是,还是,?,视图更新(),示例create view P_SALas (select PNO , PNAME , SAL from PROF )insert into P_SALvalues ( P08 , “张立” , 750 )转换为:insert into PROFvalues ( P08 , “张立” , null , null

35、 , 750 ),视图更新(),视图更新约束以Informix系统为例,规定:允许更新的视图只能定义在单表上。select子句中的目标列不能包含聚集函数。select子句中不能使用unique或distinct关键字。不能包括group by子句。不能包括经算术表达式计算出来的列。,SQL数据控制功能(),安全性控制安全性控制保护数据库以防止不合法的使用所造成的数据泄露和破坏。其基本措施是存取控制。授权命令grant 表级权限 on 表名 | 视图名 to 用户 ,用户 | public with grant option表级权限包括:select, update, insert, delet

36、e, index, alter以及它们的总和all,其中对select , update可指定列名。with grant option表示获得权限的用户可以把权限再授予其它用户。,SQL数据控制功能(),示例grant select , insert on S to Liming with grant optiongrant all on S to public回收权限revoke 表级权限 on 表名 | 视图名 from 用户 ,用户 | public收回权限时,若该用户已将权限授予其它用户,则也一并收回。授权路径的起点一定是DBA。,SQL数据控制功能(),示例revoke insert

37、 on S from Liming思考一:grant可以基于列授权,当revoke这样的权限时,结果是什么?思考二:执行完下列语句的结果是什么?revoke all on S from publicgrant select on S to public有些支持多库的数据库系统中授权对象还可以是数据库:grant 数据库级权限 to 用户 ,用户 | public,SQL数据控制功能(),数据库级权限包括:connect:允许用户在database语句中指定数据库。resource:connect权限 + 建表、删除表及索引权利。 dba:resource权限 + 授予或撤消其他用户的conne

38、ct、resource、dba权限。不允许dba撤消自己的dba权限。 思考: 如何使dba撤消自己的dba权限?,嵌入式SQL,为什么使用嵌入式SQL?有些操作对于交互式SQL是不可能的任务。SQL的表达能力相比高级语言有一定的限制,有些数据访问要求单纯使用SQL无法完成。一方面,SQL在逐渐增强自己的表达能力(参见习题4.10),另一方面,太多的扩展会导致优化能力及执行效率的降低。非声明性动作实际的应用系统是非常复杂的,数据库访问只是其中一个部件。有些动作如与用户交互、图形化显示数据等只能用高级语言实现。,嵌入式SQL执行过程,主语言 + 嵌入SQL,预处理,主语言 + 函数调用,主语言编

39、译器,主语言执行程序,需要解决的几个问题(),区分SQL语句与C语言语句嵌入的SQL语句以EXEC SQL开始,以分号(;) 或END_EXEX结束。EXEC SQL delete from PROF where DNO = 10;嵌入SQL语句与C语言之间的数据传递宿主变量C变量,既可以用在C语句中,也可用在SQL语句中,用来在两者之间传递数据。,需要解决的几个问题(),宿主变量的声明:声明为通常的C变量,并将其放在下列标识语句之间,EXEC SQL BEGIN DECLARE SECTIONEXEC SQL END DECLARE SECTIONEXEC SQL BEGIN DECLARE

40、 SECTIONint prof_no;char prof_name30;int salary;EXEC SQL END DECLARE SECTION,需要解决的几个问题(),注:宿主变量出现于SQL语句中时,前面加(:)以区别列名。 宿主变量可出现的地方:SQL的数据操纵语句中可出现常数的任何地方,select,fetch等语句的into字句中。示例:EXEC SQL select PNAME , SAL into :prof_name , :salary from PROF where PNO = prof_no ;,需要解决的几个问题(),指示变量C变量,用来指示返回给宿主变量的值是否

41、为null值,以及返回给宿主变量的字符串是否发生了截断。应用场合:如果一个宿主变量所对应的数据库字段允许空值,或字符串类型的宿主变量的长度可能小于所对应的数据库字段的长度,则需要一个指示变量来指明数据库访问的返回状态。指示变量的返回值:= 0:取到主变量的值不空,没有发生截断。= 1:取到主变量的值为空值。 0:取到主变量的值发生了截断,指示变 量的值是截断前的字符串的实际长度。,需要解决的几个问题(),指示变量的用法:声明与宿主变量的声明方式一样,在数据操纵语句中,在宿主变量和指示变量之间加( : )或关键字indicator。EXEC SQL BEGIN DECLARE SECTIONin

42、t prof_no;char prof_name30;int salary;short name_id;shortsal_id;EXEC SQL END DECLARE SECTIONEXEC SQL select PNAME , SAL into :prof_name : name_id , :salary: sal_id from PROF where PNO = prof_no ;,需要解决的几个问题(),SQL与主语言之间操作方式的协调SQL:一次一集合。C语言:一次一记录。游标:在查询结果的记录集合中移动的指针。若一个SQL语句返回单个元组,则不用游标。若一个SQL语句返回多个元组,

43、则使用游标。不需要游标的数据操作结果是一个元组的select语句 EXEC SQL select PNAME , SAL into :prof_name : name_id , :salary: sal_id from PROF where PNO = prof_no ;,需要解决的几个问题(),insert语句 EXEC SQL insert into PROF values (:prof_no, :prof_name , :salary , :dept_no , : salary) ;delete语句 EXEC SQL delete from PROF values PNO :prof_n

44、o ;update语句 EXEC SQL update PROF set SAL = :salary where PNO = : prof_no ;,需要解决的几个问题(),需要游标的数据操作当select语句的结果中包含多个元组时,使用游标可以逐个存取这些元组。活动集:selecT语句返回的元组的集合。当前行:活动集中当前处理的那一行。游标即是指向当前行的指针。游标分类:滚动游标:游标的位置可以来回移动,可在活动集中取任意元组。非滚动游标:只能在活动集中顺序地取下一个元组。更新游标:数据库对游标指向的当前行加锁,当程序读下一行数据时,本行数据解锁,下一行数据加锁。,需要解决的几个问题(),定

45、义与使用游标的语句declare:定义一个游标,使之对应一个select语句。declare 游标名 scroll cursor for select语句for update of列表名for update任选项,表示该游标可用于对当前行的修改与删除。open:打开一个游标,执行游标对应的查询,结果集合为该游标的活动集。open 游标名,需要解决的几个问题(),fetch :在活动集中将游标移到特定的行,并取出该行数据放到相应的宿主变量中。fetch next | prior | first | last | current | relative n | absolute m 游标名 into

46、 宿主变量表close :关闭游标,释放活动集及其所占资源。需要再使用该游标时,执行open语句。close 游标名free:删除游标,以后便不能再对该游标执行open语句了free 游标名,需要解决的几个问题(),SQL语句执行信息反馈良好的应用程序必须提供对错误的处理,应用程序需要知道SQL语句是否正确执行了,发生错误时的错误代码,执行时遇到特殊情况时的警告信息。SQL通讯域SQLCA是一结构,每一嵌入SQL语句的执行情况在其执行完成后写入USERCA结构中的各变量中, 根据SQLCA中的内容可以获得每一嵌入SQL语句执行后的信息,应用程序就可以做相应的处理。为了说明 (USERCA),必须在应用程序中包括:EXEC SQL INCLUDE SQLCA;,作业,4.2 c,g, h,j,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号