S04-Tran-sql编程.ppt_第1页
S04-Tran-sql编程.ppt_第2页
S04-Tran-sql编程.ppt_第3页
S04-Tran-sql编程.ppt_第4页
S04-Tran-sql编程.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章T-SQL编程,回顾,如何使用INSERT语句插入一行数据如何使用DELETE语句删除一行数据如何使用UPDATE语句修改一行数据DELETEFROM与TRUNCATETABLE的区别?使用SELECT语句进行简单查询使用SELECT语句进行模糊查询何为聚合函数?如何进行分组查询?何为内连接?自连接?交叉连接?何为左外连接?右外连接?全外连接?,目标,掌握如何定义变量并赋值了解全局变量掌握T-SQL流程控制语句理解SQL中批处理的概念,使用变量,和C语言一样,变量分为:局部变量:局部变量必须以标记作为前缀,如age局部变量的使用也是先声明,再赋值全局变量:全局变量必须以标记作为前缀,如version全局变量由系统定义和维护,是只读的,不能修改全局变量的值,局部变量,例如:DECLAREpsn_namevarchar(30)DECLAREpsn_birthDatesmalldatetime,声明局部变量DECLARE变量名数据类型,赋值SET变量名=值SELECT变量名=值,例如:SETpsn_name=张三SELECTpsn_name=psn_nameFROMtbl_personnelWHEREpsn_id=1,必须确保筛选出的记录只有1条,或,局部变量示例2-1,问题:编写T-SQL查找总经理的姓名?,员工表,分析:第一步,找出总经理一职的ID号;第二步,根据总经理职位的ID号查询总经理的姓名,局部变量示例2-2,/*查找总经理一职的ID*/DECLAREpst_idintSELECTpst_id=pst_idFROMtbl_postWHEREpst_name=总经理/*根据职务ID查找总经理的姓名*/SELECTpsn_nameFROMtbl_personnelWHEREpsn_post=pst_idGO,演示:使用局部变量,参考语句,全局变量,全局变量都使用两个标志作为前缀,全局变量示例,PRINTSQLServer的版本+VERSIONPRINT服务器的名称:+SERVERNAMEINSERTINTOtbl_personnel(psn_name,psn_idCard)VALUES(牛五十,123456789123456789)-如果大于表示上一条语句执行有错误PRINT当前错误号+convert(varchar(5),ERROR)PRINT新插入的员工编号为:+convert(varchar(5),IDENTITY)GO,演示:使用全局变量,参考语句,逻辑控制语句,IFELSE语句,C#语言中的if-else语句if(条件)语句1;语句2;else语句1;语句2;,SQL中的IF-ELSE语句IF条件BEGIN语句1语句2ENDELSEBEGIN语句1;语句2;END,同C#一样:ELSE是可选部分C#中的就是T-SQL中的BEGIN-END如果有多条语句,才需要BEGIN-END语句块,IF-ELSE示例2-1,问题:统计赵一的年龄,如果在30岁以上,则在人群列当中显示中年人,如果在30岁以下,则在人群列当中显示青年人,分析:第一步,获得赵一的年龄第二步,用IFELSE判断是青年人还是中年人;第三步,将判断结果显示出来,IF-ELSE示例2-2,逻辑控制语句,WHILE循环语句,C#语言中的while语句while(条件)语句1;语句2;break;,SQL中的WHILE语句WHILE(条件)BEGIN语句1语句2BREAKEND,同C#语言一样:BREAK表示退出循环如果有多条语句,才需要BEGIN-END语句块,WHILE示例2-1,问题:统计所有员工的年龄,如果在30岁以上,则在人群列当中显示中年人,如果在30岁以下,则在人群列当中显示青年人,分析:第一步,获得员工的年龄第二步,用IFELSE判断是青年人还是中年人;第三步,WHILE循环判断,DECLAREcntint,iint,ageint,tmpvarchar(30)SETi=1IFEXISTS(SELECT*FROM#tmp_psn)DROPTABLE#tmp_psnSELECTrow_number()OVER(ORDERBYpsn_id)伪列,psn_name姓名,datediff(yy,psn_birthdate,getDate()年龄,tmp人群INTO#tmp_psn-使用了临时表FROMtbl_personnelSELECTcnt=count(*)FROM#tmp_psnWHILEi30UPDATE#tmp_psnSET人群=中年人WHERE伪列=iELSEUPDATE#tmp_psnSET人群=青年人WHERE伪列=iSETi=i+1ENDSELECT*FROM#tmp_psn,WHILE示例2-2,结果,逻辑控制语句,CASEEND多分支语句,CASEWHEN条件1THEN结果1WHEN条件2THEN结果2ELSE其他结果END,CASE-END示例2-1,问题:还是刚才的问题:统计所有员工的年龄,如果在30岁以上,则在人群列当中显示中年人,如果在30岁以下,则在人群列当中显示青年人,SELECTpsn_name姓名,datediff(yy,psn_birthDate,getDate()年龄,人群=CASEWHENdatediff(yy,psn_birthDate,getDate()30THEN中年人WHENdatediff(yy,psn_birthDate,getDate()=30THEN青年人ENDFROMtbl_personnelpsn,CASEEND示例2-2,批处理语句,批处理是包含一个或多个SQL语句的组,从应用程序一次性地发送到SQLServer执行SQLServer将批处理语句编译成一个可执行单元,此单元称为执行计划。执行计划中的语句每次执行一条,客户端应用程序,SQLServer服务器,批处理语句:语句1语句2GO,批处理语句示例,SELECT*FROMtbl_personnelSELECT*FROMtbl_titleUPDATEtbl_titleSETttl_name=经济师GO,GO是批处理的标志,表示SQLServer将这些T-SQL语句编译为一个执行单元,提高执行效率一般是将一些逻辑相关的业务操作语句,放置在同一批中,这完全由业务需求和代码编写者决定,总结,如何声名变量及如何赋值有两种赋值方式set|selectSql中的控制语句分支语句/循环语句如何设置语句块(beginend)如何使用多分支语句casewhenth

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论