第8章 存储过程、触发器和函数 数据库原理及应用SQL Server 2008数据库原理及应用课件
8.5 函数
1. 2. 3. 4. 聚合函数 日期和时间函数 数学函数 字符串函数
8.6 小结
• • 存储过程的基本概念、类型和特点,以 及如何创建、执行、管理存储过程; 触发器的概念、类型和特点,以及如何 创建、管理触发器; 聚合函数、日期和时间函数、数学函数 、字符串函数等常用函数的功能。
•
•
•
3、触发器的分类
DML触发器 DDL触发器
4、创建DML触发器
CREATE TRIGGER [schema_name.]trigger_name ON {table | view} [WITH ENCRYPTOF} {[INSERT] [,] [UPDATE] [,] [DELETE]} [WITH APPEND] [NOT FOR REPLICATION] AS {sql_statement [;] [,...n] | EXTERNAL NAME <method specifier [;]>}
8、修改DDL触发器
ALTER TRIGGER trigger_name ON {DATABASE | ALL SERVER} [WITH ENCRYPTION] {FOR | AFTER} {event_type [,...n] | event_group} AS {sql_statement [;] | EXTERNAL NAME <method specifier> [;]}
9、重命名触发器
sp_rename old_name,new_name
10、删除DML触发器
DROP TRIGGER [schema_name.]trigger_name [,...n] [;]
11、触发器定义
DROP TRIGGER trigger_name [,...n] ON {DATABASE | ALL SERVER} [;]
3. 用Transact-SQL语句创建带参数的 存储过程
语法: CREATE PROC[EDURE] procedure_name [;number] [{@parameter data_type} [VARYING][=default][OUTPUT]][,...n] [WITH {RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION}] [FOR REPLICATION] AS sql_statement [ ...n ] 【例8-2】 CREATE PROCEDURE hotel_proc3 @name varchar(12) AS SELECT * FROM 客户信息 WHERE 姓名=@name
6、查看触发器
• • • sp_help trigger_name:用于查看触发器的名称、 属性、类型、创建时间等一般信息。 sp_helptext trigger_name:用于查看触发器的正文 信息。 sp_depends trigger_name | table_name:用于查看 触发器所引用的表或表所涉及的触发器。
5、创建DDL触发器
CREATE TRIGGER trigger_name ON {ALL SERVER | DATABASE} [WITH ENCRYPTION] {FOR | AFTER} {event_type | event_group} [,...n] AS {sql_statement [;] [,...n] | EXTERNAL NAME <method specifier> [;]}
7、修改DML触发器
ALTER TRIGGER schema_name.trigger_name ON {table | view} [WITH ENCRYPTION] {FOR | AFTER | INSTEAD OF} {[DELETE] [,] [INSERT] [,] [UPDATE]} [NOT FOR REPLICATION] AS {sql_statement [;] [...n] | EXTERNAL NAME <method specifier> [;]}
5、使用“对象资源管理器”删除存 储过程
6、使用Transact-SQL语句删除存储过 程
DROP PROC[EDURE] procedure_name [,number]
8.4创建和管理触发器
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 触发器定义 触发器的特点 触发器的分类 创建DML触发器 创建DDL触发器 查看触发器 修改DML触发器 修改DDL触发器 重命名触发器 删除DML触发器 删除DDL触发器 禁用启用触发器
12、禁用启用触发器
禁用 DISABLE TRIGGER {[schema_name.]trigger_name [,...n] | ALL} ON {object_name | DATABASE | ALL SERVER} [;] 启用 ENABLE TRIGGER {[schema_name.]trigger_name [,...n] | ALL} ON {object_name | DATABASE | ALL SERVER} [;]
1. 2. 3. 4. 5. 6. 使用“对象资源管理器”查看存储过程 使用系统存储过程查看存储过程 使用“对象资源管理器”修改存储过程 使用Transact-SQL语句修改存储过程 使用“对象资源管理器”删除存储过程 使用Transact-SQL语句删除存储过程
1、使用“对象资源管理器”查看存储过 程
第8章 存储过程、触发器和函数
本章学习目标
• • • • • 掌握存储过程的基本概念、特点和类型 掌握存储过程的创建和执行方式 掌握存储过程的管理方式 掌握触发器的基本概念、特点和类型 掌握触发器的创建和管理方式
• 了解常用的聚合函数、日期和时间函数、数 学函数、字符串函数
本章主要内容
• • • • • • 存储过程概述 创建和执行存储过程 管理存储过程 创建触发器 管理触发器 常用函数
1. 在图形界面下创建存储过程
2. 用Transact-SQL语句创建不带参数的 存储过程
语法: CREATE PROC[EDURE] procedure_name AS sql_statement 【例8-1】 CREATE PROCEDURE hotel_proc2 AS SELECT 身份证号,姓名,电话 FROM 客户信息
4. 在图形界面下执行存储过程
5.使用Transact-SQL语句执行存储过 程
EXEC[UTE] procedure_name 【例8-4】 DECLARE @temp varchar(12) SET @temp='李铭' EXECUTE hotel_proc3 @temp
8.3管理存储过程
1、触发器定义
触发器是一种特殊的存储过程,它包括了 大量的Transact-SQL语句。 但是触发器又与一般的存储过程有着显著 的区别,一般的储过程可以由用户直接调 用执行,但是触发器不能被直接调用执行 ,它只能由事件触发而自动执行。
2、触发器的特点
• • 触发器是自动执行的,当用户对表中数据作了某 些操作之后立即被触发。 触发器可通过数据库中的相关表实现级联更改, 实现多个表之间数据的一致性和完整性。 触发器可以强制比用 CHECK 约束定义的约束更为 复杂的约束。与 CHECK 约束不同,触发器可以引 用其它表中的列。 触发器也可以评估数据修改前后的表状态,并根 据其差异采取对策。
8.1 存储过程概述
1. 存储过程的定义 2. 存储过程的特点 3. 存储过程的类型
1. 存储过程的定义
• 存储过程是一组为了完成特定任务的SQL语 句集,是利用SQL Server所提供的TransactSQL语言所编写的程序。 • 存储过程经编译和优化后存储在数据库服务 器中。 • 存储过程可以由应用程序通过一个调用来执 行,而且允许用户声明变量。 • 存储过程可以接收和输出参数、返回执行存 储过程的状态值。
ALTER PROC[EDURE] procedure_name [;number] [{@parameter data_type} [VARYING][=default][OUTPUT]][,...n] [WITH {RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION}] [FOR REPLICATION] AS sql_statement [...n]
2.存储过程的特点
• 存储过程允许用户模块化程序设计,大大提高程 序的设计效率。 • 存储过程可以强制应用程序的安全性,可以防止 SQL嵌入式攻击。 • 由于存储过程在服务器端存储和运行,并且第一 次执行后在内存中保留,以后调用时不需要再次 从磁盘装载,能够实现更快的执行速度。 • 用户执行存储过程时,只需在客户端通过指明所 调用的存储过程的名称来调用存储过程,可大大 较少网络通信流量。 • 存储过程具有安全特性和所有权链接,可以执行 所有的权限管理。
3.存储过程的类型
• 用户自定义存储过程 • 扩展存储过程 • 系统存储过程。
8.2 创建和执行存储过程
1. 在图形界面下创建存储过程 2. 用Transact-SQL语句创建不带参数的存储 过程 3. 用Transact-SQL语句创建带参数的存储过 程 4. 在图形界面下执行存储过程 5. 使用Transact-SQL语句执行存储过程
2、使用系统存储过程查看存储过程
① 用 户 可 以 先 用 系 统 存 储 过 程 sp_stored_procedures列出当前环境中所有 的存储过程, ② 然后使用另一个系统存储过程sp_helptext 查看某存储过程的正文信息。
3、使用“对象资源管理器”修改存 储过程
4、使用Transact-SQL语句修改存储过 程
第8章 存储过程、触发器和函数 数据库原理及应用SQL Server 2008数据库原理及应用课件
7、修改DML触发器
ALTER TRIGGER schema_name.trigger_name ON {table | view} [WITH ENCRYPTION] {FOR | AFTER | INSTEAD OF} {[DELETE] [,] [INSERT] [,] [UPDATE]} [NOT FOR REPLICATION] AS {sql_statement [;] [...n] | EXTERNAL NAME <method specifier> [;]}
1、触发器定义
触发器是一种特殊的存储过程,它包括了 大量的Transact-SQL语句。 但是触发器又与一般的存储过程有着显著 的区别,一般的储过程可以由用户直接调 用执行,但是触发器不能被直接调用执行 ,它只能由事件触发而自动执行。
2、触发器的特点
• • 触发器是自动执行的,当用户对表中数据作了某 些操作之后立即被触发。 触发器可通过数据库中的相关表实现级联更改, 实现多个表之间数据的一致性和完整性。 触发器可以强制比用 CHECK 约束定义的约束更为 复杂的约束。与 CHECK 约束不同,触发器可以引 用其它表中的列。 触发器也可以评估数据修改前后的表状态,并根 据其差异采取对策。
2、使用系统存储过程查看存储过程
① 用 户 可 以 先 用 系 统 存 储 过 程 sp_stored_procedures列出当前环境中所有 的存储过程, ② 然后使用另一个系统存储过程sp_helptext 查看某存储过程的正文信息。
3、使用“对象资源管理器”修改存 储过程
4、使用Transact-SQL语句修改存储过 程
1. 在图形界面下创建存储过程
2. 用Transact-SQL语句创建不带参数的 存储过程
SQL server中的存储过程和触发器
实验六存储过程和触发器实验报告姓名:张娜成绩:__________【实验目的】1、掌握存储过程的创建。
2、掌握存储过程的执行。
3、掌握存储过程的修改和删除。
4、掌握触发器的创建和使用。
【实验内容】2、创建存储过程GetOrder_details的SQL语句。
create procedure getorder_details(@orderno char(4))with recompileasselect orderdate,deliverydate,addressofdelivery,name,price,qtyordered,price*qtyordered as allmoney from orders join orderdetailson orders.orderno=orderdetails.orderno join products on products.productno=orderdetails.productnowhere orders.orderno=@orderno3、(1)输入参数为‘1002’,调用存储过程的SQL语句。
(2)执行结果。
(抓图)declare @orderno char(4)set @orderno='1002'execute getorder_details @orderno4、(1)修改存储过程GetOrder_details后的SQL语句。
(2)输入参数为‘1003’,调用存储过程的SQL语句。
(3)执行结果。
(抓图)if exists(select name from sysobjects where name='getorder_details'and xtype='p')drop procedure getorder_detailscreate view getdetailsasselect orderno,price*qtyordered as allmoney from orderdetails join products on products.productno=orderdetails.productnocreate procedure getorder_details(@orderno char(4))with recompileasbeginselectorderdate,deliverydate,addressofdelivery,name,price,qtyordered,price*qtyordered as allmoney from orders join orderdetailson orders.orderno=orderdetails.orderno join products on products.productno=orderdetails.productnowhere orders.orderno=@ordernoselect orderno,sum(allmoney) as '总金额' from getdetails group by orderno having orderno=@ordernoenddeclare @orderno char(4)set @orderno='1003'execute getorder_details @orderno5、(1)说明触发器attention完成的功能。
sqlserver数据库触发器的工作原理
SQL Server数据库触发器是一种特殊类型的存储过程,它可以在数据库中的特定事件发生时自动执行。
触发器可以用于监视数据的变化并采取相应的操作,例如插入、更新或删除数据时触发某些业务逻辑。
本文将深入探讨SQL Server数据库触发器的工作原理,包括触发器的类型、创建和使用方法,以及一些最佳实践。
一、触发器的类型SQL Server中有两种类型的触发器:DML触发器和DDL触发器。
1. DML触发器DML触发器(Data Manipulation Language Trigger)是针对数据操作事件的触发器,包括INSERT、UPDATE和DELETE。
当这些事件发生时,DML触发器可以在受影响的表上自动执行相应的逻辑。
DML 触发器可以分为AFTER触发器和INSTEAD OF触发器。
- AFTER触发器:AFTER触发器在数据操作事件完成后触发,可以用于记录日志、更新其他相关表等操作。
- INSTEAD OF触发器:INSTEAD OF触发器可以代替原始的数据操作事件,允许用户在数据操作前执行自定义的逻辑,常用于数据验证和转换。
2. DDL触发器DDL触发器(Data Definition Language Trigger)用于监视数据库结构的变化,包括CREATE、ALTER和DROP等DDL语句的执行。
DDL触发器可以在这些数据库结构变化发生时执行相应的逻辑,如记录变更、阻止某些操作等。
二、触发器的创建和使用要创建触发器,首先需要使用CREATE TRIGGER语句定义并命名一个新触发器,然后指定触发器在哪些事件上触发,以及触发时执行的逻辑。
触发器逻辑通常是一段T-SQL代码,可以包含查询、条件判断、事务控制等操作。
1. 创建DML触发器要创建DML触发器,可以使用如下语法:```CREATE TRIGGER trigger_nameON table_nameAFTER/INSTEAD OF INSERT/UPDATE/DELETEASBEGIN-- trigger logicEND```在这个语法中,trigger_name是触发器的名称,table_name是触发器所在的表,AFTER/INSTEAD OF INSERT/UPDATE/DELETE指定触发的事件,BEGIN和END之间是触发器的逻辑代码。
Sqlserver中存储过程,触发器,自定义函数(一)
Sqlserver中存储过程,触发器,⾃定义函数(⼀)Sqlserver中存储过程,触发器,⾃定义函数1.存储过程有关内容存储过程的定义;存储过程的分类;存储过程的创建,修改,执⾏;存储过程中参数的传递,返回与接收;存储过程的返回值;存储过程使⽤游标。
1.1存储过程的定义:存放在服务器上预先编译好的sql语句,可以给存储过程传递参数,也可以从存储过程返回值。
优点:提供了安全访问机制,⽐如可以将不同的存储过程的执⾏权限赋予权限不同的⽤户;改进了执⾏性能,因为存储过程是预编译的;减少了⽹络流量,因为在调⽤存储过程时,传递的字符串很短,没有很长的sql语句;增强了代码的重⽤性。
1.2分类:系统存储过程,sp_开头;扩展存储过程,xp_开头,允许其他⾼级语⾔编写,如c#,以dll形式存在;⽤户⾃定义存储过程:T_SQL存储过程;临时存储过程;局部:命名以 # 开头;全局:命名以 ## 开头;CLR存储过程。
1.3存储过程的创建,修改,执⾏:⾸先确定三个组成部分:输⼊参数和输出参数;sql语句;返回的状态值,指明执⾏状态。
简单语法:eg1:查询指定数据库表orders中的记录个数1create proc CountOfOrders--指定存储过程名2as--指定存储过程的主体3begin4declare@CountOfOrders as int--声明⼀个作为int类型的存储过程的内部变量5select@CountOfOrders=Count(*) fromt orders--将sql语句的返回值赋给前⾯定义的变量6print convert(verchar(10),@CountOfOrders)--将变量转换为字符串型打印7end8go--确定⼀个执⾏计划9exec CountOfOrders--执⾏过程以stuinfo表为例⼦:1create proc countofinfoq2as3begin4declare@CountOfOrders as int--声明⼀个作为int类型的存储过程的内部变量5select@CountOfOrders=Count(*) from stuDB.dbo.stuInfo--将sql语句的返回值赋给前⾯定义的变量6--print convert(varchar(10),@CountOfOrders)--将变量转换为字符串型打印7print@CountOfOrders8end9exec countofinfoqeg2:查询任意数据库表的记录个数,这⾥需要指定参数,要注意参数的定义和执⾏的时的参数传递1create proc CountOfTable2@TableName as Varchar(20)--定义⼀个普通的参数3as4begin5declare@Count as int6exec('select * into tmptable from '+@TableName)--参数的使⽤⽅法,这⾥exec相当于调⽤⼀个新的存储过程7select@Count=Count(*) from tmptable--⽤临时表缓存原表的数据,对临时表操作完后,删除临时表8drop table tmptable9return@Count--存储过程的返回值,只能是整数值!!!10end11declare@Count as int--声明⼀个变量接收返回值12exec@Count=CountOfTable 仓库13print@Count以stuinfo表为例⼦:1select*from stuinfo2drop table stuinfobak13select*into stuDB.dbo.stuinfobak1 from stuinfo4go5create proc CountOfTable16@TableName as Varchar(20)--定义⼀个普通的参数7as8begin9declare@Count as int10exec('select * into stuDB.dbo.stuinfobak2 from '+@TableName)--参数的使⽤⽅法,这⾥exec相当于调⽤⼀个新的存储过程11select@Count=Count(*) from stuDB.dbo.stuinfobak2--⽤临时表缓存原表的数据,对临时表操作完后,删除临时表12drop table stuinfobak213return@Count--存储过程的返回值,只能是整数值!!!14end15go16declare@Count as int--声明⼀个变量接收返回值17exec@Count=CountOfTable1 stuinfo18print@CountView Code调⽤:1declare@Count as int--声明⼀个变量接收返回值2declare@Table as varchar(20)3set@Table='仓库'4exec@Count=CountOfTable @Table5print@Counteg3:参数传递⽅式:1create proc ParamsTransfer2@类别名称varchar(15),3@单价money=$10,4@库存量smallint,5@订购量smallint=5--带默认值,假如没有给它传值,则使⽤默认值6as7begin8select*from产品9join类别on产品.id =类别.id10where11类别.类别名称=@类别名称and12产品.单价>@单价and13产品.库存量>@库存量and14产品.订购量>@订购量15end16exec ParamsTransfer 饮料,1,10,20--顺序传值17exec ParamsTransfer @单价=1,@订购量=20,@库存量=10,@类别名称='饮料'--不按顺序传值18exec ParamsTransfer 饮料,default,10,default--使⽤默认值19exec ParamsTransfer 饮料,default,10--不指定default也是使⽤默认值20exec ParamsTransfer @类别名称='饮料',@库存量=10--不按顺序并且使⽤默认值的传值--eg4:存储过程的返回值: return⼀个整数值;使⽤output参数;返回结构集。
SQL_Server_2005数据库原理及应用教程第8章_存储过程和触发器
8.1.2 存储过程的分类
1.系统存储过程 在SQL Server 2005中,许多管理活动都是通过一种特殊 的存储过程执行的,这种存储过程称为系统存储过程。系统 存储过程主要存储在master数据库中并以sp_为前缀,系统 存储过程从系统表中获取信息,从而为数据库系统管理员管 理SQL Server提供支持。 2.用户自定义存储过程 是由用户创建并完成某一特定功能的存储过程,是封装了可 重用代码的Transact-SQL语句模块。用户自定义存储过程 可以接受输入参数,向客户端返回表格或标量结果和消息, 调用数据定义语言和数据操作语言语句,以及返回输出参数。 用户自定义的存储过程有两种类型:Transact-SQL存储过 程或CLR(公共语言运行时)存储过程。 3.扩展存储过程 允许使用高级编程语言创建应用程序的外部例程,从而使得 SQL Server的实例可以动态地加载和运行DLL。
2)DML 触发器的类型 AFTER 触发器的执行是在执行 INSERT, UPDATE 或 DELETE 语句操作之后。指定 AFTER 与指定 FOR 相同,它是 Microsoft SQL Server 早期版本中唯一可用的选项。需注意的是,AFTER 触发器只能在表上指定。 通常的触发动作由INSTEAD OF 触发器代替。还 可为带有一个或多个基表的视图定义 INSTEAD OF 触发器,而这些触发器能够扩展视图可支持的 更新类型。 CLR 触发器可以是 AFTER 触发器或 INSTEAD OF 触发器。CLR 触发器还可以是 DDL 触发器。 CLR 触发器将执行在托管代码(在 .NET Framework 中创建并在 SQL Server 中上载的程 序集的成员)中编写的方法,而不用执行 Transact-SQL 存储过程。
数据库存储过程函数与触发器
数据库存储过程函数与触发器数据库存储过程、函数与触发器数据库存储过程、函数与触发器是关系型数据库中的重要组件,它们的存在使得数据库的操作和管理更加灵活和高效。
本文将向读者介绍数据库存储过程、函数与触发器的概念、特点以及在实际应用中的使用方法和注意事项。
一、数据库存储过程存储过程是一组预定义的SQL语句集合,可以被多次调用执行。
它能够实现自定义业务逻辑,并且可以提高数据库的性能和安全性。
存储过程通常用于数据的操作和处理,例如插入、更新和删除数据等。
存储过程具有以下特点:1. 可以被多次调用执行,提高了代码的重用性。
2. 存储过程可以在数据库服务器端执行,减少了网络传输的开销,提高了数据操作的效率。
3. 存储过程可以封装复杂的业务逻辑,简化了应用程序的开发和维护工作。
4. 存储过程可以通过参数的传递和返回值的设定,实现更加灵活和动态的数据操作。
使用存储过程时需要注意以下事项:1. 良好的存储过程设计是提高数据库性能的关键,需要注意合理的索引设计和语句优化。
2. 存储过程的安全性需要得到保证,应限制存储过程的调用权限,并对输入参数进行有效性验证。
3. 存储过程的修改和维护需要慎重,应注意兼容性和依赖关系。
二、数据库函数数据库函数是一段可重复使用的代码块,接收输入参数并返回计算结果。
函数可以在查询语句中调用,对数据进行计算和处理。
相比存储过程,函数更加灵活,在某些特定的场景下更加适用。
数据库函数具有以下特点:1. 函数可以接收参数,并可以根据参数的不同返回不同的结果,增加了数据处理的灵活性。
2. 函数可以在查询语句中直接调用,使得数据的计算和查询可以一次完成,提高了查询的效率。
3. 函数可以与其他函数和表达式进行组合使用,实现更加复杂的计算和处理逻辑。
4. 函数可以自定义,满足不同业务的处理需求。
使用数据库函数时需要注意以下事项:1. 函数的设计应符合数据库规范,函数的命名要有意义,参数的设置要明确。
2. 函数的性能需要进行优化,避免函数的嵌套和循环调用,减少函数的执行时间。
《Sql Server数据库原理与应用》教学大纲(2022版)
《Sql Server数据库原理与应用》教学大纲英文名称:Principles and Application of Database课程代码:课程类别:专业选修课课程性质:选修开课学期:大四第一学期总学时:36(讲课:18,实训18)总学分:2考核方式:平时考勤、作业、课堂表现、期末大作业先修课程:《大学计算机基础》《Python语言与数据分析》适用专业:一、课程简介本课程以功能强大的关系数据库管理系统MySQL作为平台,全面系统地介绍SQL Server 的管理操作和应用开发,将基础知识和实际应用有机结合起来,主要内容有数据库系统概论、MySQL安装和操作、创建数据库和创建表、表数据操作、数据查询、视图和索引、数据完整性、T-SQL程序设计、存储过程、触发器、系统安全管理、备份和恢复、事务和锁定。
本课程主要通过理论授课加实训的方式完成教学,理论授课24学时,实训12学时。
考核方式由平时考勤、实训作业、课堂表现和期末大作业构成。
二、课程目标及其对毕业要求的支撑通过本课程的学习,学生将对数据库技术的基本概念、原理、方法和技术有较深刻的理解,掌握SQL语言查询和编程的基本技术,掌握数据库系统安装、配置、管理和维护的基本技能,具备管理和开发简单数据库应用系统的能力,提高学生分析和解决实际问题的能力,为将来从事相关工作打下基础。
三、课程教学要求第一章数据库概述教学内容:第一节数据库系统1.数据与信息2.数据存储单元—服务器3.数据库系统的构成4.数据库系统的特点第二节数据库类型1.数据库模型2.关系型数据库3.非关系型数据库第三节关系型数据库MySQL1.为什么使用MySQL2.MySQL的发展简史3.MySQL的版本分类与发展4.企业如何选择MySQL版本第四节本章小结学生学习预期成果:1.了解与数据库相关的基本概念2.掌握常见的数据库类型及各自的特点3.理解MySQL的工作原理教学重点:1.数据库类型2.关系型数据库MySQL教学难点:1.数据库类型2.关系型数据库MySQL第二章环境的安装与基本配置教学内容:第一节虚拟化平台1.系统虚拟化2.搭建实验平台3.虚拟平台的基本使用第二节CentOS系统的部署1.CentOS系统2.系统下载3.最小化安装CentOs第三节MySQL的安装与配置1.MySQL安装方式2.Yum方式安装3.源码编译方式安装4.初始化数据库第四节本章小结学生学习预期成果:1.熟练掌握Linux操作系统环境下MySQL的安装与基本配置方法2.掌握VMware Workstation中搭建虚拟化环境的方法3.了解MySQL的配置参数4.熟悉MySQL安装过程中的报错和相应解决方法教学重点:1.CentOS系统的部署2.MySQL的安装与配置教学难点:1.CentOS系统的部署2.MySQL的安装与配置;第三章MySQL数据操作教学内容:第一节SQL语句1.SQL简介2.SQL分类第二节数据类型1.数值类型2.字符串类型3.日期和时间类型第三节存储引擎1.MySQL的存储引擎2.常用引擎MyISAM和InnoDB的区别3.存储引擎的选择第四节库与表的基础操作1.库操作2.表操作第五节表的高级操作1.数据的插入2.修改数据表3.删除表内容4.更新数据第六节本章小结学生学习预期成果:1.了解SQL语句的基本分类2.掌握使用结构化查询语句进行数据操作的方法3.掌握数据库不同存储引擎的差异4.掌握常见的数值类型并学会合理运用教学重点:1.数据类型2.存储引擎3.库与表对的基本操作4.表的高级操作教学难点:1.数据类型2.存储引擎3.库与表对的基本操作4.表的高级操作第四章数据库表单查询教学内容:第一节基础查询1.创建基本的数据表环境2.查询所有字段3.查询指定字段第二节条件查询1.关系运算符2.多条件查询第三节高级查询1.排序查询2.聚合函数3.分组查询4.HAVING字句5.LIMIT分页第四节本章小结学生学习期望成果:1.掌握使用SQL语句进行基础查询的方法2.掌握SQL语句中不同条件的表达方法3.熟练使用高级的查询方式对数据进行查询分析教学重点:1.基础查询2.条件查询3.高级查询教学难点:1.基础查询2.条件查询3.高级查询;第五章数据的完整性教学内容:第一节实体完整性1.主键与主键约束2.唯一约束3.自动增长列第二节域完整性1.非空约束2.默认值约束第三节引用完整性1.外键与外键约束2.删除外键约束第四节索引1.普通索引2.唯一索引3.索引过多引发的问题第五节本章小结学生学习期望成果:1.了解数据对的约束原则2.掌握主键、外键约束的用法3.掌握索引的实际应用方法4.掌握常见的约束原则教学重点:1.域完整性2.引用完整性3.索引教学难点:1.域完整性2.引用完整性3.索引第六章数据库多表查询教学内容:第一节表与表之间的关系1.一对一关系2.一对多关系3.多对一关系4.多对多关系第二节多表查询1.合并结果集2.关于笛卡尔积3.内连接4.外连接5.自然连接6.嵌套查询第三节本章小结学生学习期望成果:1.了解数据表之间的关系2.掌握多表数据的查询方法3.理解多表查询中的连接规则和笛卡儿积4.熟悉数据表之间的嵌套查询教学重点:1.表与表之间的关系2.多表查询教学难点:1.表与表之间的关系2.多表查询第七章权限与账户管理教学内容:第一节权限表第二节账户管理1.登录和退出数据库2.创建和删除用户3.修改账户密码4.删除与修改用户名第三节权限管理1.MySQL的权限2.授予权限3.查看权限4.收回权限第四节本章小结学生学习期望成果:1.了解什么是权限表2.掌握数据库用户权限的设置方法3.熟悉数据库配置文件的基本设置4.掌握MySQL访问控制的方法教学重点:1.权限表2.账户管理3.权限管理教学难点:1.权限表2.账户管理3.权限管理第八章存储过程与触发器教学内容:第一节存储过程1.存储过程概述2.存储过程优缺点3.创建存储过程4.查看存储过程5.删除存储过程第二节触发器1.触发器概述2.创建触发器3.查看触发器4.删除触发器第三节本章小结学生学习期望成果:1.了解什么是存储过程2.掌握存储过程的相关操作方法3.熟悉触发器的基本概念4.掌握触发器的使用方法和应用场景教学重点:1.存储过程2.触发器教学难点:1.存储过程2.触发器第九章数据库事务和锁机制教学内容:第一节事务管理1.事务的概念2.事务的创建和回滚3.并发与并行4.事件的ACID特性5.事件的隔离级别6.隔离级别的选取第二节锁机制1.MySQL锁定机制简介2.InnoDB锁类型3.锁监控与优化第三节本章小结学生学习期望成果:1.理解事务的基本概念2.熟悉事务的四个特性3.掌握事务的相关操作方法和隔离级别4.掌握锁机制的原理和使用方法教学重点:1.事务管理2.锁机制教学难点:1.事务管理2.锁机制第十章 MySQL数据备份教学内容:第一节数据备份概述1.数据备份原则2.备份类型的划分第二节物理备份1.Tar打包备份2.LVM快照备份3.Xtrabackup备份第三节逻辑备份第四节本章小结学生学习期望成果:1.了解什么是数据库备份2.掌握数据库备份和恢复的方法3.掌握数据迁移的操作流程4.掌握数据库的导入和导出方法教学重点:1.物理备份2.逻辑备份教学难点:1.物理备份2.逻辑备份第十一章日志管理教学内容:第一节日志的分类1.错误日志2.二进制日志3.慢查询日志4.中继日志5.Redo日志和Undo日志6.查询日志第二节日志应用第三节本章小结学生学习期望成果:1.了解数据库中常见的日志种类2.掌握二进制日志的操作方法3.掌握错误日志的操作方法4.熟悉慢查询等其他日志应用教学重点:1.日志分类2.日志应用教学难点:1.日志分类2.日志应用第十二章主从复制教学内容:第一节主从复制原理1.复制过程2.基本架构3.复制模式第二节一主一从复制1.基于位点的主从复制2.基于GRID的主从复制第三节多主从复制1.双主双从搭建流程2.关于keepalived第四节复制延迟与死机处理第五节本章小结学生学习期望成果:1.了解MySQL主从复制的原理2.掌握配置一主一从集群的基本流程3.掌握向集群添加从服务器的方法4.熟悉多主多从集群的配置参数和配置流程教学重点:1.一主一从复制2.多主多从复制3.复制延迟与死机处理教学难点:1.一主一从复制2.多主多从复制3.复制延迟与死机处理第十三章 MySQL读写分离教学内容:第一节数据库代理1.基本原理2.常见的数据库中间件第二节Mycat实现读写分离1.基本环境2.配置流程第三节本章小结学生学习期望成果:1.掌握数据库代理的基本原理2.熟悉企业中常用的数据库中间件3.掌握Mycat实现读写分离的配置流程4.掌握读写分离配置中使用到的关键参数教学重点:1.数据库代理2.Mycat实现读写分离教学难点:1.数据库代理2.Mycat实现读写分离四、建议教学安排五、课程成绩评定基本考核方法:通过考勤、作业、课堂表现等评定学生平时成绩(占50%),通过期末大作业评定学生理论成绩(期末大作业占50%)情况综合评价学生成绩。
数据库原理及应用SQL-Server 第8章-存储过程、触发器和用户定义函数
2021/9/19
7/75
存储过程概述(6)
例 在教学管理数据库中,显示表S的相关性信息。 EXEC sp_depends @objname = 'S'
(2) 扩展存储过程 扩展存储过程以在SQL Server 环境外执行的动态链接库(Dynamic-Link Libraries,DLL)来实现。
使用存储过程也有不足:
如果需要对存储过程的输入参数进行更改,或者要更改由
其返回的数据,则需要更新程序集中的代码以添加参数、更
新调用等,一般比较繁琐。
可移植性差。由于存储过程将应用程序绑定到SQL Server,
因此使用存储过程封装业务逻辑将限制应用程序的可移植性。
很多存储过程不支持面向对象的设计,无法采用面向对象
的方式将业务逻辑进行封装,从而无法形成通用的可支持复
用的业务逻辑框架。
代码可读性差,因此一般比较难维护。
2021/9/19
4/75
存储过程概述(3)
❖ 常见的存储过程
(1) 系统存储过程 系统存储过程是由SQL Server 系统提供的存储过程,可以作为命令执行各种 操作。
存储过程 sp_addlogin sp_addrole sp_cursorclose sp_dbremove sp_droplogin sp_helpindex sp_helprolemember sp_helptrigger sp_lock sp_primarykeys sp_statistics
2021/9/19
功能 创建一个新的login帐户。 在当前数据库中增加一个角色。 关闭和释放游标。 删除数据库和该数据库相关的文件。 删除一个登录帐户。 返回有关表的索引信息。 返回当前数据库中角色成员的信息。 显示触发器类型。 返回有关锁的信息。 返回主键列的信息。 返回表中的所有索引列表。
第8章_存储过程
( @stuName varchar(20) ,)
AS BEGIN SELECT * FROM student WHERE sname= @stuname END
page23
实例分析一 问题求解
步骤3:执行存储过程,验证其是否能输入参数
EXEC stuByName ‘王芳‘
page24
实例分析二:存储过程用输出参数返回值
page18
存储过程的输入和输出
参数是存储过程与外界进行交互的一种途径
存储过程通过输入参数和输出参数与外界进行交互
存储过程的数据传递方式:
输入参数
调用者向存储过程输入的数据值
输出参数
存储过程向调用者返回的数据值
RETURN语句
向外返回int型数据
page19
实例分析一:存储过程中使用输入参数 提出问题
参数的默认值
指示参数是输出参数 将CREATE PROCEDURE语句的原始文本 指明该存储过程将要执行的动作
<sql_statement> : 要包含在过程中的一个或多个T-SQL语句
page10
创建存储过程
执行代码
CREATE PROCEDURE prcListClasses AS BEGIN SELECT c.classCourseName, d.depName, c.classTeacherName, c.classStartTime, cr.crBuildingName, cr.crRoomNo, c.classLimitNum, c.classExistNum, c.classCredit FROM Classes c JOIN Department d ON c.classdepNo=d.depNo
SQL_Server_创建函数、存储过程和触发器
• 举例: 举例:
用代码创建一个内联表值函数,它返回AdventureWorks数据库 用代码创建一个内联表值函数,它返回 数据库 中的某个特定经理的下属雇员的姓名。 中的某个特定经理的下属雇员的姓名 程序清单如下: 程序清单如下: -- 创建一个内联表值函数 创建一个内联表值函数HumanResources.EmployeesForManager, , 接受一个表示经理ID的输入参数 的输入参数; 接受一个表示经理 的输入参数; -- 返回指定经理的下属雇员的姓名
• 使用多语句表值函数的场合: 使用多语句表值函数的场合:
多语句表值函数是视图和存储过程的结合。 多语句表值函数是视图和存储过程的结合。可使用返回表的用户 定义函数来替代存储过程或视图。 定义函数来替代存储过程或视图。
表值函数类似于存储过程,可使用复杂的逻辑和多条 表值函数类似于存储过程,可使用复杂的逻辑和多条T-SQL语句来 语句来 构建表。 构建表。
• 知识点: 知识点:
学完本节后,你应能够了解: 学完本节后,你应能够了解: • 不同类型的函数; 不同类型的函数; • 标量函数的工作方式; 标量函数的工作方式; • 表值函数的工作方式(内联表值函数和多语句表值函数); 表值函数的工作方式(内联表值函数和多语句表值函数); • 确定性和非确定性函数。 确定性和非确定性函数。
该语句的基本语法中的选项: 该语句的基本语法中的选项:
• ENCRYPTION选项,SQL SERVER 在存储函数定义时,对其进行加 选项, 在存储函数定义时, 选项 密; • SCHEMABINDING选项,防止该函数所依赖的任何对象被删除; 选项,防止该函数所依赖的任何对象被删除; 选项 • EXECUTE AS 选项,指定函数的安全上下文。 选项,指定函数的安全上下文。 当你需要依赖访问对象, 当你需要依赖访问对象,但又不希望依赖与为断裂的所有权链时使 用它实现安全性。 用它实现安全性。
