面试问题浓缩总结 面试问题浓缩总结
  • Go
  • Java
  • C/C++
  • JavaScript/HTML
  • MySQL
  • Redis
  • MongoDB
  • 操作系统
  • 计算机网络
  • spring全家桶
  • mybatis
  • 中间件
  • 软件相关
  • 系统相关
  • 算法
  • 数据结构
  • 设计模式
  • CMU硕士经典100题
  • 剑指offer
  • 重点手撕代码
  • 程序员面试金典
  • 3月
  • 4月
  • 智力题
  • 业务问题
  • 一些技术
  • 安全相关
APP下载 (opens new window)
GitHub (opens new window)
  • Go
  • Java
  • C/C++
  • JavaScript/HTML
  • MySQL
  • Redis
  • MongoDB
  • 操作系统
  • 计算机网络
  • spring全家桶
  • mybatis
  • 中间件
  • 软件相关
  • 系统相关
  • 算法
  • 数据结构
  • 设计模式
  • CMU硕士经典100题
  • 剑指offer
  • 重点手撕代码
  • 程序员面试金典
  • 3月
  • 4月
  • 智力题
  • 业务问题
  • 一些技术
  • 安全相关
APP下载 (opens new window)
GitHub (opens new window)
  • MySQL

    • 数据库基础
    • 引擎
    • 索引
    • 事务和锁
    • 视图,存储过程,函数,触发器
      • 什么是视图
      • 游标
      • 存储过程
      • 触发器
        • 使用场景
      • MySQL触发器种类
    • SQL语句及优化
    • 分布式和备份
    • 高频面试题
    • MySQL底层
  • Redis

  • MongoDB

  • 数据库
  • MySQL
小游
2021-03-20

视图,存储过程,函数,触发器

# 什么是视图

所谓视图,本质上是一种虚拟表,在物理上是不存在的,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以储存的数据值形式存在。行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成。

优点

  1. 通过只给用户访问视图的权限,保证数据的安全性
  2. 简化复杂的SQL操作,隐藏数据的复杂性(比如复杂的连接)
  3. 逻辑数据独立性。视图对重构数据库提供了一定程度的逻辑独立性

缺点

  1. 数据库必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,数据库会把它变成一个复杂的结合体,需要花费一定的时间。
  2. 修改限制。当用户试图修改、插入或者删除视图的某些行时,数据库必须把它转化为对基本表的某些行的修改。对于简单视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的

特点

  1. 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。
  2. 视图是由基本表(实表)产生的表(虚表)。
  3. 视图的建立和删除不影响基本表。
  4. 对视图内容的更新(添加,删除和修改)直接影响基本表。
  5. 当视图来自多个基本表时,不允许添加和删除数据。
  6. 可以创建视图,查看视图,删除视图和修改视图。

# 游标

游标(cursor),是一个存储在MySQL服务器上的数据库查询,游标不是一条 SELECT语句,而是被该语句检索出来的结果集;可以看做是指向查询结果集的指针;通过cursor,就可以一次一行的从结果集中把行拿出来处理。

详细参考:MySQL游标的简单实践 - GeaoZhang - 博客园 (cnblogs.com) (opens new window)

# 存储过程

存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。

优点

  • 预先编译,而不需要每次运行时编译,提高了数据库执行效率;
  • 封装了一系列操作,对于一些数据交互比较多的操作,相比于单独执行SQL语句,可以减少网络通信量;
  • 具有可复用性,减少了数据库开发的工作量;
  • 安全性高,可以让没有权限的用户通过存储过程间接操作数据库;
  • 更易于维护

缺点

  • 可移植性差,存储过程将应用程序绑定到了数据库上;
  • 开发调试复杂:没有好的IDE;
  • 修改复杂,需要重新编译,有时还需要更新程序中的代码以更新调用

# 触发器

触发器是用户定义在关系表上的一类由事件驱动的特殊的存储过程。触发器是指一段代码,当触发某个事件时,自动执行这些代码。

触发器(TRIGGER)是由事件(比如INSERT/UPDATE/DELETE)来触发运行的操作(不能被直接调用,不能接收参数)。在数据库里以独立的对象存储,用于保证数据完整性(比如可以检验或转换数据)。

# 使用场景

  • 可以通过数据库中的相关表实现级联更改。
  • 实时监控某张表中的某个字段的更改而需要做出相应的处理。
  • 例如可以生成某些业务的编号。
  • 注意不要滥用,否则会造成数据库及应用程序的维护困难。

# MySQL触发器种类

  • Before Insert
  • After Insert
  • Before Update
  • After Update
  • Before Delete
  • After Delete
编辑 (opens new window)
上次更新: 2021/03/21, 20:50:06
事务和锁
SQL语句及优化

← 事务和锁 SQL语句及优化→

Theme by Vdoing | Copyright © 2021-2021 小游
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式