数据库编程.ppt
《数据库编程.ppt》由会员分享,可在线阅读,更多相关《数据库编程.ppt(55页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、数据库编程数据库编程7.27.1Transact-SQL语言语言-概述概述n n标准的标准的标准的标准的SQLSQL不支持流程控制,仅仅是一些简单不支持流程控制,仅仅是一些简单不支持流程控制,仅仅是一些简单不支持流程控制,仅仅是一些简单的语句,有时使用起来不方便。的语句,有时使用起来不方便。的语句,有时使用起来不方便。的语句,有时使用起来不方便。大型的关系型大型的关系型大型的关系型大型的关系型数据库系统都在标准数据库系统都在标准数据库系统都在标准数据库系统都在标准SQLSQL基础上,结合自身的基础上,结合自身的基础上,结合自身的基础上,结合自身的特点,推出了可以编程的、结构化的特点,推出了可以
2、编程的、结构化的特点,推出了可以编程的、结构化的特点,推出了可以编程的、结构化的SQLSQL编程编程编程编程语言语言语言语言。例如,。例如,。例如,。例如,SQLServerSQLServer的的的的Transact-SQLTransact-SQL、OracleOracle的的的的PL/SQLPL/SQL等。等。等。等。n n在在在在Transact-SQLTransact-SQL中,标准的中,标准的中,标准的中,标准的SQLSQL语句可畅通语句可畅通语句可畅通语句可畅通无阻。无阻。无阻。无阻。Transact-SQLTransact-SQL最主要的用途是最主要的用途是最主要的用途是最主要的用
3、途是设计服设计服设计服设计服务器端的能够在后台执行的程序块务器端的能够在后台执行的程序块务器端的能够在后台执行的程序块务器端的能够在后台执行的程序块,如存储过,如存储过,如存储过,如存储过程和触发器等。程和触发器等。程和触发器等。程和触发器等。7.37.1Transact-SQL语言语言-Transact-SQL程序程序的结构的结构1n n通过该程序可以看出,一个通过该程序可以看出,一个通过该程序可以看出,一个通过该程序可以看出,一个Transact-SQLTransact-SQL程序与一般程序与一般程序与一般程序与一般的高级语言的语法要素是一致的,的高级语言的语法要素是一致的,的高级语言的语
4、法要素是一致的,的高级语言的语法要素是一致的,主要含有注释、变主要含有注释、变主要含有注释、变主要含有注释、变量与常量、各种运算符、函数与表达式、流程控制语量与常量、各种运算符、函数与表达式、流程控制语量与常量、各种运算符、函数与表达式、流程控制语量与常量、各种运算符、函数与表达式、流程控制语句等句等句等句等。n n下面通过一个实例来说明下面通过一个实例来说明下面通过一个实例来说明下面通过一个实例来说明Transact-SQLTransact-SQL程序的基本结程序的基本结程序的基本结程序的基本结构。构。构。构。n n例例例例7-17-1 打开学生选修课程管理数据库打开学生选修课程管理数据库打
5、开学生选修课程管理数据库打开学生选修课程管理数据库scsc,并从数据表,并从数据表,并从数据表,并从数据表StudentStudent中计算中计算中计算中计算managementmanagement学生数,如果该院人数学生数,如果该院人数学生数,如果该院人数学生数,如果该院人数超过超过超过超过800800,则程序输出,则程序输出,则程序输出,则程序输出“这个学院的人数超过这个学院的人数超过这个学院的人数超过这个学院的人数超过800800”,否,否,否,否则输出则输出则输出则输出“这个学院的人数没有超过这个学院的人数没有超过这个学院的人数没有超过这个学院的人数没有超过800800”。7.4USE
6、SC/*USESC/*将学生选修课程管理数据库将学生选修课程管理数据库将学生选修课程管理数据库将学生选修课程管理数据库SCSC置为当前数据库置为当前数据库置为当前数据库置为当前数据库*/*/GOGODECLAREDECLAREStuNumINTStuNumINTSETSETStuNumStuNum=800=800IFIF(SELECTCOUNT(*)FROMTable_StudentWHERE(SELECTCOUNT(*)FROMTable_StudentWHERESchool=School=managementmanagement)StuNum)StuNum-输出结果输出结果输出结果输出结果
7、PRINTPRINT 这个学院的人数超过这个学院的人数超过这个学院的人数超过这个学院的人数超过+CONVERT(VARCHAR(10),StuNum)+CONVERT(VARCHAR(10),StuNum)ELSEELSE-输出结果输出结果输出结果输出结果PRINTPRINT 这个学院的人数没有超过这个学院的人数没有超过这个学院的人数没有超过这个学院的人数没有超过+CONVERT(VARCHAR(10),+CONVERT(VARCHAR(10),StuNum)StuNum)-执行批处理执行批处理执行批处理执行批处理GOGO7.1Transact-SQL语言语言-Transact-SQL程序程序
8、的结构的结构27.57.1Transact-SQL语言语言-Transact-SQL程序的批程序的批处理处理n nTransact-SQLTransact-SQL程序内两个程序内两个程序内两个程序内两个“GOGO”标记符之间的代码称标记符之间的代码称标记符之间的代码称标记符之间的代码称为一个为一个为一个为一个“批批批批”。SQLServerSQLServer对对对对Transact-SQLTransact-SQL程序的编程序的编程序的编程序的编译和执行是按照译和执行是按照译和执行是按照译和执行是按照“批批批批”为单位来进行的,称为批处理。为单位来进行的,称为批处理。为单位来进行的,称为批处理。
9、为单位来进行的,称为批处理。n nGOGO语句本身并不是语句本身并不是语句本身并不是语句本身并不是Transact-SQLTransact-SQL语句的组成部分,语句的组成部分,语句的组成部分,语句的组成部分,它只是一个用于表示批处理结束的前端指令。它只是一个用于表示批处理结束的前端指令。它只是一个用于表示批处理结束的前端指令。它只是一个用于表示批处理结束的前端指令。“批批批批”中中中中的语句要么编译成功都执行,要么编译不成功都不执的语句要么编译成功都执行,要么编译不成功都不执的语句要么编译成功都执行,要么编译不成功都不执的语句要么编译成功都执行,要么编译不成功都不执行。行。行。行。n n一个
10、一个一个一个Transact-SQLTransact-SQL程序中可以包含多个程序中可以包含多个程序中可以包含多个程序中可以包含多个“批批批批”。7.67.1Transact-SQL语言语言-变量变量1n n在在在在Transact-SQLTransact-SQL中,变量要声明后才可使用。中,变量要声明后才可使用。中,变量要声明后才可使用。中,变量要声明后才可使用。ECLAREECLARE命令用于声明一个或多个变量。命令用于声明一个或多个变量。命令用于声明一个或多个变量。命令用于声明一个或多个变量。DECLAREvariabledata_typeDECLAREvariabledata_type
11、,nnn n在用在用在用在用DECLAREDECLARE命令声明之后,所有的变量都被赋予命令声明之后,所有的变量都被赋予命令声明之后,所有的变量都被赋予命令声明之后,所有的变量都被赋予初值初值初值初值NULLNULL。需要使用。需要使用。需要使用。需要使用SELECTSELECT或或或或SETSET命令来给变量命令来给变量命令来给变量命令来给变量赋值。赋值。赋值。赋值。SELECTSELECT局部变量局部变量局部变量局部变量=变量值变量值变量值变量值 或或或或SETSET局部变量局部变量局部变量局部变量=变变变变量值量值量值量值n n如果变量为字符型,那么,在如果变量为字符型,那么,在如果变量
12、为字符型,那么,在如果变量为字符型,那么,在data_typedata_type表达式中应表达式中应表达式中应表达式中应指明其最大长度,否则系统认为其长度为指明其最大长度,否则系统认为其长度为指明其最大长度,否则系统认为其长度为指明其最大长度,否则系统认为其长度为1 1。7.77.1Transact-SQL语言语言-变量变量2n n例例例例7-27-2DECLAREDECLARE命令的用法。命令的用法。命令的用法。命令的用法。DECLARExCHAR,yCHAR(10)DECLARExCHAR,yCHAR(10)SELECTx=SELECTx=123123,y=,y=data_typedata
13、_type PRINTxPRINTxPRINTyPRINTyn n则运行结果为:则运行结果为:则运行结果为:则运行结果为:1 1data_typedata_type7.87.1Transact-SQL语言语言-流程控制命令流程控制命令1n nTransact-SQLTransact-SQL使用的流程控制命令与常见的使用的流程控制命令与常见的使用的流程控制命令与常见的使用的流程控制命令与常见的程序设计语言类似,主要有以下几种控制命令。程序设计语言类似,主要有以下几种控制命令。程序设计语言类似,主要有以下几种控制命令。程序设计语言类似,主要有以下几种控制命令。n n1 1)BEGINBEGINEN
14、DENDBEGINBEGINENDEND的语法格式如下:的语法格式如下:的语法格式如下:的语法格式如下:BEGINBEGIN ENDENDn nBEGINBEGINENDEND用来设定一个程序块用来设定一个程序块用来设定一个程序块用来设定一个程序块,将在,将在,将在,将在BEGINBEGIN ENDEND内的所有程序视为一个单元执行。内的所有程序视为一个单元执行。内的所有程序视为一个单元执行。内的所有程序视为一个单元执行。7.9n n2 2)IFIFELSEELSEIFIFELSEELSE的语法格式如下:的语法格式如下:的语法格式如下:的语法格式如下:IFIF ELSEELSE n n其中,其
15、中,其中,其中,可以是各种表达式的组合,但表达式可以是各种表达式的组合,但表达式可以是各种表达式的组合,但表达式可以是各种表达式的组合,但表达式的值必须是的值必须是的值必须是的值必须是逻辑值逻辑值逻辑值逻辑值TrueTrue或或或或FalseFalse。ELSEELSE子句是可选的,最子句是可选的,最子句是可选的,最子句是可选的,最简单的简单的简单的简单的IFIF语句没有语句没有语句没有语句没有ELSEELSE子句部分。子句部分。子句部分。子句部分。IFIFELSEELSE用来判断当用来判断当用来判断当用来判断当条件成立时执行条件成立时执行条件成立时执行条件成立时执行IFIF后的一段程序,条件
16、不成立时执行后的一段程序,条件不成立时执行后的一段程序,条件不成立时执行后的一段程序,条件不成立时执行ELSEELSE后的一段程序。后的一段程序。后的一段程序。后的一段程序。7.1Transact-SQL语言语言-流程控制命令流程控制命令27.10n n3 3)IFNOTEXISTSIFNOTEXISTSIFNOTEXISTSIFNOTEXISTS的语法格式如下:的语法格式如下:的语法格式如下:的语法格式如下:IFNOTEXISTSIFNOTEXISTS(SELECTSELECT子查询)子查询)子查询)子查询)ELSEELSE n nIFEXISTSIFEXISTS语句用于检测数据是否存在,如
17、果语句用于检测数据是否存在,如果语句用于检测数据是否存在,如果语句用于检测数据是否存在,如果EXISTSEXISTS后面后面后面后面的的的的“SELECTSELECT子查询子查询子查询子查询”的结果不为空,即检测到有数据记录的结果不为空,即检测到有数据记录的结果不为空,即检测到有数据记录的结果不为空,即检测到有数据记录存在时,就执行其后面的程序块,否则执行存在时,就执行其后面的程序块,否则执行存在时,就执行其后面的程序块,否则执行存在时,就执行其后面的程序块,否则执行ELSEELSE后面的程后面的程后面的程后面的程序块。序块。序块。序块。n n当采用当采用当采用当采用NOTNOT关键字时,则与
18、上面的功能正好相反。关键字时,则与上面的功能正好相反。关键字时,则与上面的功能正好相反。关键字时,则与上面的功能正好相反。7.1Transact-SQL语言语言-流程控制命令流程控制命令37.11n n例例例例7-37-3 从从从从StudentStudent查询学号为查询学号为查询学号为查询学号为“s001s001”的同学的数据记录,的同学的数据记录,的同学的数据记录,的同学的数据记录,如果存在,则输出如果存在,则输出如果存在,则输出如果存在,则输出“存在学号为存在学号为存在学号为存在学号为s001s001的学生的学生的学生的学生”;否则输出;否则输出;否则输出;否则输出“不存在学号为不存在
19、学号为不存在学号为不存在学号为s001s001的学生的学生的学生的学生”。USESC/*USESC/*将学生选修课程数据库置为当前数据库将学生选修课程数据库置为当前数据库将学生选修课程数据库置为当前数据库将学生选修课程数据库置为当前数据库*/*/GOGODECLAREmessageVARCHAR(255)/*DECLAREmessageVARCHAR(255)/*定义变量定义变量定义变量定义变量message*/message*/IFIFEXISTS(SELECT*FROMTable_StudentWHEREEXISTS(SELECT*FROMTable_StudentWHEREStudent
20、ID=StudentID=s001s001)SETmessage=SETmessage=存在学号为存在学号为存在学号为存在学号为s001s001的学生的学生的学生的学生 ELSEELSESETmessage=SETmessage=不存在学号为不存在学号为不存在学号为不存在学号为s001s001 PRINTmessagePRINTmessageGOGO7.1Transact-SQL语言语言-流程控制命令流程控制命令47.12n n4 4)CASECASECASECASE命令的语法格式如下:命令的语法格式如下:命令的语法格式如下:命令的语法格式如下:CASECASE WHENWHENTHENTHE
21、N WHENWHENTHENTHEN ELSEELSEENDENDn n该语句的执行过程是:该语句的执行过程是:该语句的执行过程是:该语句的执行过程是:将将将将CASECASE后面表达式的值与各后面表达式的值与各后面表达式的值与各后面表达式的值与各WHENWHEN子子子子句中的表达式的值进行比较,如果二者相等,则返回句中的表达式的值进行比较,如果二者相等,则返回句中的表达式的值进行比较,如果二者相等,则返回句中的表达式的值进行比较,如果二者相等,则返回THENTHEN后后后后的表达式的值,然后跳出的表达式的值,然后跳出的表达式的值,然后跳出的表达式的值,然后跳出CASECASE语句,否则返回语
22、句,否则返回语句,否则返回语句,否则返回ELSEELSE子句中子句中子句中子句中的表达式的值。的表达式的值。的表达式的值。的表达式的值。7.1Transact-SQL语言语言-流程控制命令流程控制命令57.13n n例例例例7-47-4 统计各个院的人数,如果人数超过统计各个院的人数,如果人数超过统计各个院的人数,如果人数超过统计各个院的人数,如果人数超过12001200人,则人,则人,则人,则输出输出输出输出“大院大院大院大院”;800800人到人到人到人到12001200人输出人输出人输出人输出“中等院系中等院系中等院系中等院系”;少于;少于;少于;少于800800人则输出人则输出人则输出
23、人则输出“小院小院小院小院”。SELECTSchool,Type=CASESELECTSchool,Type=CASEWHENWHENCOUNT(*)1200COUNT(*)1200THENTHEN 大院大院大院大院 WHENWHENCOUNT(*)BETWEEN800AND1200COUNT(*)BETWEEN800AND1200THENTHEN 中等中等中等中等院系院系院系院系 WHENWHENCOUNT(*)800COUNT(*)800THENTHEN 小院小院小院小院 ENDENDFROMTable_StudentFROMTable_StudentGROUPBYSdepGROUPBYS
24、dep7.1Transact-SQL语言语言-流程控制命令流程控制命令67.14n n5 5)WHILEWHILECONTINUECONTINUEBREAKBREAKWHILEWHILECONTINUECONTINUEBREAKBREAK的语法格式如下:的语法格式如下:的语法格式如下:的语法格式如下:WHILEWHILE BEGINBEGIN BREAKBREAKCONTINUECONTINUE 命令行或程序块命令行或程序块命令行或程序块命令行或程序块 ENDENDn nWHILEWHILE命令在设定的条件成立时会重复执行命令行或程序块。命令在设定的条件成立时会重复执行命令行或程序块。命令在设
25、定的条件成立时会重复执行命令行或程序块。命令在设定的条件成立时会重复执行命令行或程序块。CONTINUECONTINUE命令可以让程序跳过命令可以让程序跳过命令可以让程序跳过命令可以让程序跳过CONTINUECONTINUE命令之后的语句,命令之后的语句,命令之后的语句,命令之后的语句,回到回到回到回到WHILEWHILE循环的第一行,继续进行下一次循环。循环的第一行,继续进行下一次循环。循环的第一行,继续进行下一次循环。循环的第一行,继续进行下一次循环。BREAKBREAK命令命令命令命令则让程序完全跳出循环,结束则让程序完全跳出循环,结束则让程序完全跳出循环,结束则让程序完全跳出循环,结束
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 编程
限制150内