我的编程空间,编程开发者的网络收藏夹
学习永远不晚

数据库优化之创建存储过程、触发器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

数据库优化之创建存储过程、触发器

    存储过程可加快查询的执行速度,提高访问数据的速度,帮助实现模块化编程,保存一致性,提高安全性。触发器是在对表进行插入、更新、删除操作时自动执行的存储过程,通常用于强制业务规则。


一、存储过程

1. 为什么需要存储过程

    从客户端通过网络向服务器发送SQL代码并执行是不安全的,给***提供盗取数据的机会,如下图所示,一个简单的SQL注入过程

数据库优化之创建存储过程、触发器

   从上图可知,应用程序的执行过程是不安全的,主要有以下几个方面:

(1)数据不安全,网络传送SQL代码,容易被未授权者截获

(2)每次提交SQL代码都要经过语法编译后在执行,影响应用程序的运行性能

(3)网络流量大,对于反复执行的SQL代码,在网络上多次传送,影响网络传输量


2. 什么是存储过程

    存储过程是SQL语句和控制语句的预编译集合,保存在数据库中,可有应用程序调用执行,而且允许用户声明变量、逻辑控制语句及其他强大的编程功能。包含逻辑控制语句和数据操作语句,可以接收参数、输出参数、返回单个或多个结果值及返回值

    使用存储过程的优点:

(1)模块化程序设计,只需创建一次,以后即可调用该存储过程任意次

(2)执行速度快,效率高

(3)减少网络流量

(4)具有良好的安全性

    存储过程分为系统存储过程和用户自定义的存储过程


3. 系统存储过程

    是一组预编译的T-SQL语句,提供了管理数据库和更新表的机制,并充当从系统表中检索信息的快捷方式

(1)常见的系统存储过程

    系统存储过程的名称以“sp_”开头,存放在Resource数据库中

数据库优化之创建存储过程、触发器

   

    使用存储过程的语法如下:

exec  存储过程名  [参数值]


例如:执行以下T-SQL语句

数据库优化之创建存储过程、触发器


