您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 第3章 T-SQL 编程基础
Copybyspring行动导向四T-SQL编程基础问题如何编制类似C语言的基本程序?引用数据库对象的规则Transact-SQL的语法元素SQLServer中标识符的命名规则T-SQL定义、功能、组成定义Transact-SQL(简写为T-SQL)是SQLServer对标准SQL功能的增强与扩充功能T-SQL可以完成数据库上的各种操作,而且可以编制复杂的例行程序组成•系统内置函数语言基础T-SQL学习要点•变量•显示和输出语句•流程控制语句•CASE表达式•标识符•注释•批处理•运算符语言基础标识符定义标识符是指用户在SQLServer中定义的服务器、数据库、数据库对象、变量和列等对象名称分类常规标识符定界标识符T-SQLT-SQL语言基础标识符常规标识符命名原则标识符长度可以为1~128个字符。标识符的首字符必须为Unicode2.0标准所定义的字母或_、@、#符号。标识符第一个字符后面的字符可以为UnicodeStandard2.0所定义的字符、数字或@、#、$、_符号。标识符内不能嵌入空格和特殊字符。标识符不能与SQLServer中的保留关键字同名返回SELECT*FROMinformation此为常规标识符问题:下面的标识符是否符合SQLServer的命名规则:$table@table#_var_1orderdetailsorder标识符定界标识符实质包含在双引号(“)或者方括号([])内的标识符号示例CREATE[table](column1CHAR(10)NOTNULLPRIMARYKEY,column2INT)表名Table与T-SQL保留字相同,用方括号来分隔返回语言基础注释定义注释是程序代码中不执行的文本字符串。分类--用于单行注释/**/用于多行注释示例【例6-2】T-SQLT-SQL语言基础注释使用单行与多行注释返回USEstudentGOSELECT*FROMinformation--从表information中查询信息GO/*下面SQL语句查询学生信息*/SELECT*FROMinformationGO语言基础批处理说明多条语句作为一个批处理执行时,其语句之间用GO分隔示例【例6-3】批处理语句T-SQLT-SQL语言基础USEstudentGOCREATEVIEWv_informationASSELECT*FROMinformationGOSELECT*FROMv_informationGO语言基础运算符算术运算符位运算符比较运算符逻辑运算符T-SQLT-SQL语言基础赋值运算符字符串连接符单目运算符运算符优先级运算符赋值运算符SQLServer中的赋值运算符为等号(=),它将表达式的值赋给一个变量【例6-4】使用赋值运算符。返回DECLARE@kccjINTSET@kccj=80运算符字符串连接符实现字符串之间的连接操作【例6-5】实现字符串连接。返回SELECT'abc'+'123'返回结果为:abc123运算符单目运算符只有一个操作数的运算符包括+(正)、-(负)和~(位反)使用单目运算符返回DELCLARE@intNumINTSET@intNum=10SELECT-@intNum返回结果为:-10运算符运算符优先级+(正)、-(负)、~(按位取反)*、/、%+(加)、+(连接)、-(减)=、、、=、=、、!=、!和!(比较运算符)^(位异或)、&(位与)、|(位或)NOTANDOR、ALL、ANY、BETWEEN、IN、LIKE、SOME=(赋值)返回变量:在程序运行过程中其值是变化的量局部变量(以@开头;使用DECLARE语句声明)【问题】DECLARE@var1int,@var2moneySELECT@var1=50,@var2=$29.95SELECT@var1,@var2全局变量(也称配置函数,是系统定义的变量,以@@开头;用户只能使用)例如:@@version@@rowcount声明两个变量@var1和@var2,它们的数据类型分别为int和charDECLARE@var1INT,@var2CHAR(8)DECLARE语句中可以同时声明多个局部变量,它们相互之间用逗号分隔返回局部变量变量赋值变量声明后,DECLARE语句将变量初始化为NULL,可使用SET语句为变量赋值基本语句:示例•【例6-9】•【例6-10】局部变量SELECT@variable_name=expression[FROM表名WHERE条件]利用SET语句为所声明的@birthday变量赋值DECLARE@birthdaydatetimeSET@birthday='2006-4-1'返回用SELECT语句将Course表中的最高学分赋值给变量@maxxf:返回结果:USEstudentDECLARE@maxxfINTSELECT@maxxf=MAX(c_credit)FROMcoursePRINT@maxxf返回声明@maxxf变量给@maxxf变量赋值输出@maxxf的值5执行UPDATE语句并用@@ROWCOUNT来检测是否有发生更改的行返回结果USEstudentGOUPDATEinformationSETs_name='张三'WHEREs_no='200200000001'IF@@ROWCOUNT=0PRINT'警告:没有数据被更新!'返回返回受上一语句影响的行数语言基础流程控制语句流程控制语句用于控制T-SQL的执行流程BEGIN…END语句条件语句转移语句循环语句返回语句T-SQLT-SQL语言基础流程控制语句BEGIN…END语句基本语句格式示例:流程控制语句BEGIN{SQL语句|语句块}ENDDECLARE@MyVarfloatSET@MyVar=456.256BEGINPRINT'变量@MyVar的值为:'PRINTCAST(@MyVarASVARCHAR(12))END流程控制语句条件语句基本语句格式示例:流程控制语句IF布尔表达式{SQL语句|语句块}[ELSE{SQL语句|语句块}]USEstudentGOIFEXISTS(SELECT*FROMinformationWHEREs_name='刘志')PRINT'刘志'ELSEPRINT'没有名为刘志的同学'流程控制语句转移语句基本语句格式说明:将SQL语句的执行流程无条件转移到用户所指定的标号处,一般避免使用GOTO语句流程控制语句GOTO标号流程控制语句循环语句基本语句格式示例:求1到10之间的奇数和流程控制语句WHILE布尔表达式{SQL语句|语句块}[BREAK]{SQL语句|语句块}[CONTINUE][SQL语句|语句块]DECLARE@iSMALLINT,@sumSMALLINTSET@i=1SET@sum=0WHILE@i=10BEGINSET@sum=@sum+@iSET@i=@i+1ENDPRINT'1到10之间的奇数和为'+STR(@sum)流程控制语句返回语句基本语句格式说明:RETURN语句用于无条件地终止一个查询、存储过程或者批处理,此时位于RETURN语句之后的程序将不会被执行流程控制语句RETURN[integer_expression]返回整形值语言基础CASE表达式CASE函数可以计算多个条件式,并将其中一个符合条件的结果表达式返回。分类:简单CASE函数搜索CASE函数T-SQLT-SQL语言基础CASE表达式简单CASE函数将某个表达式与一组简单表达式进行比较以确定结果基本语句格式示例•【例6-17】CASE表达式CASEinput_expressionWHENWHEN_expressionTHENresult_expression[...n][ELSEELSE_result_expression]END把查询到国家的英文名用中文显示返回结果返回USEpubsSELECTpub_name,国家=casecountryWHEN'USA'THEN'美国'WHEN'Germany'THEN'德国'WHEN'France'THEN'法国'ELSE'其它'ENDFROMpublishersCASE表达式搜索CASE函数CASE搜索函数计算一组布尔表达式以确定结果基本语句格式示例•【例6-18】CASE表达式CASEWHENBoolean_expressionTHENresult_expression[...n][ELSEELSE_result_expression]END设置student数据库中score表中的成绩对应的等级返回结果返回USEstudentGOSELECT*,等级=caseWHENgrade=90THEN'优秀'WHENgrade=80THEN'良'WHENgrade=70THEN'中'WHENgrade=60THEN'及格'ELSE'不及格'ENDFROMscoreWHEREsemester='200401'语言基础系统内置函数数据转换函数字符串函数日期和时间函数聚合函数数学函数T-SQLT-SQL语言基础系统内置函数数据转换函数示例【例6-19】【例6-20】系统内置函数函数功能CAST将某种数据类型的表达式显式转换为另一种数据类型CONVERT将某种数据类型的表达式显式转换为另一种数据类型,可以指定长度;Style为日期格式样式【例6-19】使用CAST数据类型转换函数返回结果返回USEstudentGOSELECT'成绩是:'+CAST(gradeASVARCHAR(12))FROMscoreWHEREgrade85.0使用Convert(CHAR(20),@birthday)将日期型变量@birthday转换为字符型返回结果返回DECLARE@birthdaydatetime;SELECT@birthday=s_birthFROMinformationWHEREs_name='周天'PRINT'周天的生日是:'+Convert(CHAR(20),@birthday)周天的生日是:0420198412:00AM系统内置函数字符串函数系统内置函数示例【例6-21】【例6-22】使用xxx替换abcdefghi中的字符串cde返回结果返回SELECTREPLACE('abcdefghicde','cde','xxx')abxxxfghixxx使用LTRIM消除字符串左边的空格返回结果返回SELECT'消除左边空格的结果:'+LTRIM('1234')消除左边空格的结果:1234系统内置函数日期和时间函数示例【例6-22】【例6-23】系统内置函数取得系统当前日期返回结果返回SELECT'当前日期:'+convert(CHAR(50),GETDATE())当前日期:1127200610:28AM取得系统当前日期中的月份返回结果SELECT'月份为:'+convert(CHAR(10),DATEPART(month,GETDATE()))月份为:11返回系统内置函数聚合函数示例【例6-24】取得数据库所在的计算机名返回结果SELECTHOST_NAME()E-EIW9TD75VVEV0系统内置函数系统内置函数数学函数示例【例6-25】系统内置函数显示使用CEILING函数的正数、负数和零值返回结果SELECTCEILING(123.45),CEILING(-123.45),CEILING(0.0)124-1230返回存储过程常用系统存储过程sp_helpsp_helptextsp_dependssp_stored_proceduressp_rename存储过程常用存储过程sp_help显示存储过程的参数及其数据类型基本语句格式返回sp_help[[
本文标题:第3章 T-SQL 编程基础
链接地址:https://www.777doc.com/doc-3836705 .html