sql 视图 存储过程 的区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 视图 存储过程 的区别?相关的知识,希望对你有一定的参考价值。

视图是基于T-SQL语句生成的虚拟表,通常生成视图使用的都是查询命令,主要用于简化用户查询数据的过程
而存储过程是事先保存好的要执行的SQL命令的序列,可以执行更多的命令,能帮助管理员或者用户自动的完成某些操作~并且可以在其他程序中调用
参考技术A 视图是view是假表,存储过程是编写好的处理过程

SQL-视图与存储过程

1.视图

1.1 什么是视图?

  • 视图实际上是一张虚拟表,其本身不存储数据。
  • 相当于一张表或多张表的数据结果集
  • 数据表复杂的情况下,可以把查询结果放在虚拟表中,提升效率

1.2如何创建、更新、删除视图

  • 创建

    CREATE VIEW view_name AS
    SELECT column1
    FROM table
    WHERE condition
    
  • 嵌套视图

    • 把视图当成table字段即可
  • 更新

    ALTER VIEW view_name AS
    SELECT column1, column2
    FROM table
    WHERE condition
    
    • 比上述创建时多一列
  • 删除

    DROP VIEW view_name
    
    • 其中SQLite不支持视图的修改,只支持只读视图。

1.3 如何使用视图简化SQL操作

  • 利用视图完成复杂的连接
    • 实际上就是把复杂的连接得到的数据集直接当作视图
  • 利用视图对数据进行格式化
  • 利用视图与计算字段

1.4 视图和临时表的区别?

  • 视图是虚拟表,本身不存储数据,我们一般把视图用于查询
  • 临时表是真实存在的数据表,不利于长期存放数据,只为当前连接存在,连接关闭,临时表会自动释放。

2.存储过程

2.1 什么是存储过程

  • SQL语句的封装,使用就像使用函数一样,直接调用其名字即可
  • 存储过程由SQL语句和流控制语句共同组成

2.2 如何创建一个存储过程

  • 创建

    CREATE PROCEDURE 存储过程名称(参数列表)
    BEGIN
      SQL
    END
    
  • 删除

    DROP PROCEDURE
    
  • 修改

    ALTER PROCEDURE
    
  • DELIMITER

    • 在MYSQL中,;代表结束,但是我们在存储过程中表示一个语句,使用DELIMITER将结束符定义为其他符号而不是;
  • 存储过程的三种参数类型

    • IN
    • OUT
    • INOUT

2.3 流控制语句都有哪些,如何使用它们?

  • BEGIN END
  • DECLARE:声明变量
  • SET:为变量赋值
  • SELECT INTO:把查询的结果放到变量中
  • IF THEN ENDIF
  • CASE
  • LOOP、LEAVE、ITERATE:LOOP堪称for,LEAVE堪称break,ITERATE看成continue
  • WHILE DO...END WHILE:

2.4 各大公司如何看待存储过程?在实际工作中,我们该如何使用存储过程

  • 大公司推荐使用存储过程,如微软、IBM,基于以下优点

    • 一次编译多次使用;提升SQL执行效率
    • 减少开发工作量
    • 安全性强,可以设置对用户的使用权限
    • 减少网络传输量:多条SQL需要多次连接数据库,而存储过程只需要一次
  • 阿里不推荐使用

    • 可移植性差,不能跨数据库移植
    • 调试困难
    • 版本管理困难
    • 不适合高并发场景。

以上是关于sql 视图 存储过程 的区别?的主要内容,如果未能解决你的问题,请参考以下文章

存储过程和视图的区别

SQL存储过程做成视图

用ASP调用SQL Server的视图和存储过程

SQL-视图与存储过程

2008SQL 存储过程中可以创建视图吗

存储过程、索引、视图、触发器 的区别