资源描述:
《数据库系统基础教程(第8章).ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、第8章SQL的系统特征18.1编程环境下的SQL2数据库应用系统为何需要其它编程语言一个数据库仅为一个特定环境提供共享的数据资源;众多用户不可能在客户端直接使用SQL语言来操作数据库;许多前台编程语言可连接和操作数据库。Java,PowerBuilder,Delphi,C/C++,VB…3如何构建一个相对完整的数据库应用环境对于简单的应用系统,使用单层C/S结构;对于复杂的应用系统,使用多层C/S结构。Java程序1JDBC数据库Java程序2JDBCPB程序1ODBCJDBCJava类Web服务器浏览器4SQL语言和传统编程语言之间最大区别是什么SQL
2、语言是非过程性;一条语句作为一个单位作用于多个数据的集合;SQL的核心使用的是关系数据库模型。传统语言是过程性;要处理一个数据集合需要多条语句的循环和判断;传统语言使用的数据模型有整型、实型、算术型、字符型、指针、记录、数组等等。5SQL与宿主语言接口在数据库和宿主语言程序之间的信息转移是通过宿主语言的变量来实现的,这种变量可以被SQL语句读写。在宿主语言中使用SQL语句时,SQL代码语句必须紧跟在关键字EXECSQL之后。系统将预处理这些语句,并用宿主语言中合适的函数来代替这些语句。在SQL标准中,SQLSTATE这个特殊的变量用于连接宿主语言程序与S
3、QL执行系统。SQLSTATE是5个字符的数组类型。每次调用SQL库函数,向SQLSTATE变量存放一个代码,该代码表示调用过程中出现的问题。6共享变量的声明共享变量的声明加入到两个嵌套SQL语句之间:EXECSQLBEGINDECLARESECTION……EXECSQLENDDECLARESECTION两个语句之间称为DECLARE节如:EXECSQLBEGINDECLARESECTIONcharstudioName[50],studioAddr[255];charSQLATATE[6];EXECSQLENDDECLARESECTION7使用共享变量共
4、享变量可以在SQL语句中任何需要和允许常量的地方。共享变量在SQL语句中使用时,需加前缀冒号。例:voidgetStudio(){EXECSQLBEGINDECLARESECTIONcharstudioName[50],studioAddr[255];charSQLATATE[6];EXECSQLENDDECLARESECTION/*显示输入需求,将输入的数据送到变量studioName和studioAddr中*/EXECSQLINSERTINTOStudio(name,address)VALUES(:studioName,:studioAddr)}8单
5、元组选择语句单元组选择的形式类似于普通的select-from-where语句,只是SELECT子句后紧跟着关键字INTO和一连串的共享变量。如果查询的结果是个单一元组,则这个元组的组成部分将被赋予这些共享变量。如果结果没有元组或多于一个元组,则不会分配给这些共享变量,同时一个相应的错误码写入SQLSTATE变量中。9例子VoidprintNetWorth(){EXECSQLBEGINDECLARESECTIONcharstudioName[50];intpresNetWorth;charSQLATATE[6];EXECSQLENDDECLARESECT
6、ION/*printrequestthatsyudionamebeentered.readresponseintostudioName*/EXECSQLSELECTNetWorthINTO:presNetWorthFROMStudio,MovieExecWHEREPresC#=cent#ANDStudio.name=:studioName;/*checkthatSQLSTATEhasallO’sandifso.printthevalueofpresNetWorth*/}10关于游标(光标CURSOR)大多数编程语言操作数据的方式是一次一条记录。故需使用游
7、标。建立和使用游标需要以下步骤:⑴游标说明DECLARE<游标名>[SCROLL]CURSORFORSELECT…⑵打开游标OPEN<游标名>⑶推进FETCH{NEXT
8、PRIOR
9、FIRST
10、LAST
11、RELATIVEn
12、ABSOLUTEn}FROM<游标名>INTO@变量名,…@@FETCH_STATUS=0表示正常。⑷更新数据{UPDATE
13、DELETE}tableWHERECURRENTOF<游标名>⑸关闭游标CLOSE<游标名>11例子VoidworthRanges(){intI,digits,count[15];EXECSQLBEGINDEC
14、LARESECTIONintworth;charSQLATATE[6];EXEC