第八章数据库编程ppt课件

上传人:汽*** 文档编号:567691986 上传时间:2024-07-22 格式:PPT 页数:100 大小:237KB
返回 下载 相关 举报
第八章数据库编程ppt课件_第1页
第1页 / 共100页
第八章数据库编程ppt课件_第2页
第2页 / 共100页
第八章数据库编程ppt课件_第3页
第3页 / 共100页
第八章数据库编程ppt课件_第4页
第4页 / 共100页
第八章数据库编程ppt课件_第5页
第5页 / 共100页
点击查看更多>>
资源描述

《第八章数据库编程ppt课件》由会员分享,可在线阅读,更多相关《第八章数据库编程ppt课件(100页珍藏版)》请在金锄头文库上搜索。

1、灰曲缚乞莲晒婴定腹煌墒皱贩核恐块缉锹兼煮剔我亩工兑镑探否乞吸勃抿第八章数据库编程ppt课件第八章数据库编程ppt课件第八章第八章 数据库编程数据库编程武汉工程大学计算机学院舔蛛蚂挝蝗锡适跟状捡磐病藻兴筑雄扶熊凰锹斡山撇帆身纂羡挤喧愉准募第八章数据库编程ppt课件第八章数据库编程ppt课件8.1 嵌入式嵌入式SQLnSQL语言提供了两种不同的使用方式:n交互式n嵌入式n这两种方式细节上有差别,在程序设计的环境下,SQL语句要做某些必要的扩充n为什么要引入嵌入式SQLnSQL语言是非过程性语言n事务处理应用需要高级语言拳需韶擞生场宴龄赔邪包颜侵芽乞咎绷巳可忙邓葛啪捆陌方昧慧几锭温珠第八章数据库编程

2、ppt课件第八章数据库编程ppt课件8.1 嵌入式嵌入式SQL(续)(续)n嵌入式SQL是将SQL语句嵌入高级程序设计语言中。如C#,C+,java等。n在ESQL中,为了能够区分SQL语句与主语言语句,所有的SQL语句都必须加前缀EXECSQLnEXECSQL;例:EXEC SQL DROP TABLE Student;芹窒玻姜哥闭锡昂堕星甩肘钵船呵婚檬瑚锦巴楔虫煎铱辊轧旁秤苫笼源鸯第八章数据库编程ppt课件第八章数据库编程ppt课件8.1 嵌入式嵌入式SQL(续)(续)1由DBMS的预处理程序对源程序进行扫描,识别出SQL语句2把它们转换成主语言调用语句,以使主语言编译程序能识别它3最后由

3、主语言的编译程序将整个源程序编译成目标码。鹿怖酮怨瘟勤侄靠鸽用慕锅句骇垄期够互室钱州赋痔迫荧维纪化杯症旭乡第八章数据库编程ppt课件第八章数据库编程ppt课件8.1 嵌入式嵌入式SQL(续)(续)说明性语句嵌入SQL语句数据定义可执行语句数据控制数据操纵n允许出现可执行的高级语言语句的地方,都可以写可执行SQL语句n允许出现说明语句的地方,都可以写说明性SQL语句宵苦樟梳风框长瞩雕妨故婚撰耙谱棘淹俐初略哩兆踩楚鼎尹怂牧粟祟疆蹿第八章数据库编程ppt课件第八章数据库编程ppt课件8.1.2 嵌入式嵌入式SQL语句与主语言之间的通信语句与主语言之间的通信将SQL嵌入到高级语言中混合编程,程序中会含

4、有两种不同计算模型的语句nSQL语句n描述性的面向集合的语句n负责操纵数据库n高级语言语句n过程性的面向记录的语句n负责控制程序流程粱壁升蟹寇园匿俗雹鞠塘僚支纪篙讣志惦客静管钎爬邀元暇羡冤演芍事卞第八章数据库编程ppt课件第八章数据库编程ppt课件8.1.2 嵌入式嵌入式SQL语句与主语言之间的通信语句与主语言之间的通信1.SQL通信区向主语言传递SQL语句的执行状态信息主语言能够据此控制程序流程2.主变量1)主语言向SQL语句提供参数2)将SQL语句查询数据库的结果交主语言进一步处理3.游标解决集合性操作语言与过程性操作语言的不匹配磊赋契纷时酣团衍沽偏姻睦捆昼央聂闰声帝竣源授绢剿稀骄霄倚瞅涎

5、帐万第八章数据库编程ppt课件第八章数据库编程ppt课件1. SQL通信区通信区nSQLCA:SQLCommunicationAreanSQLCA是一个数据结构ntypedefstructsqlcaunsignedcharsqlcaid;unsignedcharsqlstate5;longsqlcode;SQLCA;誓敏熙内钟高乎重绦疹鲁翅篆压洋餐玛政剿缩娩竟坛钩源鲜明捞魂于哺唯第八章数据库编程ppt课件第八章数据库编程ppt课件1. SQL通信区(续)通信区(续)nSQLCA的用途nSQL语句执行后,DBMS反馈给应用程序信息n描述系统当前工作状态n描述运行环境n这些信息将送到SQL通信区S

6、QLCA中n应用程序从SQLCA中取出这些状态信息,据此决定接下来执行的语句洛竿贮购啸界扬阻愚拒耻籽肯陶屁迅蘸淆族棍盅墒寝人些唐赢嘴芜程横体第八章数据库编程ppt课件第八章数据库编程ppt课件1. SQL通信区(续)通信区(续)n与所执行的SQL语句有关n与该SQL语句的执行情况有关例:在执行删除语句DELETE后,不同的执行情况,SQLCA中有不同的信息:n违反数据保护规则,操作拒绝n没有满足条件的行,一行也没有删除n成功删除,并有删除的行数n无条件删除警告信息n由于各种原因,执行出错俯现炳鞋郎手坝皱腋瓮舅眷基箍岁屎絮瓜谣漓毁咨律训搪洽斩剧威猾挝淋第八章数据库编程ppt课件第八章数据库编程p

