关系数据库标准语言SQL课件

PPT
  • 阅读 97 次
  • 下载 0 次
  • 页数 60 页
  • 大小 688.049 KB
  • 2022-12-05 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
关系数据库标准语言SQL课件
可在后台配置第一页与第二页中间广告代码
关系数据库标准语言SQL课件
可在后台配置第二页与第三页中间广告代码
关系数据库标准语言SQL课件
可在后台配置第三页与第四页中间广告代码
关系数据库标准语言SQL课件
关系数据库标准语言SQL课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 60
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】关系数据库标准语言SQL课件.ppt,共(60)页,688.049 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-92368.html

以下为本文档部分文字说明:

第三章关系数据库标准语言SQLSQL(StructuredQueryLanguage)结构化查询语言本章内容SQL概述数据定义查询更新视图数据控制嵌入式SQL*SQL概述SQL概述——ISO/ANSI钦定的关系数据库语言SQL特点:1

.综合统一集DDL、DML、DCL、DQ于一身;各种DBMS都接受;2.高度非过程化4GL,只需dowhat,无需howtodo3.面向集的操作方式setoftuple,Q,I,U,D4.两种使用方式自含方式直接用SQL(大多为DB

A),DBMS解释执行;嵌入方式嵌入其它宿主语言,如C,COBOL,JAVA等;例Oracle的PL/SQL等5.简单易用核心功能只用9个动词查询——SELECT定义——CREATE,DROP,ALTER操

纵——INSERT,UPDATE,DELETE控制——GRANT,REVOKE注:这里讲的是标准SQL,但有些DBMS对其都有所扩展,例PL/SQL,TRANSACTSQLSQL概述(续I)SQL使用基表模式中一个关系视图由基表导出的一个虚

表索引对表中的属性组进行逻辑上排序,可以加快检索速度三级模式结构及SQLSQL视图1视图2基表2基表3基表4基表1存储文件2存储文件1外模式(视图和部分基表)模式(基表)存储模式(存储文件)对应关系数据定

义实质上定义三级模式结构中的模式和外模式,或者说数据库的整体逻辑结构。定义有:表、视图、索引在SQL中视图是基于基表的虚表,索引则依附于基表,因此SQL中不提供修改视图和索引定义的语句。数据定义(续I)定义、删除、修改基本表定义基本表CREATETABLE格式:CREATETABL

E<表名>(<列名><数据类型>[完整性约束][,<列名><数据类型>[完整性约束]]…[,<表级完整性约束>]);例:CREATETABLEstudent(SnoCHAR(5)NOTNULLUNIQUE,SnameCHAR(20)UNIQUE,SsexCHAR(1),Sa

geINT,SdeptCHAR(15));数据定义(续II)生成的学生表student结构如下:关系描述为:Student(Sno,Sname,Ssex,Sage,Sdept)学生表此外,再定义学生_课程数据库的另两个表:Course(Cno,Cname,Cpno,Ccredit)课程表SC(Sn

o,Cno,Grade)学生选课表SnoSnameSsexSageSdept200201王海川男21Eng200202李军男19Com200203李小玢女20Mat200204刘祥男18Eng200205方晓女22Com2

00206高蕾蕾男20Eng200207陈蒈女18Eng200208祁建国男17Mat数据定义(续III)关于数据类型:具体依DBMS而定基本数据:Integer(或INT),SmallintDecimal(p,n)(或DEC),FLOATChar(n)定长串,Varchar(n

)变长串Date,Time,Timestamp(日期加时间)等扩展数据类型,不同数据库管理系统的不一样BLOBObjectTypeGeneral等列约束:Primarykey,Unique,Notnull,Foreignkey,defa

ultvalue数据定义(续IV)修改基本表ALTERTABLE格式:ALTERTABLE<表名>[ADD<列名><数据类型>[完整性约束]][DROP<完整性约束>][MODIFY<列名><数据类型>];例:ALTERTABLEStudentADDSaddvarchar(2

0);ALTERTABLEStudentDROPUNIQUE(Sname);ALTERTABLEStudentMODIFYSageSmallint;数据定义(续V)删除基本表DROPTABLE格式:DROPTABLE<表名>例:DROPTABLEstudent基表定义一

