视图的概述

视图是一个虚拟表,其查询的数据来自于视图定义时的 as select xx 查询语句。视图的列来自于一个表或多个表,所以视图不可以和表名重名。
数据多用作查询,一般不会通过视图去修改数据。

视图的作用

1.视图能简化用户的操作
我们可以为常用的sql语句创建一个视图,这样我们原来需要连多个表,现在操作一个表就好了。

2.视图能够增加安全性
我们可以给不同的用户定义不同的视图,屏蔽了底层的表结构,从而更好的保护了数据的安全性。降低了如sql注入的风险。

3视图对重构数据库提供了一定程度的逻辑独立性
数据的物理独立性是指用户的应用程序不依赖于数据库的物理结构。数据的逻辑独立性是指当数据库重构造时,如增加新的关系或对原有的关系增加新的字段,用户的应用程序不会受影响。

视图的创建

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]VIEW view_name [(column_list)]AS select_statement[WITH [CASCADED | LOCAL] CHECK OPTION]

column_list子句,列出由逗号隔开的ID。column_list中的名称数目必须等于SELECT语句检索的列数。

ALGORITHM可取三个值:MERGE、TEMPTABLE或UNDEFINED。如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。
MERGE:直接合并结果集
TEMPTABLE:创建临时表
UNDEFINED:MySQL将选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。

WITH CHECK OPTION子句中,LOCAL和CASCADED关键字决定了检查测试的范围。LOCAL关键字对CHECK OPTION进行了限制,使其仅作用在定义的视图上,而CASCADED会嵌套的检查前面的视图,如果未给定任一关键字,默认值为CASCADED

如果去除option则可以更新,
使用with check 必须保证更新之后的数据,依旧符合where 条件,能被检索出来。

视图的更新操作限制

视图一般只用来查询,如果是单表的话,也可以进行增删改。但是有如下限制。
1.聚合函数(SUM(), MIN(), MAX(), COUNT()等)。2 2.DISTINCT
3. GROUP BY
4. 4 HAVING
5. UNION或UNION ALL
6. 位于选择列表中的子查询
7.Join
8.FROM子句中的不可更新视图
9. WHERE子句中的子查询,引用FROM子句中的表。
10. 仅引用文字值(在该情况下,没有要更新的基本表)。
11. ALGORITHM = TEMPTABLE(使用临时表总会使视图成为不可更新的)。

数据库视图的使用和原理相关推荐

  1. SQL Server实验——数据库视图的定义与使用

    SQL Server实验--数据库视图的定义与使用 学生选课数据库的创建 创建学生信息表student 创建课程信息表course 创建学生选课信息表sc 插入相关信息 视图的创建 基本应用 一.创建 ...

  2. 什么是数据库视图(view),视图(view)优缺点是什么?

    什么是数据库视图(view),视图(view)优缺点是什么? 什么是数据库视图(view)? 在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表. 视图包含行和列,就像一个真实的表.视图中的 ...

  3. 15张图呈现数据库事务背后的并发原理

    本文分享自华为云社区<将数据库9种锁.3种读.4种隔离级别一次性串联起来,用15张图呈现背后数据库事务背后的并发原理>,作者: breakDawn. 前段时间开发时,正好遇到了2个进程同时 ...

  4. 带你认识数据库视图对象,下次不要再认成“表”了

    摘要:本文介绍GaussDB(DWS)的数据库视图对象,我们将讨论使用数据库视图的优点和缺点,以及如何使用系统视图解决一些问题. 本文分享自华为云社区<GaussDB(DWS) SQL进阶之数据 ...

  5. 数据库实验7 数据库视图的定义与使用

    实验7 数据库视图的定义与使用 7.1实验目的及要求 掌握视图的用法,加深对视图作用的理解 7.2实验内容 1.创建.修改和删除视图 2.利用视图进行查询 7.3实验步骤 7.3.1视图的创建(查看视 ...

  6. mysql视图改造实体表_数据库视图改了对基表

    数据库必知词汇:数据库视图 视图是从一个或几个基本表(或视图)中导出的虚拟的表.在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据.视图与表(有时为与视图区别,也称表为基本表--Base Ta ...

  7. 数据库视图、索引、存储过程优缺点

    数据库视图.索引.存储过程优缺点 1.视图 (1).什么是视图? 视图(View)作为一种数据库对象,为用户提供了一个可以检索数据表中的数据方式.用户通过视图来浏览数据表中感兴趣的部分或全部数据,而数 ...

  8. 数据库视图创建及应用

    数据库视图创建及应用 一.视图: 视图是从一个或几个基本表(或视图)导出来的表.它与基本表不同,是一个虚表.数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中.所以一旦基 ...

  9. oracle视图无故消失,oracle数据库视图无效

    author:skate time:2008/07/23 现象:oracle数据库视图无效 查询数据库invalid的对象: SELECT COUNT(DISTINCT ALO.OBJECT_NAME ...

最新文章

  1. 频谱扩展 matlab,使用MATLAB进行频谱分析 | 学步园
  2. VHDL学习:利用Quartus自带库3步快速完成状态机
  3. javascript 数组排序
  4. matlab集群搭建问题
  5. 不够优秀就不要腆着脸继续占便宜——作者:杨毅
  6. 怎么输出链表长度C语言,下面程序输出结果不,如输出的链表长度结果不对,不知有关问题在哪里。请高手看下...
  7. javascript在第三个文本框中显示文字_一段中的个别文字,显示在目录中
  8. Openbiz Cubi 企业级应用程序开发(一)
  9. 计算机的指令合成为,第二章计算机操作基础知识doc
  10. WdatePicker日期控件使用与值获取,以及选择日期完毕触发事件
  11. Kaggle 比赛分类与学习资源整理
  12. php中如何判断目录是否存在文件_PHP判断指定目录下是否存在文件
  13. 百度前员工因内网发布“女优一览表”被辞退,自诉:想转鉴黄师
  14. python源码提取_从PyInstaller打包生成的EXE文件中提取Python源码
  15. word排版学习笔记
  16. 2020杭电多校第六场—【1002 Little Rabbit‘s Equation】
  17. 物联网模块选择注意事项
  18. 用github写开源书籍
  19. Cesium 两点之间的直线距离
  20. 购买服务器需要注意哪些问题

热门文章

  1. Class类的介绍和基本使用方法
  2. 分享CFA一级通过标准!
  3. 虚拟服务器日语,云服务器日语
  4. java导出数据为乱码_传参导出Excel表乱码问题解决方法
  5. 招聘程序员的内情你了解吗?
  6. 关于WSADuplicateSocket的理解~(整理)
  7. 使用正则在一串字符串中找到数字
  8. CSS3实现图片超立体3D效果
  9. 详解pdfFactory的页面管理功能
  10. jqGrid表格 样式设置