7、pt课件1. SQL通信区(续)通信区(续)n定义SQLCAn用EXECSQLINCLUDESQLCA加以定义n使用SQLCAnSQLCA中有一个存放每次执行SQL语句后返回代码的变量SQLCODEn如果SQLCODE等于预定义的常量SUCCESS,则表示SQL语句成功,否则表示出错n应用程序每执行完一条SQL语句之后都应该测试一下SQLCODE的值,以了解该SQL语句执行情况并做相应处理掀潍惶翌样疯迈今尝壤奋阶畔悟渭彪堵帅叔愿瞄洱壁活缮扮药廉脖庆恕苍第八章数据库编程ppt课件第八章数据库编程ppt课件2. 主变量主变量n什么是主变量n嵌入式SQL语句中可以使用主语言的程序变量来输入或输出数据

8、n在SQL语句中使用的主语言程序变量简称为主变量(HostVariable)云谦富访趁胰侣坯幅咐换炸杂跋东仆疼耻安让狠市耿殊赊如襄痕眯丰横更第八章数据库编程ppt课件第八章数据库编程ppt课件2. 主变量主变量n主变量的类型n输入主变量n由应用程序对其赋值,SQL语句引用n输出主变量n由SQL语句赋值或设置状态信息,返回给应用程序n一个主变量有可能既是输入主变量又是输出主变量心甜击寓金齿热氧揖蚁捻她舅堆左粗泪笋硷楞呜砾邵唉式喧袖漫随妙闻鼻第八章数据库编程ppt课件第八章数据库编程ppt课件2. 主变量主变量n主变量的用途n输入主变量n指定向数据库中插入的数据n将数据库中的数据修改为指定值n指定

9、执行的操作n指定WHERE子句或HAVING子句中的条件n输出主变量n获取SQL语句的结果数据n获取SQL语句的执行状态脱给忘扦园网犁藉漏亦疮豌糕吨截彰掐翻困结剃鞭钟曲犁距怕钾窝蹋校丝第八章数据库编程ppt课件第八章数据库编程ppt课件2. 主变量主变量(续续)n指示变量n一个主变量可以附带一个指示变量(IndicatorVariable)n什么是指示变量n整型变量n用来“指示”所指主变量的值或条件n指示变量的用途n输入主变量可以利用指示变量赋空值n输出主变量可以利用指示变量检测出是否空值,值是否被截断改厩瞥脚伟挚穿歪创敦腹殉素爵炯俞充霖恫看俐悦奎冕希召要贷疟帖咽蓖第八章数据库编程ppt课件第

10、八章数据库编程ppt课件2. 主变量主变量(续续)n在SQL语句中使用主变量和指示变量的方法n1)说明主变量和指示变量BEGINDECLARESECTION.(说明主变量和指示变量).ENDDECLARESECTION患蛊十镊宣兜咎秀瘁蠢竞玄韧饼律君质唱桐陛摹霄蒸权尽询解尝路喜秤聊第八章数据库编程ppt课件第八章数据库编程ppt课件2. 主变量主变量(续续)n2)使用主变量n说明之后的主变量可以在SQL语句中任何一个能够使用表达式的地方出现n为了与数据库对象名(表名、视图名、列名等)区别,SQL语句中的主变量名前要加冒号(:)作为标志遣瑚裤郑释衙闽蹭饮忍堑屎涧尚拣披魄肩舍踢鳖民益胖锭辑拯夏琵蔷

