- 1、本文档共60页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库系统基础教程(第8章)课件
第8章 SQL的系统特征 8.1 编程环境下的SQL 数据库应用系统为何需要其它编程语言 一个数据库仅为一个特定环境提供共享的数据资源; 众多用户不可能在客户端直接使用SQL语言来操作数据库; 许多前台编程语言可连接和操作数据库。Java, PowerBuilder, Delphi, C/C++,VB… 如何构建一个相对完整的数据库应用环境 对于简单的应用系统,使用单层C/S结构; 对于复杂的应用系统,使用多层C/S结构。 SQL语言和传统编程语言之间最大区别是什么 SQL语言是非过程性;一条语句作为一个单位作用于多个数据的集合;SQL的核心使用的是关系数据库模型。 传统语言是过程性;要处理一个数据集合需要多条语句的循环和判断;传统语言使用的数据模型有整型、实型、算术型、字符型、指针、记录、数组等等。 SQL与宿主语言接口 在数据库和宿主语言程序之间的信息转移是通过宿主语言的变量来实现的,这种变量可以被SQL语句读写。 在宿主语言中使用SQL语句时,SQL代码语句必须紧跟在关键字EXEC SQL之后。系统将预处理这些语句,并用宿主语言中合适的函数来代替这些语句。 在SQL标准中,SQLSTATE这个特殊的变量用于连接宿主语言程序与SQL执行系统。 SQLSTATE是5个字符的数组类型。每次调用SQL库函数,向SQLSTATE变量存放一个代码,该代码表示调用过程中出现的问题。 共享变量的声明 共享变量的声明加入到两个嵌套SQL语句之间: EXEC SQL BEGIN DECLARE SECTION …… EXEC SQL END DECLARE SECTION 两个语句之间称为DECLARE节 如: EXEC SQL BEGIN DECLARE SECTION char studioName[50],studioAddr[255]; char SQLATATE[6]; EXEC SQL END DECLARE SECTION 使用共享变量 共享变量可以在SQL语句中任何需要和允许常量的地方。共享变量在SQL语句中使用时,需加前缀冒号。 例: void getStudio(){ EXEC SQL BEGIN DECLARE SECTION char studioName[50],studioAddr[255]; char SQLATATE[6]; EXEC SQL END DECLARE SECTION /*显示输入需求,将输入的数据送到变量studioName和studioAddr中*/ EXEC SQL INSERT INTO Studio(name,address) VALUES(:studioName,:studioAddr) } 单元组选择语句 单元组选择的形式类似于普通的select-from-where语句,只是SELECT子句后紧跟着关键字INTO和一连串的共享变量。如果查询的结果是个单一元组,则这个元组的组成部分将被赋予这些共享变量。如果结果没有元组或多于一个元组,则不会分配给这些共享变量,同时一个相应的错误码写入SQLSTATE变量中。 例子 Void printNetWorth(){ EXEC SQL BEGIN DECLARE SECTION char studioName[50]; int presNetWorth; char SQLATATE[6]; EXEC SQL END DECLARE SECTION /* print request that syudio name be entered. read response into studioName*/ EXEC SQL SELECT NetWorth INTO :presNetWorth FROM Studio,MovieExec WHERE PresC#=cent# AND Studio.name=:studioName; /*check that SQLSTATE has all O’s and if so.print the value of presNetWorth*/ } 关于游标(光标CURSOR) 大多数编程语言操作
文档评论(0)