1、什么是视图

视图是虚拟的表,是一个存储的查询,虽然不需要实际的物理存储,但是也被看作是一个数据库对象;它与包含数据的表不一样,它不包含任何列或数据,它只是包含使用时动态检索数据的查询,并且只包含一个SELECT语句(不限制子查询)。视图实际上是由预定义查询形式的表所组成的。

视图与表之间的主要区别在于:表占据物理空间,包含实际的饿数据;而视图不需要物理空间,不包含数据,它只是从表里引用数据。

视图只保存在内存里,而且只需要保存其定义本身(查询语句),也就是说视图所需的空间只是定义语句所需要的。

2、视图的用途

(1)简化数据访问,简化复杂的SQL,对数据库里的数据进行归一化处理,达到重用SQL语句;

(2)对数据进行保护,起到安全的作用,例如只让用户访问部分字段信息;

(3)维护摘要数据;

(4)更改数据格式和表示,视图仅仅是用来查看存储在别处数据的一种设施。

3、视图的使用

在数据库里,视图的使用方式与表是一样的;当创建一个视图时,实际上是在数据库里执行了一个SELECT语句。

(1)表创建视图

CREATE VIEW view_name AS

SELECT *

FROMtable_name[WHERE exp1]

[WITH CHECK OPTION]

[GROUP BY]

WITH CHECK OPTION选项的目的是确保全部的UPDATE和INSERT语句满足视图定义里的WHERE条件子句,这样保证了引用的完整性。WITH CHECK OPTION有两个选项,CASCADED和LOCAL,其中CASCADED是默认选项。这两个属性都会检查视图的完整性约束和新视图的定义条件,但是LOCAL不检查底层的表,而CASCADED会检查。所以,现对于来说CASCADED更安全些。

(2)视图创建视图

CREATE view2 AS

SELECT * FROM view1;

如果从基表和从另一个视图创建视图具有一样的难度和效率,那么首选从基表创建视图。

(3)视图创建表

CREATE TABLE table_name AS

SELECTcol1,col2FROM view_name;

(4)删除视图

DROP VIEW view_name;

(5)更改视图

虽然ANSI SQL不包含ALTER VIEW语句,但是某些实现也会支持它,例如:MySQL\SQL Server\Oracle,在MySQL的旧版本中还可以通过REPLACE VIEW来修改视图。

(6)使用视图

通过视图来检索数据的时候,若是该条检索语句存在WHERE子句,并且视图定义中也存在WHERE子句,那么前一个WHERE子句会被添加到视图查询中已有的WHERE子句中,以便正确过滤数据。也即是说,一个WHERE子句在视图定义中,另外一个WHERE子句在传递给视图的中,那么这两组WHERE子句会自动合并,并且会放置在视图定义中。

(7)嵌套视图对性能的影响

因为搜索引擎需要分析每一层的视图,所以若视图嵌套的层数越多,那么搜索引擎需要进行更多的分析工作,这样导致性能降低,故最好控制视图的嵌套层数。实际上,大多数搜索引擎无法 确保获得一个完美的执行计划,而只能保证执行一个耗时最短的计划。

4、视图的规则

(1)视图名必须唯一,并在只能创建不存在的视图,视图数目没有限制;

(2)视图可以嵌套,但是要注意性能问题;

(3)视图不能有索引,也不能有关联的触发器或默认值;

(4)有些DBMS禁止在视图中使用ORDER BY子句;

(5)有些DBMS把视图作为只读的查询,禁止将数据写会底层表;

(6)有些DBMS要求返回的列进行命名,若是计算字段的话,那么必须要使用别名;

(7)有些DBMS可以创建这样的视图,即不能进行导致行不再属于视图的插入或更新;

(8)视图权限:

创建视图必须要有足够的权限;

视图由创建者或规划所有者所拥有,视图所有者自动拥有视图的全部权限,并且可以把视图的权限授予其他用户;