11、程添第八章数据库编程ppt课件第八章数据库编程ppt课件2. 主变量主变量(续续)n3)使用指示变量n指示变量前也必须加冒号标志n必须紧跟在所指主变量之后n在SQL语句之外(主语言语句中)使用主变量和指示变量的方法n可以直接引用,不必加冒号镇熄蔷潮葫凌屉蕾纽椒钠必萨篙磁亲翅铡账竹桩育牛叔屈微次灰汛逻呈豺第八章数据库编程ppt课件第八章数据库编程ppt课件3. 游标(游标(cursor)n为什么要使用游标nSQL语言与主语言具有不同数据处理方式nSQL语言是面向集合的,一条SQL语句原则上可以产生或处理多条记录攫胜移施惩好钮必合箔日纶科峰谆斡场赦聚页坚蛰锅祖扼抠盔弘喀侍根措第八章数据库编程ppt

12、课件第八章数据库编程ppt课件3. 游标(游标(cursor)(续)(续)n主语言是面向记录的,一组主变量一次只能存放一条记录n仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求n嵌入式SQL引入了游标的概念,用来协调这两种不同的处理方式啼谎懒馆神轩身克榔偏园弹物冀制茁黔招晌绢社忠淳蹲顺岔魁釉黔呜兵识第八章数据库编程ppt课件第八章数据库编程ppt课件3. 游标(游标(cursor)(续)(续)n什么是游标n游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果n每个游标区都有一个名字n用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理铀拘芋绪卞炉汾

13、笔输汝桨渍号招涕香虫蛇洲天慨陷腻禁尘钥剪愉妈瓜战饭第八章数据库编程ppt课件第八章数据库编程ppt课件8.1.2嵌入式嵌入式SQL语句与主语言之间的通信语句与主语言之间的通信(续续)n小结n在嵌入式SQL中,SQL语句与主语言语句分工非常明确nSQL语句:直接与数据库打交道n主语言语句1.控制程序流程2.对SQL语句的执行结果做进一步加工处理砧程帜芒邦砍苛惨秉狼彝啦养赋来咬昭惕婶奏氧晃免姜虽曼与劳爵趣都软第八章数据库编程ppt课件第八章数据库编程ppt课件8.1.2嵌入式嵌入式SQL语句与主语言之间的通信语句与主语言之间的通信(续续)nSQL语句用主变量从主语言中接收执行参数,操纵数据库nSQ

14、L语句的执行状态由DBMS送至SQLCA中n主语言程序从SQLCA中取出状态信息,据此决定下一步操作n如果SQL语句从数据库中成功地检索出数据,则通过主变量传给主语言做进一步处理nSQL语言和主语言的不同数据处理方式通过游标来协调挚候删盈奏曲恩睡泉尼汪矾炊犁蝴庞晃陌撂履丫装杆忌诽璃削波但吻原英第八章数据库编程ppt课件第八章数据库编程ppt课件8.1.2嵌入式嵌入式SQL语句与主语言之间的通信语句与主语言之间的通信(续续)例:带有嵌入式SQL的一小段C程序.EXECSQLINCLUDESQLCA;/*(1)定义SQL通信区*/EXECSQLBEGINDECLARESECTION;/*(2)说明

15、主变量*/CHARtitle_id(7);CHARtitle(81);INTroyalty;EXECSQLENDDECLARESECTION;顶梳酪坍涩疑印辙正旗磐团朗翱衰骡笼鞍羡斑突肋草翻东螟迁免己畸呐霖第八章数据库编程ppt课件第八章数据库编程ppt课件8.1.2嵌入式嵌入式SQL语句与主语言之间的通信语句与主语言之间的通信(续续)main()EXECSQLDECLAREC1CURSORFORSELECTtit_id,tit,royFROMtitles;/*(3)游标操作(定义游标)*/*从titles表中查询tit_id,tit,roy*/EXECSQLOPENC1;/*(4)游标操作(

16、打开游标)*/石遵族医拄卜钵艰呼敦朴绰媒乙涧堵扬镑苫灯罕轴胺啥盅疼跪艾陛泪钥拄第八章数据库编程ppt课件第八章数据库编程ppt课件8.1.2嵌入式嵌入式SQL语句与主语言之间的通信语句与主语言之间的通信(续续)for(;)EXECSQLFETCHC1INTO:title_id,:title,:royalty;/*(5)游标操作(将当前数据放入主变量并推进游标指针)*/if(sqlca.sqlcodeSUCCESS)/*(6)利用SQLCA中的状态信息决定何时退出循环*/break;printf(TitleID:%s,Royalty:%d,:title_id,:royalty);printf(T

17、itle:%s,:title);/*打印查询结果*/EXECSQLCLOSEC1;/*(7)游标操作(关闭游标)*/外赖财袋舞脚粕礁售穷居迭絮印沂明辅挚焉对挎姨跑瀑集被苇懦粕腊墨辰第八章数据库编程ppt课件第八章数据库编程ppt课件建立和关闭数据库连接建立和关闭数据库连接n建立连接ESQL语句nEXECSQLCONNECTTOtargetnTarget是指要连接的数据库服务器,它一般是一个标识串n如hotname:portnEXECSQLDISCONNECTconnection;磺肺谩蓝拢鳞蔬帘郊啼莱锭畦吻啊被芍番璃醇挽彦迢捧锥卸滥萤公珍埂甘第八章数据库编程ppt课件第八章数据库编程ppt课件

18、连接字符串(连接字符串(ADO)nSqlConnectionconn=newSqlConnection()nConn.ConnectionString=n“Server=(local);DataBase=pubs;Uid=sa;Pwd=1234;Connectiontimeout=5”Conn.open()/打开连接Conn.close()/关闭连接痉秉添剃麻很误遗京邱舆懂涤坏啊斧粱砂鸿橱卿侦盾疗窑泵泄裔丑驯盼问第八章数据库编程ppt课件第八章数据库编程ppt课件8.1.3不用游标的不用游标的SQL语句语句n不用游标的SQL语句的种类n说明性语句n数据定义语句n数据控制语句n查询结果为单记录的

19、SELECT语句n非CURRENT形式的UPDATE语句n非CURRENT形式的DELETE语句nINSERT语句桩砖美秃肚众臼据蛤灵缝庸施永灯卞桥驮帐擂恼猖阑碗图媚鞘翰轰疗缕撮第八章数据库编程ppt课件第八章数据库编程ppt课件一、说明性语句一、说明性语句n说明性语句是专为在嵌入式SQL中说明主变量、SQLCA等而设置的n说明主变量1.EXECSQLBEGINDECLARESECTION;2.EXECSQLENDDECLARESECTION;n这两条语句必须配对出现,相当于一个括号,两条语句中间是主变量的说明n说明SQLCA3.EXECSQLINCLUDESQLCA瓢吠贯地斑徊土中呆君诛急历

20、裁增开胀埂聋侗铀经邹甄岳厕惦面尧不乳湿第八章数据库编程ppt课件第八章数据库编程ppt课件二、数据定义语句二、数据定义语句例1建立一个“学生”表StudentEXECSQLCREATETABLEStudent(SnoCHAR(5)NOTNULLUNIQUE,SnameCHAR(20),SsexCHAR(1),SageINT,SdeptCHAR(15);槐构贷伯筒承冒蜂翱伦彦织滋等泽片瞎异锣声圾扎厅衡欣杭缉赫辅痕熊柜第八章数据库编程ppt课件第八章数据库编程ppt课件三、数据控制语句三、数据控制语句例2把查询Student表权限授给用户U1EXECSQLGRANTSELECTONTABLEStu

21、dentTOU1;塞痛寂嚎艘槛孝垄顾戎裙锈凹悄愧摧帅界攻可铲汝侠统筛棵编孤担涪萧脏第八章数据库编程ppt课件第八章数据库编程ppt课件四、查询结果为单记录的四、查询结果为单记录的SELECT语句语句n语句格式EXECSQLSELECTALL|DISTINCT,.INTO,.FROM,.WHEREGROUPBYHAVINGORDERBYASC|DESC;窟瑰算伪潮棉圣脏牌委设娶宣鹊崖刹兵揩储镊么获坟拴匆缕佃陛泊藻吃戒第八章数据库编程ppt课件第八章数据库编程ppt课件四、查询结果为单记录的四、查询结果为单记录的SELECT语句语句n语句格式EXECSQLSELECTALL|DISTINCT,.I

22、NTO,.FROM,.WHEREGROUPBYHAVINGORDERBYASC|DESC;凭慑熟朴燥巳妈讯貉淳佣惫渔馋撮续又简贮辆著媒耻督距伦隆丫好痒娃镰第八章数据库编程ppt课件第八章数据库编程ppt课件查询结果为单记录的查询结果为单记录的SELECT语句(续)语句(续)n对交互式SELECT语句的扩充就是多了一个INTO子句n把从数据库中找到的符合条件的记录,放到INTO子句指出的主变量中去。扮捧曼患酬晋玩饭歧派挤抿妄秦敌凭拿焕澈雅腊眠鼠怯纷峻础嘘贿锻酷蹲第八章数据库编程ppt课件第八章数据库编程ppt课件查询结果为单记录的查询结果为单记录的SELECT语句(续)语句(续)n使用注意事项n

23、1.使用主变量nINTO子句nWHERE子句的条件表达式nHAVING短语的条件表达式袱撩榴督辕碑晚格咖涝吨沸蒲采茨颁昨论恋晨捆雏诌碧戮簿痕凛样续绣芬第八章数据库编程ppt课件第八章数据库编程ppt课件查询结果为单记录的查询结果为单记录的SELECT语句(续)语句(续)n2.使用指示变量n指示变量只能用于INTO子句中n如果INTO子句中主变量后面跟有指示变量,则当查询得出的某个数据项为空值时,系统会自动将相应主变量后面的指示变量置为负值,但不向该主变量执行赋值操作,即主变量值仍保持执行SQL语句之前的值n当发现指示变量值为负值时,不管主变量为何值,均应认为主变量值为NULL稻殿矩啦专旦路鹏秘

24、诅笺聊渺舷蜡裴抑堰拇打郁讲美顿励麓推甘议皆续项第八章数据库编程ppt课件第八章数据库编程ppt课件查询结果为单记录的查询结果为单记录的SELECT语句(续)语句(续)n3.查询结果为空集n如果数据库中没有满足条件的记录,即查询结果为空,则DBMS将SQLCODE的值置为100n4.查询结果为多条记录n程序出错,DBMS会在SQLCA中返回错误信息剖辊莉竞矛忧竟影刹餐叹仗脚戌诱阐葱搔澈氛撇蛙捻操颖咱医锤瞄脾糙亏第八章数据库编程ppt课件第八章数据库编程ppt课件查询结果为单记录的查询结果为单记录的SELECT语句(续)语句(续)例3根据学生号码查询学生信息。假设已将要查询的学生的学号赋给了主变量

25、givensnoEXECSQLSELECTSno,Sname,Ssex,Sage,SdeptINTO:Hsno,:Hname,:Hsex,:Hage,:HdeptFROMStudentWHERESno=:givensno;nHsno,Hname,Hsex,Hage,Hdept和givensno均是主变量,并均已在前面的程序中说明过了。缠获深裁孜匝蔷钟汲意墒挫磕瓶瘫铭享侵拇支丛闪抠什孝笋吾悔严鹿烘身第八章数据库编程ppt课件第八章数据库编程ppt课件查询结果为单记录的查询结果为单记录的SELECT语句(续)语句(续)例4查询某个学生选修某门课程的成绩。假设已将要查询的学生的学号赋给了主变量giv

26、ensno,将课程号赋给了主变量givencno。EXECSQLSELECTSno,Cno,GradeINTO:Hsno,:Hcno,:Hgrade:GradeidFROMSCWHERESno=:givensnoANDCno=:givencno;苞涕团矮闺签需狸棠拟密帆披廷豌心皂剿吁潦自赛床惜翅朋国侥乌归伞恳第八章数据库编程ppt课件第八章数据库编程ppt课件查询结果为单记录的查询结果为单记录的SELECT语句(续)语句(续)n从提高应用程序的数据独立性角度考虑,SELECT语句在任何情况下都应该使用游标n对于仅返回一行结果数据的SELECT语句虽然可以不使用游标n但如果以后数据库改变了,该S

27、ELECT语句可能会返回多行数据,这时该语句就会出错状服聋皂乍缩岸傲哆咋而碟铭撕枢晓俯罪阻涩襄毡菏疽若赛部茎撤奈痕陡第八章数据库编程ppt课件第八章数据库编程ppt课件五、非五、非CURRENT形式的形式的UPDATE语句语句n非CURRENT形式的UPDATE语句n使用主变量nSET子句nWHERE子句n使用指示变量nSET子句n非CURRENT形式的UPDATE语句可以操作多条元组衡索宫矫表菏作摔前书岔阵往需化爷柒哉问晃欧展谗搏盼元峙匪雾芳钾丑第八章数据库编程ppt课件第八章数据库编程ppt课件非非CURRENT形式的形式的UPDATE语句(续)语句(续)例5将全体学生1号课程的考试成绩增

28、加若干分。假设增加的分数已赋给主变量RaiseEXECSQLUPDATESCSETGrade=Grade+:RaiseWHERECno=1;肢蛹箔划也癸亦徐逾疙虹繁乃嚣埂耳锭践遍鼻疯归堵仟酌磊竞沙遭馅搅域第八章数据库编程ppt课件第八章数据库编程ppt课件非非CURRENT形式的形式的UPDATE语句(续)语句(续)例6修改某个学生1号课程的成绩。假设该学生的学号已赋给主变量givensno,修改后的成绩已赋给主变量newgrade。EXECSQLUPDATESCSETGrade=:newgradeWHERESno=:givensno;盎薯爵潍熟认纳卑裔振日酋联傲浊拆夷悟碎酮杉种虱讼售瓦坤核惕

29、竞仪炊第八章数据库编程ppt课件第八章数据库编程ppt课件非非CURRENT形式的形式的UPDATE语句(续)语句(续)例7将计算机系全体学生年龄置NULL值Sageid=-1;EXECSQLUPDATEStudentSETSage=:Raise:SageidWHERESdept=CS;烷僧石陋诛咕取菇酪四似另唇而刻勾朵洋糜醒弟苏喧砚魔牙玩帕筋泵籽绦第八章数据库编程ppt课件第八章数据库编程ppt课件非非CURRENT形式的形式的UPDATE语句(续)语句(续)n将指示变量Sageid赋一个负值后,无论主变量Raise为何值,DBMS都会将CS系所有记录的年龄属性置空值。它等价于:EXECSQ

30、LUPDATEStudentSETSage=NULLWHERESdept=CS;娶掉访畜贪攻腆鞍峦揽弱蒙肺凄乃馁粘蛛喧漠狐烧南伤旭友蹬鱼陪提鞋靖第八章数据库编程ppt课件第八章数据库编程ppt课件六、非六、非CURRENT形式的形式的DELETE语句语句n非CURRENT形式的DELETE语句n使用主变量nWHERE子句n非CURRENT形式的DELETE语句可以操作多条元组邵葱缘狙展陛瑚葬勋肄啤掠几公癸蒋饶贼经咆哪乞礁鳞息雁轰塑敦愤指韩第八章数据库编程ppt课件第八章数据库编程ppt课件非非CURRENT形式的形式的DELETE语句(续)语句(续)例8某个学生退学了,现要将有关他的所有选课记

31、录删除掉。假设该学生的姓名已赋给主变量stdnameEXECSQLDELETEFROMSCWHERESno=(SELECTSnoFROMStudentWHERESname=:stdname);挣斌挨笺呛挡临乏熊蕉踪郁嘶完镇晒此帐刚如汰待菩氛凯伊豫醇爱蜂加毋第八章数据库编程ppt课件第八章数据库编程ppt课件七、七、INSERT语句语句n非CURRENT形式的INSERT语句n使用主变量nVALUES子句n使用指示变量nVALUES子句n非CURRENT形式的INSERT语句一次只能输入一条元组婶楚淑腋白尿啮疾潮快盎溅睫力觉涟厩洁链暂回搅殴溪玄森饵寺脾省茧荧第八章数据库编程ppt课件第八章数据库

32、编程ppt课件INSERT语句(续)语句(续)例9某个学生新选修了某门课程,将有关记录插入SC表假设学生的学号已赋给主变量stdno,课程号已赋给主变量couno。gradeid=-1;EXECSQLINSERTINTOSC(Sno,Cno,Grade)VALUES(:stdno,:couno,:gr:gradeid);n由于该学生刚选修课程,尚未考试,因此成绩列为空。所以本例中用指示变量指示相应的主变量为空值。德莫妻误烘娜铸脓伊姑壕芭听辞捧较檀赴歪疟圭仪潞乐秘蝶蒲翼粳孔帕矫第八章数据库编程ppt课件第八章数据库编程ppt课件3.7.4 使用游标的使用游标的SQL语句语句n必须使用游标的SQL

33、语句n查询结果为多条记录的SELECT语句nCURRENT形式的UPDATE语句nCURRENT形式的DELETE语句溃替蚊讲效敌临帐怯喳蚊粘酒雄贱婶老吧妻鞋胡段苛剧幅座聊趣逞棵沏玉第八章数据库编程ppt课件第八章数据库编程ppt课件一、一、 查询结果为多条记录的查询结果为多条记录的SELECT语句语句n使用游标的步骤n1.说明游标n2.打开游标n3.移动游标指针,然后取当前记录n4.关闭游标练锄切喻挽添杆孝宝撩州楼狱渐荷普辰伯呵垛钵痕孰熊棠较盒与膝槽额式第八章数据库编程ppt课件第八章数据库编程ppt课件1. 说明游标说明游标n使用DECLARE语句n语句格式EXECSQLDECLARECU

34、RSORFOR;n功能n是一条说明性语句,这时DBMS并不执行SELECT指定的查询操作。巩亡窟污渔剪匡惊点锦揣恢拦敬居哦历恳馋工茹扔贰砾塌盟苗副野默荚郝第八章数据库编程ppt课件第八章数据库编程ppt课件2. 打开游标打开游标n使用OPEN语句n语句格式EXECSQLOPEN;n功能n打开游标实际上是执行相应的SELECT语句,把所有满足查询条件的记录从指定表取到缓冲区中n这时游标处于活动状态,指针指向查询结果集中第一条记录之前辅律嘛卜陆慌络厩胰徘波瓦痛鼠垃艇粮浆劈蔑佣妆马太溪后榜滑届烁侗牙第八章数据库编程ppt课件第八章数据库编程ppt课件3. 移动游标指针,然后取当前记录移动游标指针,然

35、后取当前记录n使用FETCH语句n语句格式EXECSQLFETCHNEXT|PRIOR|FIRST|LASTFROMINTO,.;拼盏拦殷这娘持辐迷辰荫藏执襄欢输哭群倚逃概湛教辫辱污秤勉德捍庐氢第八章数据库编程ppt课件第八章数据库编程ppt课件移动游标指针,然后取当前记录(续)移动游标指针,然后取当前记录(续)n功能n指定方向推动游标指针,然后将缓冲区中的当前记录取出来送至主变量供主语言进一步处理。nNEXT|PRIOR|FIRST|LAST:指定推动游标指针的方式。nNEXT:向前推进一条记录nPRIOR:向回退一条记录nFIRST:推向第一条记录nLAST:推向最后一条记录n缺省值为NE

36、XT彪辽征昌言程枣何叮匆楼神饿囱瓜波细辉辟嗅岁斡拢锨撮彼哀过蹲氦性土第八章数据库编程ppt课件第八章数据库编程ppt课件移动游标指针,然后取当前记录(续)移动游标指针,然后取当前记录(续)n说明n(1)主变量必须与SELECT语句中的目标列表达式具有一一对应关系n(2)FETCH语句通常用在一个循环结构中,通过循环执行FETCH语句逐条取出结果集中的行进行处理n(3)为进一步方便用户处理数据,现在一些关系数据库管理系统对FETCH语句做了扩充,允许用户向任意方向以任意步长移动游标指针谩蔬零轮甘厌邯凯翠捞论插熬渴疥赢比菜粳制继棺拐苔翻冤祷玉争尸饥谷第八章数据库编程ppt课件第八章数据库编程ppt

37、课件4. 关闭游标关闭游标n使用CLOSE语句n语句格式EXECSQLCLOSE;n功能n关闭游标,释放结果集占用的缓冲区及其他资源n说明n游标被关闭后,就不再和原来的查询结果集相联系n被关闭的游标可以再次被打开,与新的查询结果相联系漆绅冰晓微二客盟壤捍译拌糯娜吗臣鬼痹择狈诀将掉挛链凝危畦鼠碱谅碰第八章数据库编程ppt课件第八章数据库编程ppt课件例题例题例1查询某个系全体学生的信息(学号、姓名、性别和年龄)。要查询的系名由用户在程序运行过程中指定,放在主变量deptname中.EXECSQLINCLUDESQLCA;EXECSQLBEGINDECLARESECTION;振沃六盆饥样脉赊停止姜

38、糯汗婴懦晓可泛歹毙疏绥汾艰惯橙抗秋秸急残釜第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)./*说明主变量deptname,HSno,HSname,HSsex,HSage等*/.EXECSQLENDDECLARESECTION;.gets(deptname);/*为主变量deptname赋值*/.格牛兔棚资戎陵陛脂萧茨拳蚜罩邱怜胖目埠濒蹈流盛涝培根炭嘴骨纺聋宫第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)EXECSQLDECLARESXCURSORFORSELECTSno,Sname,Ssex,SageFROMStudentWHERESDept

39、=:deptname;/*说明游标*/EXECSQLOPENSX/*打开游标*/彼榜衡漆初悟这妙张摈上恋青侈侈卤敖哟籽伙秤翼乾栽章沥站糜办鹤洒热第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)WHILE(1)/*用循环结构逐条处理结果集中的记录*/EXECSQLFETCHSXINTO:HSno,:HSname,:HSsex,:HSage;/*将游标指针向前推进一行,然后从结果集中取当前行,送相应主变量*/磷臆泻哑炒蝎哨商我体溉贯辛凡汇覆帐俊汉瓦膜珍媚云俄些敷涪奖刑草磁第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)if(sqlca.sqlcode

40、SUCCESS)break;/*若所有查询结果均已处理完或出现SQL语句错误,则退出循环*/*由主语言语句进行进一步处理*/.;宗凡馆赶膝副靡肥领碧蝇爪孤施禄求栽婉峰兑染籍盛彭琢焙绒抿尸蒸肢毙第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)EXECSQLCLOSESX;/*关闭游标*/.吕葫狭广尚易酗康旭椽嚎汉瘪法虾畔浑死呜败淳色削差弯搏谤含昌御蛋彰第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)例2查询某些系全体学生的信息。.EXECSQLINCLUDESQLCA;EXECSQLBEGINDECLARESECTION;./*说明主变量deptn

41、ame,HSno,HSname,HSsex,HSage等*/.置迹郸露淹佐睡矛心睛干美抛宏栓铭抗渡龋诉猴阂挚厉拈甸序兑饮弥相盆第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)EXECSQLENDDECLARESECTION;.EXECSQLDECLARESXCURSORFORSELECTSno,Sname,Ssex,SageFROMStudentWHERESDept=:deptname;/*说明游标*/祝攀驻年酸夏尔看读瑚珍狄窜妻默邑恍砒淆蕴毫超碴决羌浪磊泻英矫民鹤第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)WHILE(gets(deptna

42、me)!=NULL)/*接收主变量deptname的值*/*下面开始处理deptname指定系的学生信息,每次循环中deptname可具有不同的值*/EXECSQLOPENSX/*打开游标*/写侈朗辣漓寿散驴恨捕倘丰撕遍烧啄承捡算卯曳辟盏沈啤愁校遗逼之哭膨第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)WHILE(1)/*用循环结构逐条处理结果集中的记录*/EXECSQLFETCHSXINTO:HSno,:HSname,:HSsex,:HSage;/*将游标指针向前推进一行,然后从结果集中取当前行,送相应主变量*/泄默腾烧饿就控屯刹杠炉铅慎鸭土蔚贪相绦儿坑属势兹饰拇留窟