(2)常用的扩展存储过程

    扩展存储过程是SQL Server提供的各类系统存储过程的一类,允许使用其他编程语言(如C#)创建外部存储过程,通常以“xp_”开头,以DDL形式单独存在

    一个常用的扩展存储过程为xp_cmdshell ,它可以完成DOS命令下的一些操作,如创建文件夹、列出文件夹。语法如下:

exec  xp_cmdshell  DOS命令  [no_output]

其中,no_output为可选参数,设置执行DOS命令后是否输出返回信息

例如:在C盘下创建一个文件夹bank,并查看文件

数据库优化之创建存储过程、触发器


4. 用户自定义的存储过程

    除了使用系统的存储过程外,也可以创建自己的存储过程。可以使用SSMS或T-SQL语句创建存储过程

(1)使用SSMS创建存储过程

数据库优化之创建存储过程、触发器


(2)使用T-SQL语句创建存储过程

    创建存储过程的语法如下:

数据库优化之创建存储过程、触发器

    删除存储过程的语法如下:

drop  proc  存储过程名


案例:有以下两个表,编写存储过程,实现网络管理专业的平均分

数据库优化之创建存储过程、触发器

数据库优化之创建存储过程、触发器  

  

触发器

    触发器是一种特殊的存储过程,当表中数据发生更新时自动调用,以响应INSERT、UPDATE、DELETE语句

1. 什么是触发器

    触发器是对表进行插入、更新、删除操作时自动执行的存储过程,通常用于强制业务规则,可以定义比用CHECK约束更为复杂的约束。触发器主要是通过事件触发而被执行的,而存储过程可以通过存储过程名称而被直接使用。


2. 触发器的分类

INSERT触发器:当向表中插入数据时触发

UPDATE触发器:当更新表中某列或多列时触发

DELETE触发器:当删除表中记录是触发


3. deleted表和inserted表

    每个触发器都有两个特殊的逻辑表:删除表和插入表。由系统管理,存储在内存而不是数据库中,因此,不允许用户直接对其修改。它们只是临时存放对表中数据行的修改信息,当触发器工作完成,它们也被删除。

数据库优化之创建存储过程、触发器

4. 触发器的作用

    主要作用是:实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性,除此之外,还有以下几种功能

(1)强化约束:实现比CHECK约束更为复杂的约束

(2)跟踪变化:侦测数据库内的操作,从而不允许未经许可的更新和变化

(3)级联运行:侦测数据库内的操作,并自动级联影响整个数据库的各项内容


5. 创建触发器

    创建触发器可使用SSMS或T-SQL语句

(1)使用SSMS创建触发器

数据库优化之创建存储过程、触发器


(2)使用T-SQL语句创建触发器

    使用T-SQL语句创建触发器的语法如下:

create  trigger  触发器名          //创建的触发器名称
on  表名                            //在其上执行触发器的表或视图名称
[with  encryption]                 //可选,防止将触发器作为SQL Server复制的一部分发布
for  {[delete,insert,update]}         //关键字,至少指定一项,如果多项,由逗号分隔
as sql语句


案例:创建一个触发器,当有人更改信息时,提示一条消息,并阻止操作

数据库优化之创建存储过程、触发器


    如果需要修改触发器,操作方法如下,在弹出的窗口修改T-SQL语句即可

数据库优化之创建存储过程、触发器


创建触发器时注意事项

(1)create trigger必须是批处理中的第一条语句,并只能应用到一个表中

(2)触发器只能在当前数据库中创建,但可以引用当前数据库的外部对象

(3)在同一条create trigger语句中,可以为多种用户操作(如DELETE)定义相同的触发器操作






免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

数据库优化之创建存储过程、触发器

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL数据库实验之 触发器和存储过程

目录一、实验目的二、实验要求三、实现内容及步骤1、创建一个不带参数的简单存储过程2、创建一个带输入参数的存储过程3、创建一个带输入输出参数的存储过程4、触发器的创建与使用四、实验总结观前提示:本篇内容为mysql数据库实验,代码内容经测试过
2022-06-20

MySQL数据库之存储过程怎么创建

本篇内容介绍了“MySQL数据库之存储过程怎么创建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言:stored procedure 完成
2023-07-02

怎么在PostgreSQL中创建触发器和存储过程

在PostgreSQL中创建触发器和存储过程需要使用SQL语句来实现。以下是创建触发器和存储过程的基本步骤:创建存储过程:CREATE OR REPLACE FUNCTION my_function()RETURNS VOID AS $$
怎么在PostgreSQL中创建触发器和存储过程
2024-03-12

MySQL数据库的触发器和存储过程实例分析

这篇文章主要介绍“MySQL数据库的触发器和存储过程实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL数据库的触发器和存储过程实例分析”文章能帮助大家解决问题。一、实验目的1、掌握某主
2023-07-02

MySQL插入锁与数据库存储过程的优化

MySQL插入锁是用来保护数据库中的数据完整性和一致性的。当多个会话同时插入数据时,MySQL会自动对数据进行加锁,以确保数据不会被多个会话同时修改或插入。这样可以防止数据冲突和错误。数据库存储过程是一种预编译的SQL代码,存储在数据库中
MySQL插入锁与数据库存储过程的优化
2024-08-13

【2020Python修炼记】MySQL之 视图、触发器、事务、存储过程、函数

【目录】(其余均为了解知识)一 视图二 触发器三 事务(掌握)四 存储过程五 函数六 流程控制七、索引理论 一、视图1、什么是视图视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,
【2020Python修炼记】MySQL之 视图、触发器、事务、存储过程、函数
2018-03-18

如何在Oracle数据库中使用PL/SQL编写存储过程和触发器

在Oracle数据库中使用PL/SQL编写存储过程和触发器,可以按照以下步骤进行操作:使用SQL Developer或者其他Oracle数据库管理工具连接到Oracle数据库。创建一个新的PL/SQL存储过程或触发器。在SQL Develo
如何在Oracle数据库中使用PL/SQL编写存储过程和触发器
2024-03-02

创建一个MySQL存储过程,该存储过程以数据库名称作为参数,列出特定数据库中包含详细信息的表。

假设当前我们使用一个名为“query”的数据库,其中包含以下表格 -mysql> Show tables in query;+-----------------+| Tables_in_query |+----------------
2023-10-22

编程热搜

目录