mysql 视图sql_SQL的视图相关推荐

  1. mysql创建视图sql_SQL视图介绍-如何在SQL和MySQL中创建视图

    mysql创建视图sql 什么是SQL视图? (What is a View in SQL?) A View is a database object that presents data exist ...

  2. MySQL 学习笔记(5)— 视图优缺点、创建视图、修改视图、删除视图

    1. 视图概念 简单来说,视图就是一个预定义的查询语句.视图在许多情况下可以当作表来使用,因此也被称为虚拟表(Virtual Table). 视图与表最大的区别在于它不包含数据,数据库中只存储视图的定 ...

  3. php中使用mysql的视图_MYSQL中视图的用法介绍(代码示例)

    本篇文章给大家带来的内容是关于MYSQL中视图的用法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.什么是视图 执行一条SQL,将结果集保存在一张虚拟表中 (相关 ...

  4. 转: mysql create view 创建视图

    以下的文章主要是对MySQL视图的描述,其中包括MySQ视图L概述,以及创建MySQL视图-create view与修改MySQL视图--alter view等相关内容的具体描述,以下就是文章的具体内 ...

  5. mysql创建全外连接的视图_MySQL之视图

    SQL语言之视图 前言 本章我们将学习MySQL中的视图,视图是数据库中的重要组件,本文将从视图是什么,视图的作用,创建和使用视图以及修改视图这些方面讲解视图. 视图是什么 视图View是一种虚拟的表 ...

  6. mysql视图登录_mysql视图

    mysql视图机制 什么是视图 视图是一张虚拟的表,为什么是虚拟呢?因为视图与数据库中存在的表不太一样,前面我们创建的4张表都是包含数据的, 如用户信息,订单信息等,而视图则是不包含数据的,下面通过一 ...

  7. mysql 删除视图 命令_在MySQL中,删除视图使用(????)命令。

    在MySQL中,删除视图使用(????)命令. 答:DROP 设计的优点之一就在于其在命令执行上的刚性 答:职能式 4月15日作业 答:笔记 喘证的主要临床特征是 答:呼吸急促,甚至张口抬肩,鼻翼煽动 ...

  8. Mysql基础运用(视图,变量,存储,流程控制)

    前要:结尾彩蛋 目录 一.视图 1.视图概述 2.创建视图 1)语法格式 2)视图示例 3.修改视图 1)语法格式 4.查看视图 5.删除视图 二.变量 1.变量分类 1)局部变量 2)用户变量 3) ...

  9. mysql视图_mysql之视图详解

    视图就是一个存在于数据库中的虚拟表. 视图本身没有数据,只是通过执行相应的select语句完成获得相应的数据. 目录 CREATE [OR REPLACE] [ALGORITHM = {UNDEFIN ...

最新文章

  1. 推荐10个安全又有实力的办公软件,极大提升办公效率
  2. 差分约束系统总结(转)
  3. matlab做横截面回归,matlab - 将横截面表面轮廓拟合到通用的已知公式以获得系数并对表面进行数学建模 - 堆栈内存溢出...
  4. 技术停滞_检测和测试停滞的流– RxJava常见问题解答
  5. 第一个Hibernate项目
  6. 为啥arm架构比x86 x64省电?
  7. 2018 10 23
  8. 【渝粤教育】国家开放大学2018年春季 0695-21T农业企业经营管理 参考试题
  9. plc组态编程需要学多少c语言,快速学习PLC编程,其实很简单!
  10. falcon-agent模块代码里执行sys.CmdOutBytes命令导致的问题
  11. ZigBee入门之基础概念3
  12. 蘑菇街商家登录php源码,蘑菇街
  13. SSH远程访问以及控制
  14. 迷宫(深度优先搜索)
  15. mysql的双井号_C语言中单井号(#)和双井号(##)在宏语句中的应用
  16. 基础(UML类图,设计原则)
  17. arduino uno r3单片机封装图_Arduino教程 Lesson 1 驱动安装及下载Blink程序
  18. Warning: ReactDOM.render is no longer supported in React 18.
  19. 高考数学试题数列求和|附习题
  20. akka 与kafka

热门文章

  1. python绘制条形图例题_python matplotlib库绘制条形图练习题
  2. android webview 监听js,Android webview与js的数据交互
  3. Java9中使用jpa,jpa – eclipselink在Java 9上使用final字段进行静态编织
  4. ruby 新建对象_Ruby中的面向对象编程
  5. ruby .each_Ruby中带有示例的Array.each方法
  6. python 向量取整数_随机整数向量| 使用Python的线性代数
  7. 一文玩转 EhCache 缓存框架!
  8. Redis 面试题补充与汇总
  9. ubuntu20.10(Linux)在wine下用pyinstaller打包python程序在window系统运行 交叉编译
  10. html5 java 图片上传_java实现图片上传至服务器并显示,如何做?希望要具体的代码实现...