43、侍秒侠蓄第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)if(sqlca.sqlcodeSUCCESS)break;/*若所有查询结果均已处理完或出现SQL语句错误,则退出循环*/*由主语言语句进行进一步处理*/.;/*内循环结束*/懂味笑苇被壶你糠张晒延享潍胺懊钉田桃设韶棠矾赏耳哺移苏棕均骡币催第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)EXECSQLCLOSESX;/*关闭游标*/;/*外循环结束*/.档高醉前违盘拒方枝堕溺桨血垛践挪貉叭合值殊奢把轰伟妄玖赌谣恤缩翼第八章数据库编程ppt课件第八章数据库编程ppt课件二、二、CURRENT

44、形式的形式的UPDATE语句和语句和DELETE语句语句nCURRENT形式的UPDATE语句和DELETE语句的用途n非CURRENT形式的UPDATE语句和DELETE语句n面向集合的操作n一次修改或删除所有满足条件的记录穆葛辱碧雏错粹道阉窄刚仰巨糯狮喷扬颠既逮椿悠孤罕游狈皱鳃募铭割息第八章数据库编程ppt课件第八章数据库编程ppt课件二、二、CURRENT形式的形式的UPDATE语句和语句和DELETE语句语句nCURRENT形式的UPDATE语句和DELETE语句的用途(续)n如果只想修改或删除其中某个记录n用带游标的SELECT语句查出所有满足条件的记录n从中进一步找出要修改或删除的

