SqlServer中视图、存储过程、事务的使用。

前言

熟悉SqlServer中视图、存储过程、事务的使用会在操作数据时带来更大的方便。

正文

视图-VIEW

VIEW介绍

  1. 定义:
    视图(VIEW)虚拟表,一般是不存储数据的,但是Sqlserver的索引视图例外(存储数据),以下不考虑索引视图。
    是对查询的Sql语句的封装,只是预定义了一段sql语句,不会提高查询效率
  2. 优点或用途:
    降低查询复杂度:可以把很长的sql语句用一个viewName代替。
    权限控制:防止未经许可用户访问敏感数据。比如普通用户只有查看数据的权利,这时候就可以让用户只调用视图。这样当用户账号被获取也不会对敏感数据造成影响。
  3. 系统视图
    系统预定义的视图
    这里写图片描述

VIEW使用

  • 创建视图
--vw_ShowsTable是视图的名字
--as后面是你封装的sql语句
create View vw_ShowsTable
as
select * from Shows where id>2

然后在数据库下的视图文件夹里出现你刚才创建的视图了
这里写图片描述

  • 使用视图

直接像表一样调用就行了。

select * from vw_ShowsTable

这里的view封装的sql语句很短并没体现优点,当sql语句很长时再通过view调用sql语句就会发现世界如此简单。

存储过程-SP

介绍

  1. 定义:
    存储过程(Stored Procedure)相当于C#中的函数,通过SP的name调用,可以有参数和返回结果。
  2. 优点或用途:
    • 经过编译-执行速度快
    • 可以重复使用
    • 提高安全性
    • 使用简单
      当压力比较大,可以把一部分压力放在数据库。但是以后修改起来比较麻烦。
  3. 系统SP
    以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作。
    这里写图片描述

使用

  • 创建SP
--usp_select_Shows是存储过程名称,后面可以跟参数
--begin end里是你的sql语句
create proc usp_select_Shows
@n1 int
as
begin
select * from Shows where id>@n1
end
  • 使用SP
--exec调用存储过程,有参数的话在spName后面+空格+参数
exec usp_select_Shows 2

事务-Transaction

Transaction介绍

  1. 定义
    事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
  2. 优点或用途
    正常sql出错的执行顺序:
    开始执行-前几条执行完成-出错停止执行-后面几条不执行。
    但是有时候有其它需求:

    • 开始执行-出现错误-全部sql回滚,数据恢复到全部未执行状态。
    • 开始执行-出现错误-忽略出错的sql继续执行接下来的slq。

第一种是常用场合是转账。事务就能帮我们做到这两种情况。

事务种类

自动事务:其实执行的普通sql语句都是一个事务,比如插入数据的sql出错会恢复到未插入状态,这就是自动事务的功劳。
隐式事务:
显式事务:显式事务是常用的事务,需要手动打开事务,接下来讲如何使用显式事务。

使用显式事务

出错全部回滚:

begin tran  -- 开始一个事务
declare @tran_error int  --声明一个变量用于检测sql是否出错

begin try -- try catch结构来检测是否出错,
 -- 你的sql语句
end try
begin catch
    set @tran_error=@tran_error+1 --检测到你的错误后变量加1
end catch

if (@tran_error > 0) 
    rollback tran  -- 变量值改变就回滚
else 
    commit tran  -- 变量值不变就提交

出错后忽略错误语句继续执行接下来的sql:
这种情况是需要设置xact_abort(精确终止),设置为on时出错全部回滚(可代替上面的try-catch写法),为off时出错继续执行下面sql。

 -- 精确终止关闭
set xact_abort off;
begin tran
insert into sorce values  (1,60)
insert into sorce values  (2,"aa")
insert into sorce values  (3,90)
commit tran 

第二条sql因为数据类型错误会失败,这种情况下,出错后会忽略错误语句继续执行下面的sql,第一第三句sql执行成功,第二句忽略。

请注意,不论提交或回滚,都代表当前事务结束,没有end tran这个命令

当然还有其他的写法不过大同小异,比如可以声明事务的名称、提交回滚都带上事务的名称。我觉得如果不是嵌套事务,没必要声明事务名称

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 SQL Server 创建和使用存储过程,您可以执行以下步骤: 1. 打开 SQL Server Management Studio (SSMS) 或任何其他支持 SQL Server 的数据库管理工具。 2. 连接到您的 SQL Server 数据库。 3. 在对象资源管理器窗口,展开数据库节点,右键单击“存储过程”文件夹,然后选择“新建存储过程”。 4. 在新建存储过程的查询窗口,编写您的存储过程代码。例如,以下是一个简单的示例: ``` CREATE PROCEDURE YourProcedureName AS BEGIN -- 在这里编写您的存储过程逻辑 SELECT * FROM YourTable; END ``` 5. 编写完存储过程代码后,单击工具栏上的“执行”按钮或按下 F5 键来执行该代码。这将创建您的存储过程。 6. 要调用存储过程,您可以在查询窗口编写以下代码: ``` EXEC YourProcedureName; ``` 7. 要传递参数给存储过程,您可以在创建存储过程时定义参数,并在调用存储过程时提供参数的值。例如: ``` CREATE PROCEDURE YourProcedureName @Param1 INT, @Param2 NVARCHAR(50) AS BEGIN -- 在这里编写您的存储过程逻辑 SELECT * FROM YourTable WHERE Column1 = @Param1 AND Column2 = @Param2; END ``` 然后,您可以通过以下方式调用存储过程并传递参数的值: ``` EXEC YourProcedureName @Param1 = 1, @Param2 = 'SomeValue'; ``` 这就是在 SQL Server 创建和使用存储过程的基本步骤。您可以根据需要编写更复杂的存储过程逻辑,并使用更多的参数和语句来实现您的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值