旦删除,表中数据、表索引和视图均自动删除。数据定义(续VI)建立、删除索引建立索引格式:CREATE[UNIQUE][CLUSTER]INDEX<索引名>ON<表名>(<列名>,[<次序>][,<列名>[<次序>]]…);次序:ASC升序

(缺省)DESC降序UNIQUE不索引重复记录CLUSTER聚族索引。对表中记录依列名进行了排序,一个表只能有一个聚族索引,加快检索,但插入时要重排序。例:CREATECLUSTERINDEXStuSna

meONStudent(sname)删除索引格式:DROPINDEX<索引名>查询查询是数据库的核心操作。SQL提供Select语句进行数据库查询(检索)。查询格式:Select[ALL/DISTINCT]<输出属性列

表>From<一个或多个数据库表或视图>Where<条件>GroupBy<分组条件>Having<选择组条件>OrderBy<结果排序>根据查询数据的来源,可以分为单表查询和复表查询。单表查询例:SELECT*F

ROMstudent无条件SELECTSno,SnameFROMstudent有条件WHERESage>20ORDERBYSage查询(续I)ALL与DISTINCT语句ALL(缺省)查询结果包含重复行时,保留重

复行;selectSnofromsc与selectALLSnofromsc等价。DISTINCT查询结果包含重复行时,去除重复行;selectSnofromsc与selectDISTINCTSnofromstudent不同。<输出属性列表>处*的用法—表示查询全部列;例:select*from

student等价于selectsno,sname,ssex,sage,sdeptfromstudent查询表达式列;例:selectsname,2002-sagefromstudentselects

name,„YearofBirth:‟,2002-Sage,ISLOWER(Sdept)fromstudent查询(续II)指定查询结果的列标题:例:selectsnameName,2002-sageBIRTHfromstudent或s

electsnameasName,2002-sageasBIRTHfromstudent关于where<条件>;无where子句——认为“条件为真”例:select*fromstudent等价于select*fromstudentwheresage>0比较运算符=、>、<、>=、<=、!

=OR<>、!>、!<逻辑运算符AND——与、OR——或、NOT——非select*fromstudentwheresage>18ANDsdept=„Com‟;select*fromstudentwheresage>18ORsdept=„Ma

t‟;select*fromstudentwhereNOTsage>18查询(续III)范围运算符(NOT)BETWEEN….AND…查找属性值(不)在指定范围内的元组Select*fromstudentwhereSAGEBETWEEN19AND23;S

elect*fromstudentwhereSAGENOTBETWEEN19AND23;确定集合(NOT)IN谓词查找属性值(不)属于指定集合的元组Select*fromstudentwheresdeptIN(„Com‟,‟Mat‟);Select*fr

omstudentwheresdeptNOTIN(„Eng‟);查询(续IV)字符匹配查找指定的属性列与<匹配串>相匹配的元组。[NOT]LIKE„<匹配串>‟[ESCAPE‟<换码字符>„]<匹配串>可以是:完整的字符串:需完全匹配此时,可

以用=取代LIKE,用!=或<>取代NOTLIKE。通配符:%任意字符串;_任意单字符(一个汉字用两个_)Select*fromstudentwheresnameLIKE„刘__„;Select*fromstudentwheresnameLIKE„刘%„;当匹配串中含有%或_时,需

转义:Select*fromstudentwheresnameLIKE„刘\_%„Escape„\‟此时,\为换码字符,跟在\后的字符”_”不再具有通配符含义。试分析:LIKE„DB\_%i__‟ESCAPE‟\‟查询(续V)

空值——ISNULL(=NULL)Select*fromscwheregradeISNULLIS不能用=代替多重条件查询逻辑运算符AND和OR可以用来连接多个查询条件。selectSnamefromstudentwhereSdept=„Com‟ANDSage<20对结果集

