第08章 数据库编程(2).ppt
《第08章 数据库编程(2).ppt》由会员分享,可在线阅读,更多相关《第08章 数据库编程(2).ppt(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、)1数据库系统概论数据库系统概论An Introduction to Database System第八章第八章 数据库编程数据库编程(2)(2)2复复 习习SQL和主语言之间的三种通信方式?和主语言之间的三种通信方式?不用游标的不用游标的SQL语句有哪几种?语句有哪几种?使用游标的使用游标的SQL语句有哪几种?语句有哪几种?说明性语句、数据定义语句、数据控制语句说明性语句、数据定义语句、数据控制语句 查询结果为查询结果为单记录单记录的的SELECTSELECT语句语句 INSERTINSERT语句语句 非非CURRENTCURRENT形式的形式的UPDATEUPDATE或或DELETEDEL
2、ETE语句语句 查询结果为查询结果为多条记录多条记录的的SELECTSELECT语句语句 CURRENTCURRENT形式的形式的UPDATEUPDATE或或DELETEDELETE语句语句)32.CURRENT2.CURRENT形式的形式的UPDATEUPDATE和和DELETEDELETE语句语句(1)CURRENT(1)CURRENT(1)CURRENT(1)CURRENT形式的形式的形式的形式的UPDATEUPDATEUPDATEUPDATE语句和语句和语句和语句和DELETEDELETEDELETEDELETE语句的用途语句的用途语句的用途语句的用途非非CURRENT形式的形式的UP
3、DATE和和DELETE语句语句面向集合的操作面向集合的操作 一次修改或删除所有满足条件的记录一次修改或删除所有满足条件的记录如果只想修改或删除其中某个记录如果只想修改或删除其中某个记录用带游标的用带游标的SELECTSELECT语句查出满足条件的记录语句查出满足条件的记录 从中进一步找出要修改或删除的某条记录从中进一步找出要修改或删除的某条记录 用用CURRENTCURRENT形式的形式的UPDATEUPDATE语句和语句和DELETEDELETE语句修语句修改或删除改或删除)42.CURRENT2.CURRENT形式的形式的UPDATEUPDATE和和DELETEDELETE语句语句(2)
4、(2)步骤步骤DECLARE说明游标说明游标OPEN 打开游标,把满足查询条件的记录从表取打开游标,把满足查询条件的记录从表取至缓冲区至缓冲区FETCH推进游标指针,并把当前记录从缓冲区中推进游标指针,并把当前记录从缓冲区中取出来送至主变量取出来送至主变量)52.CURRENT2.CURRENT形式的形式的UPDATEUPDATE和和DELETEDELETE语句语句(2)(2)步骤步骤检查该记录是否是要修改或删除的记录,检查该记录是否是要修改或删除的记录,是则处理;是则处理;UPDATE语句或语句或DELETE语句中要用子句语句中要用子句WHERECURRENTOF重复第重复第(3)和和(4)
5、步步CLOSE关闭游标,释放结果集占用的资源关闭游标,释放结果集占用的资源)62.CURRENT2.CURRENT形式的形式的UPDATEUPDATE和和DELETEDELETE语句语句注意:注意:当游标定义中的当游标定义中的SELECT语句带有语句带有UNION或或ORDERBY子句时,不能使用子句时,不能使用CURRENT形式的形式的UPDATE语句和语句和DELETE语句。语句。因为这样相当于定义一个不可更新的视图。因为这样相当于定义一个不可更新的视图。WHY?)7例例对某个系的学生信息对某个系的学生信息(待查系名由主变量待查系名由主变量deptname指定指定),根据用户的要求删除其中
6、某些记录。根据用户的要求删除其中某些记录。EXECSQLINCLUDESQLCA;EXECSQLBEGINDECLARESECTION;/*说明主变量说明主变量deptname,HSno,HSname等等*/EXECSQLENDDECLARESECTION;gets(deptname);/*为主变量为主变量deptname赋值赋值*/EXECSQLDECLARESXCURSORFOR/*说明游标说明游标*/SELECTSno,Sname,Ssex,SageFROMStudentWHERESDept=:deptname;2.CURRENT2.CURRENT形式的形式的UPDATEUPDATE和和
7、DELETEDELETE语句语句)8EXECSQLOPENSX/*打开游标打开游标*/WHILE(1)EXECSQLFETCHSXINTO:HSno,:HSname,:HSsex;IF(sqlca.sqlcodeSUCCESS)break;printf(“%s,%s,%s,%d”,Sno,Sname,Ssex);printf(DELETE?);scanf(%c,&yn);if(yn=yoryn=Y)EXECSQLDELETEFROMEXECSQLDELETEFROM;EXECSQLCLOSESX;/*关闭游标关闭游标*/StudentStudentWHERECURRENTOFSXWHERECU
8、RRENTOFSX)98.1 8.1 嵌入式嵌入式SQL SQL 8.1.1 8.1.1 8.1.1 8.1.1 嵌入式嵌入式嵌入式嵌入式SQLSQLSQLSQL的处理过程的处理过程的处理过程的处理过程8.1.2 8.1.2 8.1.2 8.1.2 嵌入式嵌入式嵌入式嵌入式SQLSQLSQLSQL与主语句之间通信与主语句之间通信与主语句之间通信与主语句之间通信8.1.3 8.1.3 8.1.3 8.1.3 不用游标的不用游标的不用游标的不用游标的SQLSQLSQLSQL语句语句语句语句8.1.4 8.1.4 8.1.4 8.1.4 使用游标的使用游标的使用游标的使用游标的SQLSQLSQLSQ
9、L语句语句语句语句8.1.5 8.1.5 8.1.5 8.1.5 动态动态动态动态SQLSQLSQLSQL简介简介简介简介)101.1.1.1.静态静态静态静态SQLSQLSQLSQL概念概念:SQLSQL语句中语句中主变量主变量的的个数个数与与数据类型数据类型在预在预编译时都是确定的,只有编译时都是确定的,只有主变量的值主变量的值是程序运是程序运行过程中动态输入的。行过程中动态输入的。例如例如:SELECTSno,Sname,Ssex,SageFROMstudentWHERESdept=deptn8.1.5 8.1.5 动态动态SQLSQL简介简介)111.1.静态静态SQLSQL优点:优点
10、:用户可以在程序运行过程中根据实际需要输用户可以在程序运行过程中根据实际需要输入入WHEREWHERE子句或子句或HAVINGHAVING子句中某些变量的值。子句中某些变量的值。缺点:缺点:不能编写更为通用的程序。不能编写更为通用的程序。如:查询条件、要查询的属性列均不确定时,如:查询条件、要查询的属性列均不确定时,就无法用一条静态就无法用一条静态SQLSQL语句实现。语句实现。8.1.5 8.1.5 动态动态SQLSQL简介简介)12【例如例如】对对SCSC表,有如下查询要求:表,有如下查询要求:任课教师任课教师想查选修想查选修某门课程某门课程的所有学生的学的所有学生的学号及其成绩;号及其成
11、绩;班主任班主任想查想查某个学生某个学生选修的所有课程的课程选修的所有课程的课程号及相应成绩;号及相应成绩;学生学生想查某个学生选修想查某个学生选修某门课程某门课程的成绩。的成绩。8.1.5 8.1.5 动态动态SQLSQL简介简介)132.2.动态动态SQLSQL:允许在程序运行过程中临时允许在程序运行过程中临时“组装组装”SQLSQL语句。语句。(1)(1)概念概念:在预编译时在预编译时SQLSQL语句正文语句正文 主变量主变量个数个数 主变量的主变量的数据类型数据类型 SQLSQL语句中引用的语句中引用的数据库对象数据库对象 (包括:列、索引、基本表、视图等)(包括:列、索引、基本表、视
12、图等)等信息不能确定时。等信息不能确定时。8.1.58.1.5动态动态SQLSQL简介简介)142.2.动态动态SQLSQL:(2)(2)三种形式三种形式语句可变:语句可变:临时构造完整的临时构造完整的SQLSQL语句。语句。条件可变:条件可变:WHERE子句中或子句中或HAVING短语中的条件短语中的条件数据库对象、查询条件均可变:数据库对象、查询条件均可变:8.1.58.1.5动态动态SQLSQL简介简介 SELECTSELECT、FROMFROM、WHEREWHERE和和HAVINGHAVING用户临时构造。用户临时构造。即语句的输入即语句的输入即语句的输入即语句的输入/输出都是不确定的
13、。输出都是不确定的。输出都是不确定的。输出都是不确定的。)15 例例 一个游标的具体使用一个游标的具体使用declares_c1SCROLLcursorforselect*fromscwherecno=2opens_c1printfetch_statusdeclaresnochar(8),cnochar(8),gradeintWhilefetch_status0Beginfetchnextfroms_c1intosno,cno,gradeprintsno+cno+cast(gradeaschar(10)end)16第八章第八章 数据库编程数据库编程8.1嵌入式嵌入式SQL8.2存储过程存储过程
14、8.3ODBC编程编程)178.2 8.2 存储过程存储过程 8.2.1 T8.2.1 T8.2.1 T8.2.1 TSQLSQLSQLSQL的块结构的块结构的块结构的块结构8.2.2 8.2.2 8.2.2 8.2.2 变量常量的定义变量常量的定义变量常量的定义变量常量的定义8.2.3 8.2.3 8.2.3 8.2.3 控制结构控制结构控制结构控制结构8.2.4 8.2.4 8.2.4 8.2.4 存储过程存储过程存储过程存储过程)188.2.2 8.2.2 变量常量的定义变量常量的定义2.2.2.2.变量定义变量定义变量定义变量定义 (1)(1)(1)(1)局部变量的定义局部变量的定义局
15、部变量的定义局部变量的定义 DECLARE局部变量名局部变量名数据类型数据类型,(2)(2)(2)(2)局部变量的赋值局部变量的赋值局部变量的赋值局部变量的赋值SETSET语句语句语句语句:SET局部变量名局部变量名表达式表达式SELECTSELECT语句语句语句语句:SELECT局部变量名局部变量名表达式表达式,n)198.2.2 8.2.2 变量常量的定义变量常量的定义2.2.2.2.变量定义变量定义变量定义变量定义 (3)(3)(3)(3)局部变量的输出局部变量的输出局部变量的输出局部变量的输出SELECTSELECT语句语句语句语句:SELECT局部变量名局部变量名,nPRINTPRI
16、NT语句语句语句语句:PRINT局部变量名局部变量名)208.2.2 8.2.2 变量常量的定义变量常量的定义例例1分析下列代码:分析下列代码:declarev1varchar(20),v2varchar(40)setv1=2008setv2=v1+北京奥运北京奥运selectv1,v2Printv1,v2)218.2.2 8.2.2 变量常量的定义变量常量的定义 例例例例2 2 2 2 查询学号为查询学号为查询学号为查询学号为 0215123021512302151230215123 学生的姓名。学生的姓名。学生的姓名。学生的姓名。declarev1nvarchar(20),declarev
17、1nvarchar(20),v2nvarchar(40)v2nvarchar(40)SETv1=SETv1=无此人无此人无此人无此人 SETv2=0215123SETv2=0215123SELECTSELECTSnameSname FROMStudentFROMStudentWHEREWHEREsnosno=v2=v2SELECTv1SELECTv1ASAS姓名姓名姓名姓名V1=V1=)22 例例例例3333给出以下语句的执行结果。给出以下语句的执行结果。DECLAREffloat,cnchar(8)SETf=85SETcn=2SELECT*FROMSCWHEREcno=cnANDgradef
18、 8.2.2 8.2.2 变量常量的定义变量常量的定义)23 例例例例4444分析以下语句执行后分析以下语句执行后 snsn的值。的值。DECLAREsnchar(8)(1)SELECTsn=snameFROMstudentWHEREsno=101(2)SELECTsn=snameFROMstudent提示提示:SELECT通常用于通常用于返回单个值;返回单个值;若是返回多个值,将最后一个值赋给变量若是返回多个值,将最后一个值赋给变量8.2.2 8.2.2 变量常量的定义变量常量的定义)248.2 8.2 存储过程存储过程 8.2.1 T8.2.1 T8.2.1 T8.2.1 TSQLSQLS
19、QLSQL的块结构的块结构的块结构的块结构8.2.2 8.2.2 8.2.2 8.2.2 变量常量的定义变量常量的定义变量常量的定义变量常量的定义8.2.3 8.2.3 8.2.3 8.2.3 控制结构控制结构控制结构控制结构8.2.4 8.2.4 8.2.4 8.2.4 存储过程存储过程存储过程存储过程)251.1.条件控制语句条件控制语句:格式格式:IF条件表达式条件表达式A块块ELSEB块块三种使用方式三种使用方式IFIFELSEIF嵌套嵌套8.2.3 8.2.3 控制结构控制结构)268.2.3 8.2.3 控制结构控制结构 例例例例5 5 5 5 如果如果如果如果“数学数学数学数学”
20、的平均成绩高于的平均成绩高于的平均成绩高于的平均成绩高于60606060分,则显示分,则显示分,则显示分,则显示“该该该该课程教学成绩合格课程教学成绩合格课程教学成绩合格课程教学成绩合格”。declaretextvarchar(30)declaretextvarchar(30)IF(IF()60)60setsettext=text=该课程教学成绩合格该课程教学成绩合格该课程教学成绩合格该课程教学成绩合格 elseelseselectselecttext=text=该课程教学成绩不合格该课程教学成绩不合格该课程教学成绩不合格该课程教学成绩不合格 selecttextselecttextSelec
21、tSelectavg(gradeavg(grade)from)fromSC,CourseSC,CoursewherewhereCnameCname=数学数学数学数学o=o)272.2.2.2.循环控制语句循环控制语句循环控制语句循环控制语句:WHILE格式格式格式格式:WHILE条件表达式条件表达式循环体循环体循环体循环体8.2.3 8.2.3 控制结构控制结构在循环体内可以使用在循环体内可以使用在循环体内可以使用在循环体内可以使用BREAKCONTINUE等语句。等语句。)288.2.3 8.2.3 控制结构控制结构 例例例例66显示字符串显示字符串显示字符串显示字符串“China”Chin
22、a”中每个字符的中每个字符的中每个字符的中每个字符的ASCIIASCII码值码值码值码值和字符。和字符。和字符。和字符。declarepdeclarepintint,stringvarchar(8),stringvarchar(8)setp=1setp=1setstring=Chinasetstring=Chinawhilep=whilep=datalength(stringdatalength(string)beginbeginselectsubstring(string,p,1),selectsubstring(string,p,1),ascii(substring(string,p,1)
23、ascii(substring(string,p,1)setp=p+1setp=p+1endend)298.2 8.2 存储过程存储过程 8.2.1 T8.2.1 T8.2.1 T8.2.1 TSQLSQLSQLSQL的块结构的块结构的块结构的块结构8.2.2 8.2.2 8.2.2 8.2.2 变量常量的定义变量常量的定义变量常量的定义变量常量的定义8.2.3 8.2.3 8.2.3 8.2.3 控制结构控制结构控制结构控制结构8.2.4 8.2.4 8.2.4 8.2.4 存储过程存储过程存储过程存储过程)301.1.存储过程的优点存储过程的优点存储过程在服务器端运行,执行效率高;存储过程
24、在服务器端运行,执行效率高;存储过程执行一遍后,驻留在高速缓冲中,存储过程执行一遍后,驻留在高速缓冲中,再使用只需调用,无需编译;再使用只需调用,无需编译;存储过程降低了客户机和服务器之间的通存储过程降低了客户机和服务器之间的通信量;信量;方便实施企业规划。方便实施企业规划。8.2.4 8.2.4 存储过程存储过程 )318.2.4 8.2.4 存储过程存储过程 存储过程的类型存储过程的类型系统存储过程:系统存储过程:前缀是前缀是“sp_”sp_”,可以在任何数据库使用,可以在任何数据库使用;本地存储过程:本地存储过程:用户定义的存储过程用户定义的存储过程临时存储过程等临时存储过程等#、#)3
25、22.2.2.2.存储过程的创建存储过程的创建存储过程的创建存储过程的创建CREATEPROCEDURE存储过程名存储过程名参数参数1,AS8.2.4 8.2.4 存储过程存储过程 3.3.3.3.存储过程的执行存储过程的执行存储过程的执行存储过程的执行EXECUTE存储过程名存储过程名参数参数1,参数参数2,4.4.4.4.存储过程的删除存储过程的删除存储过程的删除存储过程的删除DROPPROCEDURE存储过程名存储过程名)338.2.4 8.2.4 存储过程存储过程 例例例例7777从学生成绩数据库的三个表中查询,返回学生学从学生成绩数据库的三个表中查询,返回学生学从学生成绩数据库的三个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第08章 数据库编程2 08 数据库 编程
限制150内