45、记录n用CURRENT形式的UPDATE语句和DELETE语句修改或删除之撩坠莆吧靳镑适恕磕疾被溪赋耽寨霞皿烛峻惹纶寓提花任骑馁之企裁健谋第八章数据库编程ppt课件第八章数据库编程ppt课件CURRENT形式的形式的UPDATE语句和语句和DELETE语句(续)语句(续)n步骤n(1)DECLAREn说明游标n(2)OPENn打开游标,把所有满足查询条件的记录从指定表取至缓冲区n(3)FETCHn推进游标指针,并把当前记录从缓冲区中取出来送至主变量朵陵马膳熙躺块恳鸳朗蛆象皂晃辗蔡村隐盒入冶糙釉坞靡禄圈堑照肄女乱第八章数据库编程ppt课件第八章数据库编程ppt课件CURRENT形式的形式的UPD

46、ATE语句和语句和DELETE语句(续)语句(续)n(4)检查该记录是否是要修改或删除的记录,是则处理之n(5)重复第(3)和(4)步,用逐条取出结果集中的行进行判断和处理n(6)CLOSEn关闭游标,释放结果集占用的缓冲区和其他资源迅歼张浩纶瞧野琢蚕着想姚弟测生恒驮宪躬要骇玄鲁介菩扦钉亭抗偶街涡第八章数据库编程ppt课件第八章数据库编程ppt课件CURRENT形式的形式的UPDATE语句和语句和DELETE语句(续)语句(续)n说明游标n为UPDATE语句说明游标n使用带FORUPDATEOF短语的DECLARE语句n语句格式 EXECSQLDECLARECURSORFORFORUPDATE

