From 60df2f65568c53bb7eec4a1829931b4288308a40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=BF=97=E6=A2=81?= <2864599615@qq.com> Date: Wed, 28 Sep 2022 03:15:37 +0000 Subject: [PATCH] 0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 陈志梁 <2864599615@qq.com> --- ...30\345\202\250\350\277\207\347\250\213.md" | 123 ++++++++++++++++++ ...0-\350\247\246\345\217\221\345\231\250.md" | 53 ++++++++ 2 files changed, 176 insertions(+) create mode 100644 "19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-26\347\254\224\350\256\260-\345\255\230\345\202\250\350\277\207\347\250\213.md" create mode 100644 "19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-27\347\254\224\350\256\260-\350\247\246\345\217\221\345\231\250.md" diff --git "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-26\347\254\224\350\256\260-\345\255\230\345\202\250\350\277\207\347\250\213.md" "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-26\347\254\224\350\256\260-\345\255\230\345\202\250\350\277\207\347\250\213.md" new file mode 100644 index 0000000..ab526a8 --- /dev/null +++ "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-26\347\254\224\350\256\260-\345\255\230\345\202\250\350\277\207\347\250\213.md" @@ -0,0 +1,123 @@ +## 存储过程 + +#### 存储过程的分类 + +##### 系统存储过程 + + 系统存储过程是用来管理SQL Server与显示有关数据库和用户的信息的存储过程。 + +常见的系统存储过程有 + +```sql +sp_databases 列出服务上的所有数据库 +sp_helpdb --报告有关指定数据库或所有数据库的信息 +sp_renamedb 更改数据库的名称 +sp_tables --返回当前环境下可查询的对象的列表 +sp_columns 返回某个表列的信息 +sp_help --返回某个表的所有信息 +sp_helpconstraint 查看某个表的约束 +sp_helpindex --查看某个表的索引 +sp_stored_procedures 列出当前环境中的所有存储过程 +sp_password --添加或修改登录账户的密码 +sp_rename 重命名存储过程 +sp_helptext 显示默认值,未加密的存储过程、用户定义的存储过程、触发器或视图的实际文本。 +``` + + + +##### 自定义存储过程 + +**创建存储过程** + +1.没有输入参数,没有输出参数的存储过程。 + +```sql +create proc <存储过程名称> +as + +go +``` + +2.有输入参数,没有输出参数的存储过程 + +```sql +create proc <存储过程名称> +<变量1> <数据类型> +<变量2> <数据类型> +... +as + +go +``` + + + + + +3.有输入参数,没有输出参数,但是有返回值的存储过程(返回值必须整数)。 + +```sql +create proc <存储过程名称> +<变量1> <数据类型> +<变量2> <数据类型> +... +as + +return 整数 +go +``` + + + +4.有输入参数,有输出参数的存储过程 & 一个变量具备同时输入输出参数的存储过程 + +```sql +create proc <存储过程名称> +<变量1> <数据类型> output +<变量2> <数据类型> output +... +as + +return 整数 +go +``` + + + +**执行存储过程** + +```sql +--无参 +exec <存储过程名称> +--带参 +exec <存储过程名称> <形参1>,<形参2>,... +--带参带返回值 +declare @变量 +exec @变量 = <存储过程名称> <形参1>,<形参2>,... +--有输入参数,有输出参数的存储过程 +declare @变量 +exec <存储过程名称> <形参1>,<形参2>,@变量 output +--一个变量同时具备输入输出功能 +declare @变量 <数据类型> = 值 +exec <存储过程名称> <形参1>,<形参2>,@变量 output +``` + + + +**删除存储过程** + +```sql +drop procedure <存储过程名称> +``` + + + +#### 存储过程的优点 + +允许模块化程序设计 + +执行速度更快 + +减少网络流通量 + +提高系统安全性 \ No newline at end of file diff --git "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-27\347\254\224\350\256\260-\350\247\246\345\217\221\345\231\250.md" "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-27\347\254\224\350\256\260-\350\247\246\345\217\221\345\231\250.md" new file mode 100644 index 0000000..641133e --- /dev/null +++ "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-27\347\254\224\350\256\260-\350\247\246\345\217\221\345\231\250.md" @@ -0,0 +1,53 @@ +## 触发器 + +**触发器**( trigger )是作为**对数据库修改的连带效果**而**由系统自动执行**的一条语句。它是一种特殊的**存储过程**。也是一个**事务**(可以回滚)。为了定义一个[触发器](https://so.csdn.net/so/search?q=触发器&spm=1001.2101.3001.7020),我们必须: + +- 指明**什么时候执行触发器**。这被拆分为**引起触发器被检测的一个\*事件\***和**触发器继续执行所必须满足的一个条件**。 +- 指明**当触发器执行时所采取的动作**。 + +#### DML触发器 : 增删改 + +##### after触发器: + +after触发器主要用于:insert,update,delete + + + +#### 创建触发器的语句 + +```sql +CREATE TRIGGER <触发器名称> + +ON table_name + +[WITH ENCRYPTION] + +FOR [DELETE, INSERT, UPDATE] + +AS + + T-SQL语句 + +GO +--WITH ENCRYPTION表示加密触发器定义的SQL文本 + +--DELETE, INSERT, UPDATE指定触发器的类型 +``` + + + + + + + +##### instead of 触发器 + + 1.插入操作(Insert) +***\*inserted 表\****有数据,***\*deleted 表\****无数据 + +2.删除操作(Delete) +***\*inserted 表\****无数据,***\*deleted 表\****有数据 + +3.更新操作(Update) +***\*inserted 表\****有数据(新数据),***\*deleted 表\****有数据(旧数据) + -- Gitee