《数据库系统概念教学》3procedu课件



《《数据库系统概念教学》3procedu课件》由会员分享,可在线阅读,更多相关《《数据库系统概念教学》3procedu课件(33页珍藏版)》请在装配图网上搜索。
1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,.,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,.,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,.,*,Functions and Procedural Constructs,函数和过程结构,陈良育,.,Outline,复习:单句,SQL,总结,函数和过程结构定义、优点和使用场景。,结构化程序语言回顾,SQL,过程结构,变量定义,输入输出参数,赋值语句,选择语句,循环语句,游标,表变量,异常处理,运行和调试,实际
2、案例学习,总结,.,单句,SQL,语句 总结,(7)SELECT(8)DISTINCT(10),(1)FROM,(3)JOIN,(2)ON,(4)WHERE,(5)GROUP BY,(6)HAVING,(9)ORDER BY,Update t_stu set stu_name=,张三,age=20 where stu_id=2,Delete from t_stu where stu_id=2 and stu_name=,张三,Insert into t_stu(stu_id,stu_name)values(2,张三,),Create table t_stu(stu_id int,stu_nam
3、e varchar(100),Drop table t_stu,.,所学过的,SQL,关键字,Create,insert,select,update,delete,drop,table,Int,char,varchar,datetime,Null,is not null,is null,From,where,and,or,not,distinct,like(%),as,=,!=,between and,Group by,having,Count,sum,min,max,avg,order by,asc,desc,Join,left outer join,right outer join,ful
4、l join,in,exists,union,union all,with,case when then else,View,primary key,foreign key,constraint,check,Round,ascii,char,left,len,lower,ltrim,replace,reverse,right,rtrim,space,stuff,substring,upper,convert,datepart,getdate,All,any,some,minus,except,intersect(,能不用尽量不用,),.,过程结构,过程结构:即按照第二、三代编程语言的结构来编写
5、多句的,SQL,程序。,SQL1999,规范:,Function,Procedure,method 3,种数据库对象,实现以上,3,种对象,可以使用数据库内部语言,sql,或者外部语言,(c+,java,c#,and etc).,function,routine,subroutine,method,procedure,区别,Function,Procedure.,重点。,.,存储过程优点,/,缺点,预编译,存储过程预先编译好放在数据库内,减少编译所耗费的时间,.,缓存,编译好的存储过程会进入缓存,所以对经常执行的存储过程,除了第一次执行外,其他次执行的速度会有明显提高,.,减少网络传输,特别对
6、于处理一些数据的存储过程,不必像直接用,sql,语句实现那样多次传送数据到客户端,.,性能更快,利用数据库中向量化操作和众多具有较高性能的系统函数,.,更好的封装,用户不需要了解内部具体的表和数据等信息,.,更好的安全性,防止,sql,注入。,缺点:,增加程序员学习成本,需要多学一门语言。,开发调试工具不如普通程序语言,函数库,API,不如普通程序语言丰富。,增加数据库的工作负载。,可移植性较差。如果换数据库,那么需要重新编写存储过程或者函数。,存储过程是天使,or,魔鬼?,Tradeoff,多层系统。,.,系统,Trade-off,.,普通程序语言,(1),赋值,x=1;x:=1;x=1,选
7、择,if(1=x)x=2;else x=3;,If,else,then,elsif,elseif,else if,begin,end,&,|,!,and,or,not.,.,普通程序语言,(2),循环语句:,while,do.while,For,foreach,.,普通程序语言,(3),函数,function,函数调用,/,递归,.,学习程序语言的步骤,变量定义,数字,字符串。,1+1,,数字字符串相互转化,If.else,while,for,case/switch,语句。,数组,函数定义和调用,系统函数库,异常处理,看代码,抄代码,改代码。,10%,高级特性。,一个语言的学习,只有在项目实践
8、后,才能够真正掌握。,.,SQL Server,存储过程,(1),创建,Create procedure pr_t2 as select a,b from t2,执行,Execute pr_t2,或者,exec pr_t2,删除,Drop procedure pr_t2,修改,alter procedure pr_t2 as.,Create procedure pr_t2 as select a,b from t2,Go -,表示执行上一句话,-,注释,/*/,注释,.,SQL Server,存储过程,(2),带参数的存储过程,Create procedure pr_t2,stu_id int
9、,-,形式入参,stu_name varchar(10),As,Begin,SET NOCOUNT ON;-,屏蔽显示多少行受影响的信息,Select stu_id,stu_name from t_stu where stu_id=stu_id and stu_name like stu_name,End,执行,Execute pr_t2 stu_id=1,stu_name=%tom%,Execute pr_t2 1,%tom%,.,SQL Server,存储过程,(3),CREATE PROCEDURE pr_stu,age int,stu_id int OUTPUT,stu_id_str
10、varchar OUT,AS,set stu_id=(SELECT MAX(stu_id)from t_stu where age age);,select stu_id_str=convert(varchar,stu_id);,GO,执行,declare a int,b varchar,exec pr_stu age=30,stu_id=a output,stu_id_str=b output,select a,b,.,SQL Server,存储过程,(4),声明 变量定义,全局变量 (,hungarian,命名法),Declare a int (,如果有多个变量,用逗号隔开,最后一个不要加
11、逗号,),基本赋值语句,Set a=1,或者,select a=1,Select a=count(1),b=sum(a),from t1,Select a=stu_id from t_stu;,如果只有一条记录 那么 就把这条记录的,stu_id,赋给,a,如果有多条记录 那么返回最后一条记录的,stu_id,给,a.,问题是,who is the last one?,.,SQL Server,存储过程,(5),如果查询不返回任何纪录呢?,Declare a int,Select a=1,Select a=stu_id from t_stu where 1=2,Select a,变量的值没有被
12、改变,.,SQL Server,存储过程,(6),Update t_stu set a=age=age+1 where stu_id=2,全局变量,identity,返回最近一个,identiti,值,create table t_stu(stu_id int identity(1,1),stu_name varchar(100),age int);,Daclare stu_id int,Insert into t_stu(stu_name,age)values(Tom,20),Select stu_id=identity,error 0,成功 非零 错误号,rowcount sql,语句所影
13、响的行数。,.,SQL Server,存储过程,(7),选择语句,IF cost 1,Begin,End,.,SQL Server,存储过程,(8),事务,Transaction,一般对,DML,有效,即,insert,update,delete.Select,不改变任何数据,SQL Server,单句,sql,默认自动提交,显式事务,Begin transaction,Update.,Insert.,Insert.,Commit transaction,Begin transaction,begin transaction,commit transaction,Commit transact
14、ion,.,SQL Server,存储过程,(9),当一个存储过程调用另外一个存储过程,通常会发生事务嵌套调用。,在嵌套的情况下,只有当最外层的,commit,,对数据库所有的修改才是永恒的。,SQL Server,为每个客户端连接保存一个已打开的事务,记录在,trancount,中,每次打开一个,,trancount,加一,每次,commit,,减一,直到最后,trancount=1,的时候,commit,保存所有的,Begin transaction transaction=1,Begin transaction transaction=2,Begin transaction transa
15、ction=3,commit transaction transaction=2,commit transaction transaction=1,Commit transaction transaction=0,.,SQL Server,存储过程,(12),Declare cur_stu cursor,Set cur_stu=cursor for select stu_id,stu_name,age from t_stu,Open cur_stu,Fetch next from cur_stu into stu_id,stu_name,age,While(fetch_status=0)-0,
16、成功 非零 失败,Begin,应用处理,fetch next from cur_stu into stu_id,stu_name,age,End,Close cur_stu,Deallocate cur_stu,游标很好写,因为符合我们第三代语言,(c,c+,c#,java),的风格,但是游标实际性能很慢,因为不符合第四代描述型,SQL,向量式风格,.,SQL Server,存储过程,(10),但是,rollback,回滚就不一样,一个,rollback,会取消所有已经打开的事务,Begin transaction -trancount=1,begin transaction -trancount=2,rollback transaction trancount=0,rollback transaction -,本句报错,解决办法,if trancount 0,rollback transaction,保存点:回滚部分事务的机制,Create procedure pr_test val int output as,Begin transaction,save transaction s
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专题党课讲稿:以高质量党建保障国有企业高质量发展
- 廉政党课讲稿材料:坚决打好反腐败斗争攻坚战持久战总体战涵养风清气正的政治生态
- 在新录用选调生公务员座谈会上和基层单位调研座谈会上的发言材料
- 总工会关于2025年维护劳动领域政治安全的工作汇报材料
- 基层党建工作交流研讨会上的讲话发言材料
- 粮食和物资储备学习教育工作部署会上的讲话发言材料
- 市工业园区、市直机关单位、市纪委监委2025年工作计划
- 检察院政治部关于2025年工作计划
- 办公室主任2025年现实表现材料
- 2025年~村农村保洁员规范管理工作方案
- 在深入贯彻中央8项规定精神学习教育工作部署会议上的讲话发言材料4篇
- 开展深入贯彻规定精神学习教育动员部署会上的讲话发言材料3篇
- 在司法党组中心学习组学习会上的发言材料
- 国企党委关于推动基层党建与生产经营深度融合工作情况的报告材料
- 副书记在2025年工作务虚会上的发言材料2篇