码迷,mamicode.com
首页 > 数据库 > 详细

SQL-视图与存储过程

时间:2020-11-20 11:56:03      阅读:13      评论:0      收藏:0      [点我收藏+]

标签:declare   格式   语句   contain   传输   控制语句   header   数列   case   

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-视图与存储过程

标签:declare   格式   语句   contain   传输   控制语句   header   数列   case   

原文地址:https://www.cnblogs.com/ccccz/p/13982650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!