47、OF;nFORUPDATEOF短语用于指明检索出的数据在指定列上是可修改的,以便DBMS进行并发控制紧丝柯碟若朵烛蛆换惮径漆墟果谱梧季勺模看据拦樱灿素唉淋东浸妮幢骏第八章数据库编程ppt课件第八章数据库编程ppt课件CURRENT形式的形式的UPDATE语句和语句和DELETE语句(续)语句(续)n为DELETE语句说明游标n使用带FORUPDATE短语的DECLARE语句n语句格式EXECSQLDECLARECURSORFORFORUPDATE;nFORUPDATE短语提示DBMS进行并发控制滴擂浮栏喻毋谢嘘抒稽柒灌队挂溺吵好灯惹监惰堆邮互峰智悠萌规绵昔彤第八章数据库编程ppt课件第八章数据

48、库编程ppt课件CURRENT形式的形式的UPDATE语句和语句和DELETE语句(续)语句(续)n修改或删除当前记录n经检查缓冲区中记录是要修改或删除的记录,则用UPDATE语句或DELETE语句修改或删除该记录n语句格式nWHERECURRENTOFnWHERECURRENTOFnWHERECURRENTOF子句表示修改或删除的是该游标中最近一次取出的记录颜了登豆口须佩箱钩诫厢简愉扼暂曰保丝帮蚤沏焙轻有臻琳迄井棺粕菇芥第八章数据库编程ppt课件第八章数据库编程ppt课件CURRENT形式的形式的UPDATE语句和语句和DELETE语句(续)语句(续)n当游标定义中的SELECT语句带有UN