进行排序ORDERBY<属性列1>[,<属性列2>…]ASC(DESC)Select*fromscwheregradeNOTISNULLORDERBYgradeDESC对查询进行分组Select*fromSCGROUPBYCNO;Select*fromSCG

ROUPBYSNOHAVINGCOUNT(*)>3HAVING条件只能作用组;WHERE作用于表、视图。查询(续VI)一些集函数记数COUNT([DISTINCT|ALL]*)统计元组个数COUNT([DISTINCT|ALL]<列名>)统计一列中值的个数求和SUM([DI

STINCT|ALL]<列名>)求平均AVG([DISTINCT|ALL]<列名>)求最大MAX([DISTINCT|ALL]<列名>)求最小MIN([DISTINCT|ALL]<列名>)这里,ALL和DISTINCT的含义见前述。

查询实例SELECTSNO,CNO,GRADEFROMSC;怎样同时得到学生名和其所选的课程名?回忆关系的连接(笛卡尔积?)复表查询连接查询概述分为:等值、自然、非等值、自身、外连接、复合条件连接条件:[<表名1>].<列名1><比

较运算符>[<表名2>].<列名2><,>,=,<=,>=…Between…AND…列名即连接字段连接的结果为两表笛卡尔积的子集复表查询(续I)等值连接selectstudent.*,sc.*fromstudent,scwherestudent.sno=c.sno;注:无

WHERE条件时的结果为广义笛卡尔student.SNOSNAMESSSAGESDEsc.SNOCNOGRADE95001李勇男20CS9500119295001李勇男20CS9500128595001李勇男20CS9500138895002刘晨女19I

S9500229095002刘晨女19IS95002380如果属性名在参加连接的各表中是唯一的,则可以省略表名前缀。复表查询(续II)自然连接selectstudent.sno,sname,ss,sage,s

de,cno,gradefromstudent,scwheresc.sno=student.sno;注:等值连接中去掉重复的属性列student.SNOSNAMESSSAGESDECNOGRADE95001李勇男20CS19295001李勇男20CS285950

01李勇男20CS38895002刘晨女19IS29095002刘晨女19IS380复表查询(续III)自身连接(INNERJOIN)selectfirst.cno,second.cpnofromcoursefir

st,coursesecondwherefirst.cpno=second.cno;注:表别名,表内列参照本表的码cnocpno173556结果复表查询(续IV)外连接(OUTERJOIN)右外连接------RIGHTOUT

ERJOIN------左连接Selectstudent.sno,sname,ss,sage,sde,cno,gradefromstudent,scwherestudent.sno=sc.sno(*);有的

用+注:为符号*所在边的表增加一个”万能”行,这个行全部由空值组成。它可以和另一个边的表中所有不满足连接条件的元组进行连接。student.SNOSNAMESSSAGESDECNOGRADE95001李勇男20CS19295001李勇男20CS28595001李勇男

20CS38895002刘晨女19IS29095002刘晨女19IS38095003王敏女18MA95004张立男19IS复表查询(续V)左外连接------LEFTOUTERJOIN------右连接Selectstudent.sno,sname,ss,sage,sde,cno,grad

efromstudent,scwherestudent.sno(*)=sc.sno;student.SNOSNAMESSSAGESDECNOGRADE95001李勇男20CS19295001李勇男20CS28595001

李勇男20CS38895002刘晨女19IS29095002刘晨女19IS380符号*的含义见前面说明。复表查询(续VI)复合条件连接SELECTSTUD.SNO,SNAME,CNAME,GRADEFROMSC,STUDENTSTUD,COURSEWHERESC.SNO=

STUD.SNOANDSC.CNO=COURSE.CNO注:多表;多谓词;stud.SNOSNAMECNAMEGRADE95001李勇数据库9295001李勇数学8595001李勇信息系统8895002刘晨数学909500

2刘晨信息系统80复表查询(续VII)嵌套查询在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询。处理方法:

由里向外。即每个子查询在上一级查询处理之前求解,其结果用于建立其父查询的查找条件。例:查询与”刘晨”在同一个系的学生(分两步)确定“刘晨”所在的系;SELECTSdeptFROMStudentWHERESname='

刘晨';结果:SdeptIS查找所有在IS系学习的同学;SELECTSno,Sname,SdeptFROMStudentWHERESdept=„IS„;结果:SnoSnameSdept95001刘晨IS95004张立IS复表查询(续VIII)将第一

步查询嵌入到第二步查询的条件中,构造嵌套查询。SELECTsno,sname,sdeptFROMStudentWHERESdeptIN(SELECTSdeptFROMStudentWHEREsname=„刘晨’);

注:谓词IN——子集;外层——父查询;内层——子查询;ORDERBY只能用于最终查询结果,不能用于子查询。嵌套查询中,子查询的结果往往是一个集合,因此谓词IN是嵌套中最常用的谓词。若子查询结果返回的是单值,也可以使用关系运算符来表达查询条件。如上述SQL语句又可

以定义为:SELECTsno,sname,sdeptFROMStudentWHERESdept=(SELECTSdeptFROMStudentWHEREsname=„刘晨’);当然,如果Student表中若有重名“刘晨”,则就不能使用关系运算符=。复表查询(续IX)谓词I

N例:查询选修了“信息系统”的学生学号和姓名SELECTsno,snameFROMstudentWHEREsnoIN(SELECTsnoFROMscWHEREcnoIN(SELECTcnoFROMcourseWHEREcname=„信息系统’));注:不相关子查询,

子查询仅执行一次,内层不依赖外层查询比较运算符当用户能确切知道内层查询返回的是单值时,可以用>、<、=、>=、<=、!=或<>等比较运算符。此外,子查询一定要跟在比较运算符之后。复表查询(续X)谓词ALL、ANY例:查询比信息系所有学生年龄都小的学生SEL

ECTsname,sageFROMstudentWHEREsage<ALL(SELECTsageFROMstudentWHEREsdept='IS')ANDsdept<>'IS';>ANY大于查询结果中的某个值>ALL大于查询结果中的所有值<ANY<ALL>=ANY>=ALL<=

ANY<=ALL=ANY=ALL!=(或<>)ANY!=(或<>)ALL复表查询(续XI)谓词EXISTS例:查询所有选修了1号课的学生姓名SELECTsnameFROMstudentWHEREEXISTS(SELECT*FROMSCWHEREsno=

student.snoANDcno='1');注:EXISTS不返回行,产生逻辑值TRUE或FALSE;存在;相关子查询——子查询依赖父查询的属性值,需执行多次。使用EXISTS后,若内层查询结果非空,则外层的WHERE子句返回真

值,否则返回假值。由EXISTS引出的子查询,其目标表达式通常都用*,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义。与EXISTS相对应的是NOTEXISTS谓词。复表查询(续XII)集合查询对多个select语句的结果进

行集合操作UNION并操作将两个查询结果的行组合起来,去掉重复元组。例:查询计算机系的学生及年龄不大于19岁的学生。SELECT*FROMstudentWHERESdept='CS'UNIONSELECT*

FROMstudentWHEREsage<=19;等价于:SELECT*FROMstudentWHERESdept='CS'ORsage<=19参加UNION操作的各结果表的列数必须相同;对应项的数据类型也必须相同。

复表查询(续XIII)MINUS差操作从左查询结果中去除那些属于右查询结果的行。例:查询年龄不大于19岁的非计算机系学生。SELECT*FROMstudentWHEREsage<=19MINUSSELECT*FROMst

udentWHERESdept='CS';等价于:SELECT*FROMstudentWHERESdept<>'CS'ANDsage<=19参加MINUS操作的各结果表的列数必须相同;对应项的数据类型也必须相同。该操作在标准SQL中没有直接提供,可用其它方法实现。复表查询(续XIV)IN

TERSECT交操作将既属于左查询结果又属于右查询结果的行组成的结果。例:查询计算机系中年龄不大于19岁的学生。SELECT*FROMstudentWHEREsage<=19INTERSECTSELECT*FRO

