zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Kibana详细入门教程
    Python爬取食品商务网蔬菜价格数据,看看蔬菜最近的价格情况
    用Python爬取某蔬菜网的行情,分析底哪个地区的蔬菜便宜
    ES启动失败;java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.c
    ELK 5.0 组件后台启动
    linux中/etc/security/limits.conf配置文件说明
    redis面试常见问题
    单线程的Redis为什么能支持10w+的QPS?
    Redis大Key优化
    redis中查找大key方法汇总
  • 原文地址:https://www.cnblogs.com/EasonDongH/p/8030035.html
Copyright © 2011-2022 走看看