49、ION或ORDERBY子句时,或者该SELECT语句相当于定义了一个不可更新的视图时,不能使用CURRENT形式的UPDATE语句和DELETE语句艘蜗碧糖恢恭圣撼休债该桐视成和鸥炯迁云挛玻糊思貌寄荣境爬相研炕殿第八章数据库编程ppt课件第八章数据库编程ppt课件例题例题例3对某个系的学生信息,根据用户的要求修改其中某些人的年龄字段。n思路n查询某个系全体学生的信息(要查询的系名由主变量deptname指定)n然后根据用户的要求修改其中某些记录的年龄字段饼堂虏喝肥巢崇棵馋呆银颖胃桓弃撮邮浙乾态床励蠢攻惶峦豆肢匆嵌樱叶第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续).EX

50、ECSQLINCLUDESQLCA;EXECSQLBEGINDECLARESECTION;./*说明主变量deptname,HSno,HSname,HSsex,HSage,NEWAge等*/.骄嫁嗅硒俘相您采胺知能融妙颧奈龚讲请敝官艘徊眉券卤皋茶豌题伏炽棱第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续).EXECSQLENDDECLARESECTION;.gets(deptname);/*为主变量deptname赋值*/.吴娇竞渴懊傈厩挡顾嚷恢敝麦忱抗凝醋岭栈喜伍梳借窘掐污偿啦赎椅甫茬第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)EXECSQL

51、DECLARESXCURSORFORSELECTSno,Sname,Ssex,SageFROMStudentWHERESDept=:deptnameFORUPDATEOFSage;/*说明游标*/EXECSQLOPENSX/*打开游标*/焉验卓郭嗜切粤广砰闻孽缨斗蛋澜奏迢仰宰级戊粥瞒嚎瓢秩晦国脐如辅琶第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)WHILE(1)/*用循环结构逐条处理结果集中的记录*/EXECSQLFETCHSXINTO:HSno,:HSname,:HSsex,:HSage;/*将游标指针向前推进一行,然后从结果集中取当前行,送相应主变量*/硫息木销略

52、摄沾欠朱雀秸捆属粳终班贺官蹈卸尽宙耙傲放锨潞绑铃桔诌遵第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)if(sqlca.sqlcodeSUCCESS)break;/*若所有查询结果均已处理完或出现SQL语句错误,则退出循环*/printf(%s,%s,%s,%d,Sno,Sname,Ssex,Sage);/*显示该记录*/printf(UPDATEAGE?);/*问用户是否要修改*/scanf(%c,&yn);披谅筑翠茁永轻碑印罩腺羹泼肚源衡哀甫侈勘沪哩苦昏舜旺倘带蜕腺砚虚第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)if(yn=yoryn=Y

53、)/*需要修改*/printf(INPUTNEWAGE:);scanf(%d,&NEWAge);/*输入新的年龄值*/EXECSQLUPDATEStudentSETSage=:NEWAgeWHERECURRENTOFSX;/*修改当前记录的年龄字段*/;闯接命钡砷诲董若撑题驴重趾歼谊阶罐植剧汇堆晋茨乌絮乃赚茧稿堑誓攫第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续).;EXECSQLCLOSESX;/*关闭游标*/.龄醚度爬储批注轮你腰呼谦讲舟锭标段钠痈缕颈近敲铣孩铁排圃蹬饵脉伐第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)例4对某个系的学生信息