MstudentWHERESdept=„CS';等价于:SELECT*FROMstudentWHERESdept='CS'ANDsage<=19参加INTERSECT操作的各结果表的列数必须相同;对应项的数据类型也必须相同。该操作在标准SQL中没有直接提供,可用其

它方法实现。数据更新更新——插入、修改、删除数据插入INSERT通常有两种形式:插入一个元组,插入子查询结果(可能为多个元组)。插入单个元组INSERTINTO<表名>[(<属性列1>)[,<属性列2>]…)]VALUES(<常量1>[,<常量2>]…);例1:INSERT

INTOstudentVALUES(„95020‟,„陈冬’,男’,18,„IS‟);例2:INSERTINTOsc(Sno,Cno)VALUES(„95020‟,‟1‟);INTO子句中没有出现的属性列,新记录中取空值;表定义中NOTNUL

L的属性列不能取空值;若INTO子句中没有指明任何列名,则新插记录必须在每个属性列上均有值。数据更新(续I)插入子查询结果集INSERTINTO<表名>[(<属性列1>)[,<属性列2>]…)]子查询例1:查询按系别的学生的平均年龄,并将结果存入数据库

。创建新表CREATETABLEDeptage(Sdeptchar(15),AverageSMALLINT);插入数据INSERTINTODeptage(Sdept,Average)SELECTSdept,AVG(Sage)FromStud

entGROUPBYSdept;数据更新(续II)修改UPDATEUPDATE<表名>SET<列名>=<表达式>[,<列名>=<表达式>]…[WHERE<条件>];修改单个元组值;UPDATEStudentSETSage=22WH

ERESno=„95001‟;修改多外元组;UPDATEStudentSETSage=Sage+1;带子查询修改语句;例:将计算机系全体学生的成绩赋0。UPDATESCSETGrade=0WHERE„

CS‟=(SELECTSdeptFROMStudentWHEREStudent.Sno=SC.Sno);数据更新(续III)删除DELETEFROM<表名>[WHERE<条件>];单个元组值;DE

LETEFROMStudentWHERESno=„95019‟;多个元组;DELETEFROMSC;带子查询的删除语句;例:删除计算机系全体学生的选课记录。DELETEFROMSCWHERE„CS‟=(SELECTSdeptFROMStudentWHEREStud

ent.Sno=SC.Sno);数据更新(续IV)更新与数据库的一致性插入时:INSERTINTOSCVALUES(9999,9);修改时:主键一般不能修改;UPDATE也可引起不一致,例修改SC表CNO删除时:D

ELETEFROM<表名>[WHERE<条件>];数据库系统通常都引入事务(Transaction)管理的机制来解决数据的一致性问题。此外关系统还自动支持实体完整性及参照完整性两类完整性约束条件。数据更新(续V)删除时:事务(TRANSACTION)1.De

letefromstudentwheresno=95019;2.Deletefromscwheresno=95019;注:若中间中断,则产生不一致,完整性破坏删除策略例:Deletefromstudentwheresno=950

19;1)自动删除SC表中的相关记录;2)不可删除主表中的该记录,操作失败;视图视图从一个或几个基表(或视图)导出的表。视图是虚表;数据库中只存放视图定义,而不存放视图对应的数据;视图一经定义,就可以和基本表一样被查询、删除。

定义视图建立视图CREATEVIEW<视图名>[(<列名>[,<列名>]…)]AS子查询[WITHCHECKOPTION];子查询通常不允许含有ORDERBY子句和DISTINCT短语;组成视图的属性列或全部省略或全部指定;[

WITHCHECKOPTION]以后更新时的子查询条件表达式。例:建立信息系学生的视图。CREATEVIEWIS_S1ASSELECTSno,Sname,SageFROMStudentWHERESdep

t=„IS‟;视图(续I)CREATEVIEWIS_S2——从视图导出ASSELECTSno,Sname,SageFROMIS_S1WHERESage>19;CREATEVIEWBT_S(SNO,SNAME,SBIRTH)——虚拟列(带表达式)ASSELECTSno,Sname,200

