SQLSever--视图与存储过程

视图

要把视图看做是一张表,包含了一张表的部分数据或者多个表的综合数据,视图的使用和普通表一样;

视图建立并存储在服务器,有效减少网络数据流量,提高安全性;

视图中不存放数据,数据依然存放在视图引用的原始数据表中;

可以根据需求来提前创建不同的视图。

企业管理器创建视图:

T-SQL创建视图:

USE DBName
go
IF EXISTS(SELECT * FROM sysobjects WHERE name=view_Name)
    DROP VIEW view_Name
CREATE VIEW view_Name
    AS
        <SELECT语句>

代码示例:

存储过程

啥是存储过程?

就是事先存储好的SQL语句,放在数据库端,需要使用时直接调用存储过程就可以执行相应的SQL语句。存储过程可带参数,也可返回结果。

存储过程有啥优势呢?

执行速度更快;允许模块化设计;提高系统安全性;减少网络流量。

传统SQL语句与存储过程执行效率的对比:

跟视图有啥区别呢?

视图仅仅用来查询,而存储过程可以用来增删查改;视图是数据库的一张虚拟表,可以像表一样使用,而存储过程本质来说还是在执行SQL语句。

如何查看存储过程?

存储过程分类:

三种:系统存储过程、扩展存储过程、自定义存储过程

系统存储过程:由“sp_"开头,由系统定义与维护,需要学会使用。

扩展存储过程:“xp_”开头,以DLL形式单独存在,至今不知道有啥鸟用!

自定义存储过程:根据需要自定义,类似C#里面的“方法”的存在。

存储过程调用方法:

EXECUTE    过程名 【参数】
简写:EXEC    过程名 【参数】

代码示例:

重点!自定义存储过程!!!

1 use DB
2 go
3 create procedure(缩写:proc) 存储过程名
4                 @参数1  数据类型=默认值  OUTPUT
5                 ……
6                 @参数n   数据类型=默认值  OUTPUT    
7 as
8                  SQL语句
9 go

自定义存储过程的内容全在上面规范里面,其中:

第3行,procedure可以缩写为proc;

第4~6行的参数定义可有可无,若有,在调用存储过程时需要一起传递过来;默认值可有可无,若有,在调用存储过程时可以不传递参数值;OUTPUT关键字可有可无,若有在调用时需要有一个变量来接受它的返回值

什么时候使用存储过程?

当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时就要考虑用存储过程;当在一个事务的完成需要很复杂的商业逻辑时(比如,对多个数据的操作,对多个状态的判断更改等)要考虑;还有就是比较复杂的统计和汇总也要考虑,但是过多的使用存储过程会降低系统的移植性。

引用:https://www.cnblogs.com/JustYong/p/5359689.html

原文地址:https://www.cnblogs.com/EasonDongH/p/8030035.html