SQLServer的程序设计.ppt
《SQLServer的程序设计.ppt》由会员分享,可在线阅读,更多相关《SQLServer的程序设计.ppt(40页珍藏版)》请在三一办公上搜索。
1、第11章 SQL Server的程序设计,教学提示:SQL Server程序设计是读者学习SQL Server数据库的一个重要环节,它对以后程序开发有着直接的决定因素。本章从最简单的Transcat-SQL的语法入手由浅入深地讲解函数、事务、锁和游标等,它们是灵活应用Transcat-SQL语句的关键,在程序设计和开发中起着重要的作用。教学目标:通过本章的学习,读者应该掌握编程的基础知识、基本语句;理解事务、锁和游标等基本原理;能对事务、锁和游标进行简单地运行。,第11章 SQL Server的程序设计,Transact-SQL的语法规则Transact-SQL的语法规则见表11-1,编程基础
2、知识,第11章 SQL Server的程序设计,SQL Server的变量在Transact-SQL语句中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。1局部变量局部变量是一个能够有特定数据类型的对象,它的作用范围仅局限于程序内部,局部变量可以作为计数器来计算循环执行的次数,或是控制循环执行的次数。局部变量被引用时,要在其名称前加上标识符,而且必须先用DECLARE命令定义后才可以使用,其说明形式如下:DECLARE variable_name datatype,variable_name datatype其语法如下:SELECT variable_name=v
3、alueSET variable_name=value【例11.1】声明一个长度为6个字符的变量编号,并赋值。DECLARE 编号CHAR(6)SELECT 编号=010101,编程基础知识,第11章 SQL Server的程序设计,编程基础知识 2全局变量全局变量是SQL Server系统内部使用的变量,其作用范围并不局限于某一程序,任何程序均可调用。全局变量通常存储一些SQL Server 2005的配置设定值和效能统计数据。全局变量时应注意以下几点:(1)全局变量不是由用户的程序定义的,它们是在服务器级定义的。(2)用户只能使用预先定义的全局变量。(3)引用全局变量时,必须以标识符开头。
4、(4)局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。3.注释符在Transact-SQL中可使用两类注释符:(1)ANSI标准的注释符-用于单行注释。(2)与C语言相同的程序注释符号,即/*/,/*用于注释文字的开始,*/用于注释文字的结尾,可在程序中标识多行文字的注释。,第11章 SQL Server的程序设计,算符主要分算术运算符、赋值运算符、位运算符、关系运算符、逻辑运算符以及字符串连接运算符,见表11-2,SQL Server中的运算符,第11章 SQL Server的程序设计,SQL Server 2005提供的函数分为两大类内部函数和用户自定义函数。
5、内部函数内部函数的作用是用来帮助用户获得系统的有关信息、执行有关计算、实现数据转换以及统计功能等。SQL所提供的内部函数又分为系统函数、日期函数、字符串函数、数学函数、集合函数等几种,常 用 函 数,第11章 SQL Server的程序设计,系统函数,表11-3列出一些常用的系统函数及其功能。,第11章 SQL Server的程序设计,【例11.2】查询主机名称。在SQL Server Management Studio查询窗口中运行以下代码:SELECT HOST_NAME()GO【例11.3】返回book1表中书名字段的长度。在SQL Server Management Studio查询窗
6、口中运行以下代码:USE bookGOSELECT COL_LENGTH(book1,书名)AS 书名长度FROM book1GO,系统函数,第11章 SQL Server的程序设计,日期函数用来显示日期和时间的信息。它们处理datatime和 smalldatatime的值,并对其进行算术运算。表11-4列出了所有的日期函数。,日期函数,第11章 SQL Server的程序设计,【例11.4】查询服务器当前的系统日期和时间。在SQL Server Management Studio查询窗口中运行以下代码:USE bookGOSELECT 当前日期=GETDATE(),月=MONTH(GETD
7、ATE(),日=DAY(GETDATE(),年=YEAR(GETDATE();GO,第11章 SQL Server的程序设计,字符串函数用于对字符串进行连接、截取等操作,表11-6列出了常用的字符串函数。,字符串函数,第11章 SQL Server的程序设计,【例11.5】STUFF函数的练习,从原始字符串中删除4个字符,然后再插入另一个字符串。在SQL Server Management Studio查询窗口中运行以下代码:USE bookGOPrint STUFF(ccccadrkuekgoj,4,3,AAA)GO,字符串函数,第11章 SQL Server的程序设计,数学函数用来对数值型
8、数据进行数学运算。表11-7列出了常用的数学函数,数学函数,第11章 SQL Server的程序设计,集合函数也称为统计函数,它对一组值进行计算并返回一个数值。聚合函数经常与SELECT语句的子句一起使用,表11-8列出了常用的聚合函数及其功能。,集合函数,第11章 SQL Server的程序设计,用户可以使用CREATE FUNCTION语句编写自己的函数,以满足特殊需要。可用用户自定义函数来传递0个或多个参数,并返回一个简单的数值 分为3种,分别是标量用户自定义函数、直接表值用户定义函数和多语句表值用户自定义函数 1创建标量用户自定义函数标量用户自定义函数返回一个简单的数值,如int、ch
9、ar、decimal等其语法格式如下:CREATE FUNCTIONowner_name.function_name(parameter_name AS scalar_parameter_data_type=default,n)RETURNS scalar_return_data_typeWITH,nASEEGIN Function_body RETURN scalar_expressionEND,用户自定义函数,第11章 SQL Server的程序设计,【例11.7】创建一个自定义函数,返回特定出版社所出书的平均定价。在SQL Server Management Studio查询窗口中运行以
10、下代码:USE bookGOCREATE FUNCTION Avgdingji_book1(出版社 nchar(20)RETURNS FLOATASBEGINDECLARE 平均定价 FLOATSET 平均定价=(SELECT AVG(定价)FROM book1WHERE 出版社=出版社)RETURN 平均定价END使用下面语句对刚创建的函数进行操作。在SQL Server Management Studio查询窗口中运行以下代码:USE bookGOSELECT dbo.Avgdingji_book1(中国长安)AS 平均成绩GO,用户自定义函数,第11章 SQL Server的程序设计,表
11、值函数返回一个Table型数据,对直接表值用户定义函数而言,返回的结果只是一系列表值,没有明确的函数体。其语法格式为:CREATE FUNCTION owner_name.function_name(parameter_name AS scalar_parameter_data_type=default,.n)RETURNS TABLEWITH,.nASRETURN(select-statement)【例11.8】创建一个函数返回同一个出版社所出书的部分信息。在SQL Server ManagementStudio查询窗口中运行以下代码:USE bookGOCREATE FUNCTION 书的
12、信息(出版社nchar(20)RETURNS TABLEASRETURN(SELECT 书名,定价,出版社FROM book1WHERE 出版社=出版社)使用下面语句对刚创建的函数进行操作:在SQL Server Management Studio查询窗口中运行以下代码:USE bookGOSELECT*FROM dbo.书的信息(海南)GO,创建直接表值用户定义函数,第11章 SQL Server的程序设计,多语句表值用户自定义函数是以BEGIN语句开始,END语句结束的函数体,这些语句可将行插入返回的表中。其语法格式为:CREATE FUNCTION owner_name.function
13、_name(parameter_name AS scalar_parameter_data_type=default,.n)RETURNS return_variable TABLE WITH,.nASBEGINFunction_bodyRRTURNEND其中,return_variable:指一个TABLE类型的变量用于存储和累积返回的表中的数据行。其余参数与标量型用户自定义函数相同。,创建多语句表值用户自定义函数,第11章 SQL Server的程序设计,【例11.9】创建一个函数返回定价高于一定价格的书的信息。在SQL Server ManagementStudio查询窗口中运行以下代码
14、:USE bookGOCREATE FUNCTION money_higher(highermoney money)RETURNS money_higher TABLE(编号nvarchar(255),书名nvarchar(255),定价money,出版社nvarchar(255)ASBEGININSERT money_higherSELECT bookin.编号,书名,定价,出版社FROM bookin,book1WHERE bookin.编号=book1.编号and 定价 highermoneyRETURNENDGO使用下面语句对刚创建的函数进行操作:在SQL Server Managem
15、ent Studio查询窗口中运行以下代码:USE bookGOSELECT*FROM dbo.money_higher(1000)GO,创建多语句表值用户自定义函数,第11章 SQL Server的程序设计,批处理是包含一个或多个Transact-SQL语句的组,它将一次性地发送到SQL Server中执行,应用程序将这些语句作为一个单元一次性地提交给SQL Server,并由SQL Server编译成一个执行计划,然后作为一个整体来执行【例11.10】批处理示例分析。在SQL Server Management Studio查询窗口中运行以下代码:USE bookGOCREATE VIEW
16、 abcASSELECT*FROM book1GOSELECT*FROM book2GO在SQL Server Management Studio查询窗口中运行以下代码,观察系统给出的信息。DECLARE AA INTGOSELECT AA=44GO,批 处 理,第11章 SQL Server的程序设计,1IF.ELSE语句利用IF.ELSE语句能够对一个条件进行测试,并根据测试的结果来执行相应的操作。ELSE语句是可选的。其语法为:IF 逻辑表达式语句块1ELSE语句块2【例11.11】查询是否有书的定价高于8000元的书,如果有则输出该书的信息包括作者姓名,如果没有就输出“不存在高于800
17、0元的书”。在SQL Server Management Studio查询窗口中运行以下代码:USE bookGODECLARE 定价money,message varchar(250)SET 定价=8000IF EXISTS(SELECT*FROM book1WHERE 定价 定价)BEGINSELECT DISTINCT book1.编号,书名,定价,作者姓名FROM book1,teacherWHERE book1.编号=teacher.编号and 定价 定价ENDELSE SET message=不存在高于8000元的书PRINT message,流 控 语 句,第11章 SQL Se
18、rver的程序设计,2BEGINENDBEGIN和END用来定义语句块,必须成对出现。它将多个SQL语句括起来,相当于一个单一语句。常用于下列情况:(1)WHILE循环需要包含多条语句。(2)CASE函数的元素需要包含多条语句。(3)IF.ELSE语句中需要包含多条语句。BEGIN.EDN语句的语法格式如下:EEGINSQL语句1SQL语句2.ENDBEGIN.END语句块通常与其他流控语句综合使用,BEGIN和END分别表示语句块的开始和结束,它们必须成对使用,流 控 语 句,第11章 SQL Server的程序设计,3WHILE、BREAK和CONTINUEWHILE语句用来实现循环结构,
19、其语法为:WHILE逻辑表达式语句块功能:当逻辑表达式为真时,执行循环体,直到逻辑表达式为假。BREAK语句退出WHILE循环,CONTINUE语句跳过语句块中的所有其他语句,开始下一次循环。例如,WHILE逻辑表达式1BENIN语句1IF WHILE逻辑表达式2CONTINUE语句2END,流 控 语 句,第11章 SQL Server的程序设计,4CASE表达式CASE表达式用于多条件分支选择CASE表达式有简单的CASE表达式和搜索型CASE表达式两种。1)简单的CASE表达式CASE 表达式WHEN 表达式 THEN 表达式.ELSE 表达式END2)搜索型CASE表达式CASEWHE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQLServer 程序设计

链接地址:https://www.31ppt.com/p-6520815.html