2-SageFROMstudent;视图(续II)CREATEVIEWS_G(SNO,Gavg)——使用集函数ASSELECTSNO,AVG(Grade)FROMSCGROUPBYSno;删除视图dropview<视图名>视图删除后,其定义从数据字典中删除;基本表删除后,导出的

视图虽没有删除,但不能使用。例:dropviewis_s2;视图(续III)查询视图视图定义后,可以象对基本表一样进行查询操作。DBMS执行视图查询时,先进行有效性检查,检查查询的表、视图是否存在。如存在,则从数据字典中取出视图的定义,

转换为等价的对基本表的查询,再执行修正后的查询。又称视图溶解。SELECTSNO,SAGEFROMIS_S1WHERESAGE<20;更新视图UPDATEIS_Student——更新,修改SETsname=„刘辰’WHERESNO='95002';视图(续IV)INSERTINTOIS

_STUDENT——插入(withcheckoption!)VALUES(„95029‟,„赵信’,20);CREATEVIEWIS_StudentASSELECTsno,sname,sageFROMstudentWHERESd

ept='IS';INSERTINTOIS_STUDENTVALUES('95029','赵信',20);可以通过定义视图中添加WITHCHECKOPTION子句,以使DBMS在视图增删改数据时检查视图定义中的条件。视图(续V)视图作用视图可简化用

户操作——只关注自已想关注的部分;使用户能以多种角度看待同一数据;提供了一定的逻辑独立性;可对机密数据提供安全保护;(外模式)视图(续VI)外模式可为视图或表数据控制数据控制功能事务管理(恢复、并发控制)数据保护(安全性、完整性)以下主要讨论安全性控制功能

。授权GRANT收权REVOKE角色(ROLER):在ORACLE等中,多个权的组合定义一个角色,在管理中将的不同的角色分配给不同的用户或组。数据控制(续I)不同对象类型的操作权限:对象对象类型操作权限属性列TABLESELECT,INSERT,U

PDATE,DELETE,ALLPRIVILEGES视图TABLESELECT,INSERT,UPDATE,DELETE,ALLPRIVILEGES基本表TABLESELECT,INSERT,UPDATE,DELETE,ALTER,INDEX,ALLPRIVILEGES数据库DATABASE

CREATETAB例:把查询Student表的权限授给用户X1,并允许将此权限再授予其他用户。GRANTSELECTONTABLEStudentTOX1WITHGRANTOPTION;把查询Student表和修改学生学号的权限授给用户X4。GRANTUPDATE(Sno),SELECTO

NTABLEStudentTOX4;把用户X4修改学生学号的权限收回。REVOKEUPDATE(Sno)ONTABLEStudentFROMX4;嵌入式SQL问题:高级语言:处理过程性的事务,char,int,float;S

QL:描述性的语言,处理元组的集合,;实际事务:带有过程性的大量元组集合的处理;因此:将SQL嵌入高级语言(宿主语言)中实现方式:1)扩充宿主语言的编译器,使之能处理SQL;2)预编译(C+SQLC目标码)嵌入式SQL(续I)

嵌入式SQL(续II)SQL——数据库中数据的操作;高级语言——根据SQL及其它状态决定程序的执行流程;高级语言HOWTOGET状态?共享变量(SQLCA——SQLCommunicationArea)双方都可访问的内存区,即SQL和高级语言的接口

)例SQK2:SQLSTATE是一个特殊共享变量,保存有当前SQL语句的执行状态;其为5个字符组成的字符数组;其为不同值的表示不同的含义,如为“00000”时,表示执行成功;嵌入式SQL(续III)嵌入式SQL的使用规定在宿主语言中的SQL应以EXECSQL开头,END_EXEC结束

(COBOL),C中以;结束;SQL中可引有宿语中的变量,但引用这些变量前应有“:”,并且由宿语定义;例:EXECSQLBEGINDECLARESECTION;Charsno[5],name[9];CharSQLSTATE[6];EXECSQLENDDECLARESECTION;使用游

