• 【SQL Server】入门教程-基础篇(完结)


    目录

    🌞Sql Server中的触发器使用

    ☁️触发器概念

    ⛅触发器语法

    ⛈️触发器练习

    🌤️Sql Server中存储过程的使用

    🌦️存储过程概念

    🌧️存储过程语法

    🌩️存储过程练习 

    🌪️写在最后 


    🌞Sql Server中的触发器使用

    ☁️触发器概念

    触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发。

    简单来说:好比游戏里的隐藏成就,当你达到或者完成了一定的条件,自动触发的东西。

    作用:

    • 可在写入数据表前,强制检验或转换数据。

    • 触发器发生错误时,异动的结果会被撤销。

    • 部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。

    • 可依照特定的情况,替换异动的指令 (INSTEAD OF)。

    在触发器中可以使用两个特殊的虚拟表inserted和deleted:

    • inserted表存放新增的记录
    • deleted表存放被删除的记录

    Update操作时:新的记录存入inserted表,旧的记录存入deleted表。


    ⛅触发器语法

    创建触发器:

    1. ##创建DML触发器(掌握)
    2. create trigger 触发器名 on 表名/视图名
    3. { for | after | instead of }
    4. { insert [,] | update [,] | delete }
    5. as
    6. begin
    7. 触发器需要执行的逻辑
    8. end;
    9. ##创建DDL触发器(了解)
    10. create trigger 触发器名 on 数据库作用域/服务器作用域
    11. { for | after }
    12. { 事件类型 }
    13. as
    14. begin
    15. 触发器需要执行的逻辑
    16. end;
    17. 事件类型:CREATE_对象类型、DROP_对象类型、ALTER_对象类型
    18. 对象类型:DATABASE、TABLEVIEW

    删除触发器:

    1. ##删除DML触发器
    2. drop trigger 触发器名称;
    3. ##删除DDL触发器
    4. drop trigger 触发器名称 on 数据库作用域/服务器作用域;

    修改触发器: 

    先删除、在创建
    

    ⛈️触发器练习

    创建DML触发器:当删除Student表中的一条学生记录时将StuInfo表中该学生的相应记录也删除。

    1. create trigger T_Stu_DELETE on Student
    2. after
    3. delete
    4. as
    5. begin
    6. delete from stuInfo where stuName in (select StuName from deleted)
    7. end;

    触发DML触发器:

    1. delete from student where StuName = '王五';
    2. select * from student where StuName = '王五';
    3. select * from StuInfo where StuName ='王五';

    删除DML触发器:

    drop trigger T_Stu_DELETE;
    

    以上就是触发器的概念和使用,大佬们看一下哪有不对的地方,请指正。 


    🌤️Sql Server中存储过程的使用

    🌦️存储过程概念

    存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数来执行它,通常情况下,将常用或很复杂的语句编写成存储过程。

    存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。


    🌧️存储过程语法

    创建存储过程:

    1. create procedure 存储过程名称 [ { @参数名 数据类型 [varying][=default][ouput] },... ]
    2. as
    3. begin
    4. 存储过程需要执行的逻辑
    5. end;
    6. 参数解读:
    7. =default:表示为该参数设定的默认值,定义默认值后,不必指定该参数的值即可执行过程。
    8. ouput:表示该参数是输出值。
    9. varying ouput:表示该参数是游标参数。

    温馨提示:存储过程中不能包含一些特殊语句,如:创建及修改视图、创建及修改函数、创建及修改触发器、创建及修改存储过程、创建DEFAULT、创建SCHEMA、USE 数据库等。

    调用存储过程:

    execute 存储过程名称 { [@参数=]{常量|@变量 [output]|[default]},... };
    

    删除存储过程:

    drop procedure 存储过程名称;
    

    修改存储过程:

    老方法,先删除,在创建


    🌩️存储过程练习 

    创建存储过程:计算指定班级的学生所选数学课程的平均成绩,要求输入参数为班级,输出参数为数学的平均成绩。

    1. create procedure P_Math_AVG @num char(6), @avgScore float OUTPUT
    2. AS
    3. begin
    4. select avg(math) from student group by Classes having Classes=@num
    5. end;

    调用存储过程:

    1. declare @avg float;
    2. execute P_Math_AVG @num='2001班',@avgScore=@avg OUTPUT;
    3. 或者
    4. declare @avg float;
    5. execute P_Math_AVG '2001班',@avg;

    删除存储过程:

    drop procedure P_Math_AVG;
    

    🌪️写在最后 

    Sql Server数据库的所有知识就整理到这了,有什么遗漏的地方,大家请留言告诉我。

  • 相关阅读:
    uni-app - 插件[App云打包]安装失败!(app打包时显示app云打包插件安装失败)解决方案
    ibert测试 - UltraScale+
    神经平面分布图怎么看,面部神经网络 分布图
    MySQL InnoDB Architecture 简要介绍
    nodejs+vue+elementui校园疫情防控出入登记系统python java
    各种芯片复位电路分析
    python中json的使用
    LeetCode高频题78. 子集,返回该数组所有可能的子集(幂集),生成所有的子序列
    云主机内网通信ping不通问题处理过程
    登上抖音同城热搜榜:如何让你的短视频成为焦点?
  • 原文地址:https://blog.csdn.net/SFalS/article/details/125456729