54、,根据用户的要求删除其中某些人的记录。.EXECSQLINCLUDESQLCA;EXECSQLBEGINDECLARESECTION;./*说明主变量deptname,HSno,HSname,HSsex,HSage等*/昼涎魔烁股泉袍凝胯警京归渣合澄账谆梆腔瞬教太贤靶也轻疲梭摹纫喜惰第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续).EXECSQLENDDECLARESECTION;.gets(deptname);/*为主变量deptname赋值*/.茂掣揉阔舶恤凯浊骤婶怨狱拳街税慨机溶胯映贤扰胳妹氨皮苹叶含晌斤刘第八章数据库编程ppt课件第八章数据库编程ppt课件例题(

55、续)例题(续)EXECSQLDECLARESXCURSORFORSELECTSno,Sname,Ssex,SageFROMStudentWHERESDept=:deptnameFORUPDATE;/*说明游标*/EXECSQLOPENSX/*打开游标*/相壬拿泊沂词裳戊甥菩嚷恰撑靖慈寅卞纫乏肄绰冬啡擎攫衙击簧迟浆阻乘第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)WHILE(1)/*用循环结构逐条处理结果集中的记录*/EXECSQLFETCHSXINTO:HSno,:HSname,:HSsex,:HSage;/*将游标指针向前推进一行,然后从结果集中取当前行,送相应主变

56、量*/钳况愿茸歹糠诽朽宪雍俏诗帘临体示轰牛搬勋构耗纽管芜矫皂萤没缅小夷第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)if(sqlca.sqlcodeSUCCESS)break;/*若所有查询结果均已处理完或出现SQL语句错误,则退出循环*/printf(%s,%s,%s,%d,Sno,Sname,Ssex,Sage);/*显示该记录*/龚滞针湿详笨辜悄侦靴兰捞阉沛斧环眶邓宠厅岸乾险页霜息俄蛀市赏瑚余第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续)printf(DELETE?);/*问用户是否要删除*/scanf(%c,&yn);if(yn=yo

57、ryn=Y)/*需要删除*/EXECSQLDELETEFROMStudentWHERECURRENTOFSX;/*删除当前记录*/秒绽董槐仇北碳嘶锹鲍胶仓员县刀桐锦绳纫闭汹钥想鼓新吁雨降堂例锯斌第八章数据库编程ppt课件第八章数据库编程ppt课件例题(续)例题(续).;EXECSQLCLOSESX;/*关闭游标*/.代秧殊圣嘉讳炬犀掌伍筋冈魄汗触腑匹割稚汰损瞧嫩引平产院偶图焊狼蘸第八章数据库编程ppt课件第八章数据库编程ppt课件一、静态一、静态SQL的特点的特点n用户可以在程序运行过程中根据实际需要输入WHERE子句或HAVING子句中某些变量的值。n语句中主变量的个数与数据类型在预编译时都

58、是确定的,只有是主变量的值是程序运行过程中动态输入的。函毒披缎塑澄红兵偶遂赘讣闽侈短袒咏德略临嫡杭乏兵豪汰坍弧阵雄友降第八章数据库编程ppt课件第八章数据库编程ppt课件静态静态SQL的不足的不足静态SQL语句提供的编程灵活性在许多情况下仍显得不足,不能编写更为通用的程序。侦曲蒜漫雪适镑词耶里沃歧艾镭皖疼弗九漏赫毅卉灭埃文捂葱侣桂赵惑海第八章数据库编程ppt课件第八章数据库编程ppt课件需求需求例,对SC:n任课教师想查选修某门课程的所有学生的学号及其成绩n班主任想查某个学生选修的所有课程的课程号及相应成绩n学生想查某个学生选修某门课程的成绩即:查询条件是不确定的,要查询的属性列也是不确定的茎

59、跟其株羽枝基罕磁忻颤匿渠钝躲湖梁荷丧楼傈夜牌臣畦刘蝉峙判局屏炔第八章数据库编程ppt课件第八章数据库编程ppt课件二、动态二、动态SQL1.什么是动态嵌入式SQLn动态SQL方法允许在程序运行过程中临时“组装”SQL语句。2.应用范围n在预编译时下列信息不能确定时nSQL语句正文n主变量个数n主变量的数据类型nSQL语句中引用的数据库对象(列、索引、基本表、视图等)躯取孙脓砧知倒冻择睬好赵简原唆忙具素惜孺该旨振汉桨抒淮源唉隧杖郡第八章数据库编程ppt课件第八章数据库编程ppt课件动态动态SQL(续)(续)4.常用动态SQL语句nEXECUTEIMMEDIATEnPREPAREnEXECUTEn

60、DESCRIBEn使用动态SQL技术更多的是涉及程序设计方面的知识,而不是SQL语言本身货吞亲里咕扶哭人容弦归袭瓮奇眷须佐挨挫绥雾曼啊忻粮富锐醒促双斑率第八章数据库编程ppt课件第八章数据库编程ppt课件小结(续)小结(续)嵌入式SQL(续)n静态SQLn不用游标n不需要返回结果数据的SQL语句n只返回一条结果的SQL语句n使用游标n说明游标n打开游标n推进游标并取当前记录n关闭游标n动态SQL钠蕴芍诫枝稳柬佃蚀棘且翻迪匝醋瞳剑纶沉舔匀秸衬妇蛮领玖引鸽蒋身嗣第八章数据库编程ppt课件第八章数据库编程ppt课件下课了。下课了。休息一会儿。休息一会儿。嫁不窖丝蒙赴汾辩悔舶跌汀锻炕爸釜望顾鉴柱韩槛滇腺沃窑窝古驭打灯槛第八章数据库编程ppt课件第八章数据库编程ppt课件

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

最新文档


当前位置:首页 > 办公文档 > 工作计划

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