《数据库系统概念教学课件》3procedu.ppt
《《数据库系统概念教学课件》3procedu.ppt》由会员分享,可在线阅读,更多相关《《数据库系统概念教学课件》3procedu.ppt(33页珍藏版)》请在三一办公上搜索。
1、Functions and Procedural Constructs函数和过程结构陈良育,Outline,复习:单句SQL 总结函数和过程结构定义、优点和使用场景。结构化程序语言回顾SQL过程结构变量定义,输入输出参数赋值语句选择语句循环语句游标表变量异常处理运行和调试实际案例学习总结,单句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=2Delete from
2、 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_name varchar(100)Drop table t_stu,所学过的SQL关键字,Create,insert,select,update,delete,drop,tableInt,char,varchar,datetimeNull,is not null,is nullFrom,where,and,or,not,distinct,like(%),as,=,
3、!=,between andGroup by,havingCount,sum,min,max,avgorder by,asc,descJoin,left outer join,right outer join,full joinin,exists,union,union all,with,case when then elseView,primary key,foreign key,constraint,checkRound,ascii,char,left,len,lower,ltrim,replace,reverse,right,rtrim,space,stuff,substring,upp
4、er,convert,datepart,getdateAll,any,some,minus,except,intersect(能不用尽量不用),过程结构,过程结构:即按照第二、三代编程语言的结构来编写多句的SQL程序。SQL1999规范:Function,Procedure,method 3种数据库对象实现以上3种对象,可以使用数据库内部语言sql 或者外部语言(c+,java,c#,and etc).function,routine,subroutine,method,procedure 区别Function,Procedure.重点。,存储过程优点/缺点,预编译,存储过程预先编译好放在数据
5、库内,减少编译所耗费的时间.缓存,编译好的存储过程会进入缓存,所以对经常执行的存储过程,除了第一次执行外,其他次执行的速度会有明显提高.减少网络传输,特别对于处理一些数据的存储过程,不必像直接用sql语句实现那样多次传送数据到客户端.性能更快,利用数据库中向量化操作和众多具有较高性能的系统函数.更好的封装,用户不需要了解内部具体的表和数据等信息.更好的安全性,防止sql注入。缺点:增加程序员学习成本,需要多学一门语言。开发调试工具不如普通程序语言,函数库API不如普通程序语言丰富。增加数据库的工作负载。可移植性较差。如果换数据库,那么需要重新编写存储过程或者函数。存储过程是天使or魔鬼?Tra
6、deoff,多层系统。,系统 Trade-off,普通程序语言(1),赋值 x=1;x:=1;x=1选择 if(1=x)x=2;else x=3;If,else,then,elsif,elseif,else if,begin,end&,|,!,and,or,not.,普通程序语言(2),循环语句:while,do.whileFor,foreach,普通程序语言(3),函数 function函数调用/递归,学习程序语言的步骤,变量定义,数字,字符串。1+1,数字字符串相互转化If.else,while,for,case/switch语句。数组函数定义和调用系统函数库异常处理看代码,抄代码,改代码
7、。10%高级特性。一个语言的学习,只有在项目实践后,才能够真正掌握。,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 t2Go-表示执行上一句话-注释/*/注释,SQL Server 存储过程(2),带参数的存储过程Create procedure pr_t2stu_id
8、 int,-形式入参stu_name varchar(10)AsBegin 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 varchar
9、 OUTAS 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 varcharexec pr_stu age=30,stu_id=a output,stu_id_str=b outputselect a,b,SQL Server 存储过程(4),声明 变量定义 全局变量(hungarian命名法)Declare a int(如果有多个变量,用逗号隔开,最后一个不要加逗号)基本赋值语句Set a=1 或者 sel
10、ect a=1 Select a=count(1),b=sum(a)from t1Select a=stu_id from t_stu;如果只有一条记录 那么 就把这条记录的stu_id赋给a如果有多条记录 那么返回最后一条记录的stu_id给a.问题是who is the last one?,SQL Server 存储过程(5),如果查询不返回任何纪录呢?Declare a intSelect a=1Select a=stu_id from t_stu where 1=2Select a 变量的值没有被改变,SQL Server 存储过程(6),Update t_stu set a=age=
11、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 intInsert into t_stu(stu_name,age)values(Tom,20)Select stu_id=identityerror 0 成功 非零 错误号rowcount sql语句所影响的行数。,SQL Server 存储过程(7),选择语句IF cost 1Begin End,SQL Server
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库系统概念教学课件 数据库 系统 概念 教学 课件 procedu
链接地址:https://www.31ppt.com/p-5898651.html