标CURSOR不逐行取得SQL结果集中的行;(宿——不能直接处理元组的集合)游标定义:EXECSQLDECLARE<CUR_NAME>CURSORFOR<SELECTSTATEMENT>END_EXE

C嵌入式SQL(续IV)嵌入式SQL的使用规定定义后SQL并不执行,只有打开其时才执行,并且此时CURSOR指向查询结果的第一行之前;语法:EXECSQLOPEN<CUR_NAME>END_EXEC游标的移动

与取得行值;EXECSQLFETCHFROM<CUR_NAME>INTO变量名表END_EXEC游标的关闭,释放资源,游标不再和查询结果集相联系;EXECSQLCLOSE<cur_name>END

_EXEC嵌入式SQL(续V)不涉及游标的SQL有些SQL语句并不返回结果集,或仅返回一行,故可不涉及CURSOR。例:EXECSQLSELECTSNAME,SAGE,SSEXINTO:SN,

:SA,:SSFROMSWHERES#=:GIVENNO;EXECSQLINSERTINTOS(SNO,SNAME,SAGE)VALUES(:GIVENNO,:SN,:SA);DELETE,UPDATEetc.嵌入式SQL(续VI)涉及游标的SQLSELECT的查询结

果集(多个元组);例:#defineNO_MORE_TUPLES!(STRCMP(SQLSTATE,“02000”))voidsel(){EXECSQLBEGINDECLARESECTION;charsno[5],cno

[5],givensno[5],SQLSTATE[6];intg;EXECSQLENDDECLARESECTION;EXECSQLDECLAREscxCURSORFORSELECTSNO,CNO,GRADEFROMSCWHERESNO=:givensnoEX

ECSQLOPENscx;while(1){嵌入式SQL(续VII)涉及游标的SQLEXECSQLFETCHFROMscxINTO:sno,:cno,:g;if(NO_MORE_TUPLES)break;printf(“%s,%s,

%d”,sno,cno,g);}EXECSQLCLOSEscx;}对游标指向元组的修改或删除操作(CURSOR活动状态时)例:while(1){EXECSQLFETCHFROMscxINTO:sno,:cno,:g;i

f(NO_MORE_TUPLES)break;if(g<60)嵌入式SQL(续VIII)涉及游标的SQLEXECSQLDELETEFROMscWHERECURRENTOFscx;else{if(g<70){EXECSQLUPDATEscSETgrade=70WHERECURRENTOFscx;g

=70;}printf(“%s,%s,%d”,sno,cno,g);}}DBMS操作入门FoxproXbase系列的换代产品,为MS面向PC中小型DBMS,在我国有广泛的用户。特点:1)适于单机中小MIS用户;2)具有DBMS功能,同时可在其上开发

独立的应用软件。例我院财务处MIS。SQLServer介于Oracle和Foxpro之间的一个中型的DBMS,基于NT,在我国很有市场。特点:1)适于多用户下的Intranet环境;2)具有安全验证、数据备份恢复等Foxpro所不具有的

DBMS必备功能;3)没有独立开发应用的能力,须结合其它开发工具,例VC、VB、PB、BCB等。例图书馆SQL+FoxproOracle商用DBMS的佼佼者,其功能强大,护展性强,可运行于大型机、小型机、工

作站以及PC等各种硬件平台和UNIX、NT、Linux及WIN9X等各种OS之上。特点:1)适于高端用户的关键应用,如银行、民航铁路等OLTP业务,海量数据的管理DataWarehouse等。例教务处SCO+OracleD

BMS操作入门(续I)其它Access——桌面DBMS(VB+ACCESS)Interbase/Parodox——小型,BCB+~Sybase——Oracle的强有力竞争者,PB+Sybase铁路、电力DB2——IBM的DBMS,中国人民银行广东分行Informix——大型

DBMS常用开发工具:VB,Delphi,C++Builder,PowerBuilder,Access,Foxpro等

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 6209
  • 被下载 8
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?