您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据结构与算法 > 数据库系统基础教程(第8章)
1第8章SQL的系统特征第8章SQL的系统特征28.1编程环境下的SQL第8章SQL的系统特征3数据库应用系统为何需要其它编程语言一个数据库仅为一个特定环境提供共享的数据资源;众多用户不可能在客户端直接使用SQL语言来操作数据库;许多前台编程语言可连接和操作数据库。Java,PowerBuilder,Delphi,C/C++,VB…第8章SQL的系统特征4如何构建一个相对完整的数据库应用环境对于简单的应用系统,使用单层C/S结构;对于复杂的应用系统,使用多层C/S结构。Java程序1JDBC数据库Java程序2JDBCPB程序1ODBCJDBCJava类Web服务器浏览器第8章SQL的系统特征5SQL语言和传统编程语言之间最大区别是什么SQL语言是非过程性;一条语句作为一个单位作用于多个数据的集合;SQL的核心使用的是关系数据库模型。传统语言是过程性;要处理一个数据集合需要多条语句的循环和判断;传统语言使用的数据模型有整型、实型、算术型、字符型、指针、记录、数组等等。第8章SQL的系统特征6SQL与宿主语言接口在数据库和宿主语言程序之间的信息转移是通过宿主语言的变量来实现的,这种变量可以被SQL语句读写。在宿主语言中使用SQL语句时,SQL代码语句必须紧跟在关键字EXECSQL之后。系统将预处理这些语句,并用宿主语言中合适的函数来代替这些语句。在SQL标准中,SQLSTATE这个特殊的变量用于连接宿主语言程序与SQL执行系统。SQLSTATE是5个字符的数组类型。每次调用SQL库函数,向SQLSTATE变量存放一个代码,该代码表示调用过程中出现的问题。第8章SQL的系统特征7共享变量的声明共享变量的声明加入到两个嵌套SQL语句之间:EXECSQLBEGINDECLARESECTION……EXECSQLENDDECLARESECTION两个语句之间称为DECLARE节如:EXECSQLBEGINDECLARESECTIONcharstudioName[50],studioAddr[255];charSQLATATE[6];EXECSQLENDDECLARESECTION第8章SQL的系统特征8使用共享变量共享变量可以在SQL语句中任何需要和允许常量的地方。共享变量在SQL语句中使用时,需加前缀冒号。例:voidgetStudio(){EXECSQLBEGINDECLARESECTIONcharstudioName[50],studioAddr[255];charSQLATATE[6];EXECSQLENDDECLARESECTION/*显示输入需求,将输入的数据送到变量studioName和studioAddr中*/EXECSQLINSERTINTOStudio(name,address)VALUES(:studioName,:studioAddr)}第8章SQL的系统特征9单元组选择语句单元组选择的形式类似于普通的select-from-where语句,只是SELECT子句后紧跟着关键字INTO和一连串的共享变量。如果查询的结果是个单一元组,则这个元组的组成部分将被赋予这些共享变量。如果结果没有元组或多于一个元组,则不会分配给这些共享变量,同时一个相应的错误码写入SQLSTATE变量中。第8章SQL的系统特征10例子VoidprintNetWorth(){EXECSQLBEGINDECLARESECTIONcharstudioName[50];intpresNetWorth;charSQLATATE[6];EXECSQLENDDECLARESECTION/*printrequestthatsyudionamebeentered.readresponseintostudioName*/EXECSQLSELECTNetWorthINTO:presNetWorthFROMStudio,MovieExecWHEREPresC#=cent#ANDStudio.name=:studioName;/*checkthatSQLSTATEhasallO’sandifso.printthevalueofpresNetWorth*/}第8章SQL的系统特征11关于游标(光标CURSOR)大多数编程语言操作数据的方式是一次一条记录。故需使用游标。建立和使用游标需要以下步骤:⑴游标说明DECLARE游标名[SCROLL]CURSORFORSELECT…⑵打开游标OPEN游标名⑶推进FETCH{NEXT|PRIOR|FIRST|LAST|RELATIVEn|ABSOLUTEn}FROM游标名INTO@变量名,…@@FETCH_STATUS=0表示正常。⑷更新数据{UPDATE|DELETE}tableWHERECURRENTOF游标名⑸关闭游标CLOSE游标名第8章SQL的系统特征12例子VoidworthRanges(){intI,digits,count[15];EXECSQLBEGINDECLARESECTIONintworth;charSQLATATE[6];EXECSQLENDDECLARESECTIONEXECSQLDECLAREexecCursorCURSORFORMovieExec;EXECSQLOPENexecCursor;for(i=1;i=15;i++)counts[i]=0;while(1){EXECSQLFETCHFROMexecCursorINTO:worth;if(NO_MORE_TUPLES)break;digits=1;while((worth/=100)digits++;if(digits=14)counts[digits]++;}EXECSQLCLOSEexecCursor;for(i=1;i=15;i++)printf(“digits=%d:numberofexecs=%d\n”,i,count[i])}第8章SQL的系统特征13游标修改游标扫描一个基本表的元组时,不仅可以读和处理每个元组的值,而且可以更新或删除元组。第8章SQL的系统特征14例子VoidChangeWorth(){EXECSQLBEGINDECLARESECTIONintcertNo,worth;charexecName[30],execAddr[255],SQLATATE[6];EXECSQLENDDECLARESECTIONEXECSQLDECLAREexecCursorCURSORFORMovieExec;EXECSQLOPENexecCursor;while(1){EXECSQLFETCHFROMexecCursorINTO:execName,:execAddr,certNo,:worth;if(NO_MORE_TUPLES)break;if(worth1000)EXECSQLDELETEMovieExecWHERECURRENTOFexecCursorelseEXECSQLUPDATEMovieExecSETnetWorth=2*netWorthWHERECURRENTOFexecCursor;}EXECSQLCLOSEexecCursor;}第8章SQL的系统特征158.2存储过程第8章SQL的系统特征16存储过程storedprocedure存储过程storedprocedure是什么?简称过程procedure。在数据库中存储的一组SQL指令,有唯一命名,可供所有应用程序调用。过程的优势是什么?标准化;效率;安全性。并非增强功能。第8章SQL的系统特征17Transact-SQL扩充的SQL,包括变量定义,条件IF…ELSE…或循环WHILE等流程控制语句,函数,及事务定义等语句。例如:DECLARE@Max_AmountINTSELECT@Max_Amount=MAX(Amount)FROMOrderamountSELECT@Max_Amount第8章SQL的系统特征18如何创建过程CREATEPROCEDURE过程名(@参数类型,…)AS子查询例如:Createprocedurenew_dept(@idint,@dnamechar(40),@headchar(10))ASinsertintodepartment(deptid,deptname,headerid)values(@id,@dname,@head)第8章SQL的系统特征19如何调用过程EXEC过程名@参数=值例如:EXECnew_dept@id=3,@dname='北京代理',@head=null或EXECnew_dept3,'北京代理',null第8章SQL的系统特征20过程中如何返回计算结果可用OUTPUT参量返回结果值。例如:给定某种商品货号prodid,计算其最高销售单价maxp(OUTPUT)定义如下过程maxPrice:createproceduremaxPrice(@pidchar(20),@maxpnumeric(12,2)OUTPUT)ASselect@maxp=max(singlecost)fromsalesitemwhereprodid=@pid下面语句在SQL中完成调用。DECLARE@maxpNumeric(12,2);EXECmaxPrice'TV9475',@maxp;select@maxp;第8章SQL的系统特征21例子例如:给定某种商品货号prodid,检索销售该商品的订单号orderno及销售单价singlecost。定义如下过程:createprocedureorderbyprod(@pidchar(20))ASselectorderno,singlecostfromsalesitemwhereprodid=@pid下面语句调用该过程并显示结果EXECorderbyprod'TV9475';第8章SQL的系统特征228.3SQL环境第8章SQL的系统特征23环境SQL环境是一个框架,该框架下的数据可以存在,在数据上的SQL操作可以执行。SQL环境被当作某些DBMS的运行环境。SQL的标准结构模式:模式是表、视图、断言、触发等所构成的集合。目录:数据库模式的集合,是用来支持唯一的、可访问术语的基本单元。每个目录有一个或多个模式,在一个目录中模式名必须唯一。簇:目录的集合。每个用户有一个相联的簇:用户可访问的所有目录的集合。第8章SQL的系统特征24模式模式声明的形式为:保留字CREATESCHEMA模式名称模式元素如基本表、视图、断言等声明列表。CREATESCHEMAschemanameelementdeclaration第8章SQL的系统特征25在SQLServer中建立数据库模式1)使用CREATEDATABASE语句创建数据库▲语法:CREATEDATABASEdatabase_name//指定数据库名[ON子句]//指定数据库文件和文件组属性[LOGON子句]//指定日志文件属性其中:ldatabase_name:是所创建的数据库逻辑名称,其命名须遵循SQLServer2000的命名规则,最大长度为128个字符。lON子句:指出了数据库的数据文件和文件组,其格式为:ON[PRIMARY][filespec[,…n]][,filegroup[,…n]]其中PRIMARY用来指定主文件。若不指定主文件,则诸数据文件中的第一个文件将成为主文件。第8章SQL的系统特征26在SQLServer中建立数据库模式数据文件的描述主要给出文件的逻辑名、存储路径、大小及增长特性(这些特征可以与界面创建数据库时对数据库特征的设置相联系)。其语法定义为:filespec::=(NAME=‘逻辑文件名’,FILENAME=‘操作系统文件名’[,SIZE=size][,MAXSIZE={max_size|UNLIMITED}][,FILEGROWTH=growth_increament])fileg
本文标题:数据库系统基础教程(第8章)
链接地址:https://www.777doc.com/doc-3603101 .html