8.1、视图简介
  视图由数据库中的一个表,视图或多个表,视图导出的虚拟表。其作用是方便用户对数据的操作。

8.2、创建视图
必须要有CREATE VIEW 和 SELECT 权限
SELECT select_priv, create_view_priv from mysql.user WHERE user='root';

CREATE   [ ALGORITHM = { UNDEFINED | MERGE |TEMPTABLE } ]
VIEW  视图名  [ ( 属性清单 ) ]
AS SELECT语句
[ WITH  [ CASCADED | LOCAL ]  CHECK OPTION ] ;

ALGORITHM参数表示视图选择的算法
UNDEFINED 未指定,自动选择
MERGE 表示将使用视图的语句和视图定义合并起来,使得视图定义的某一部分取代语句的对应部分
TEMPTABLE 表示将视图的结果存入临时表,然后使用临时表执行语句
LOCAL参数表示更新视图时要满足该视图本身定义的条件即可;
CASCADED参数表示更新视图时要满足所有相关视图和表的条件,默认值。

使用CREATE VIEW语句创建视图时,最好加上WITH CHECK OPTION参数和CASCADED参数。这样,从视图上派生出来的新视图后,更新新视图需要考虑其父视图的约束条件。这种方式比较严格,可以保证数据的安全性。

create viewdepartment_view1 as
  select * from department;

create viewdepartment_view2 (name, function, localtion) as
  select d_name, function, address fromdepartment;

createalgorithm=merge view worker_view1(name,department, sex, age, address) as
  select name, department.d_name,sex,2009-birthday, address from worker, department whereworker.d_id=department.d_id
  with local check option;

8.3、查看视图
  必须要有SHOW VIEW的权限
  DESCRIBE|DESC  视图名 ;
  SHOW  TABLE STATUS  LIKE  ‘视图名’ ;
  SHOW  CREATE VIEW  视图名;
  SELECT  *  FROM  information_schema.views ;

8.4、修改视图
  CREATE OR REPLACE | ALTER [ ALGORITHM = { UNDEFINED | MERGE | TEMPTABLE } ]
  VIEW  视图名  [ ( 属性清单 ) ]
  AS SELECT语句
  [ WITH  [ CASCADED | LOCAL ]  CHECK OPTION ] ;
  语法和CREATE VIEW基本一样

8.5、更新视图
  更新视图是指通过视图来插入(INSERT)、更新(UPDATE)和删除(DELETE)表中的数据。因为是视图是一个虚拟表,其中没有数据。通过视图更新时,都是转换到基本表来更新。更新视图时,只能更新权限范围内的数据。超出了范围,就不能更新。

  原则:尽量不要更新视图
  语法和UPDATE语法一样

  哪些视图更新不了:

  1、视图中包含SUM(),COUNT()等聚焦函数的
  2、视图中包含UNION、UNION ALL、DISTINCT、GROUPBY、HAVING等关键字
  3、常量视图
         CREATEVIEW view_now AS SELECT        NOW()

  4、视图中包含子查询
  5、由不可更新的视图导出的视图
  6、创建视图时ALGORITHM为TEMPTABLE类型
  7、视图对应的表上存在没有默认值的列,而且该列没有包含在视图里
  8、WITH[CASCADED|LOCAL] CHECK OPTION也将决定视图是否可以更新
         LOCAL参数表示更新视图时要满足该视图本身定义的条件即可;
         CASCADED参数表示更新视图时要满足所有相关视图和表的条件,默认值。

8.6、删除视图
  删除视图时,只能删除视图的定义,不会删除数据
  用户必须拥有DROP权限
  DROP  VIEW  [IF EXISTS]  视图名列表  [ RESTRICT | CASCADE]

MySQL基础之第8章 视图的更多相关文章

  1. MySQL基础笔记(五) 视图

    一.什么是视图 视图是一个虚拟表.也就是说,视图在外观和行为上都类似于表,但它不需要实际的物理存储,只保存了视图定义(查询语句). 视图由select查询所定义 -- 当创建一个视图时,实际上是在数据 ...

  2. MySQL基础之第7章 索引

    第7章 索引 MySQL中,所有的数据类型都可以被索引,包括普通索引,唯一性索引,全文索引,单列索引,多列索引和空间索引等. 7.1.索引简介 7.1.1.索引的含义和特点 BTREE索引,HASH索 ...

  3. MySQL基础(二):视图、触发器、函数、事务、存储过程

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 视图和上一篇学到的临时表搜索类似. ...

  4. mysql基础教程(四)-----事务、视图、存储过程和函数、流程控制

    事务 概念 事务由单独单元的一个或多个SQL语句组成,在这 个单元中,每个MySQL语句是相互依赖的.而整个单独单 元作为一个不可分割的整体,如果单元中某条SQL语句一 旦执行失败或产生错误,整个单元 ...

  5. MySQL基础之第18章 性能优化

    18.1.优化简介 SHOW STATUS LIKE ‘value’;connections                 连接数uptime                          启动 ...

  6. MySQL基础之第17章 MySQL日志

    17.1.日志简介 二进制日志错误日志通用查询日志慢查询日志 17.2.二进制日志 二进制日志也叫作变更日志(update log),主要用于记录数据库的变化情况.通过二进制日志可以查询MySQL数据 ...

  7. MySQL基础之第16章 数据备份与还原

    16.1.数据备份 16.1.1.使用 mysqldump 命令备份 mysqldump [OPTIONS] database [tables]mysqldump [OPTIONS] --databa ...

  8. MySQL基础之第15章 MySQL用户管理

    15.2.账户管理 15.2.1.登录和退出MySQL服务器 mysql –hhostname|hostIP –P port –u username –p[password] databaseName ...

  9. MySQL基础之第14章 存储过程和函数

    避免编写重复的语句 安全性可控 执行效率高 14.1.创建存储过程和函数 14.1.1.创建存储过程 CREATE PROCEDUREsp_name ([proc_parameter[,...]]) ...

随机推荐

  1. spoj 274

    离散化   枚举行  扫描横坐标 #include <iostream> #include <cstdio> #include <cstring> #include ...

  2. Unity3D脚本中文系列教程(十六)

    Unity3D脚本中文系列教程(十五) ◆ function OnPostprocessAudio (clip:AudioClip):void 描述:◆  function OnPostprocess ...

  3. 对于python的内存管理的好文章

    http://www.cnblogs.com/vamei/p/3232088.html 包含了一个绘制关系图的包

  4. PHP7 扩展之自动化测试

    在安装 PHP7 及各种扩展的过程中,如果你是用源码安装,会注意到在 make 成功之后总会有一句提示:Don't forget to run 'make test'. 这个 make test 就是 ...

  5. eclipse配置mahout

    1.在elcipse上建立一个java project 项目名:mymahout 2.建立libs文件夹,在mahout 0.9的lib文件夹下找到一下java包 其中log4j.properties ...

  6. 在C#中怎么调用Resources文件中的图片

    譬如资源中有名为myPic的图片,在代码中可以这么使用: this.BackgroundImage = Properties.Resources.myPic; 如有疑问,继续追问.

  7. Qt出现警告 Unescaped backslashes are deprecated!解决办法

    Fixing Qt Warning: Unescaped backslashes are deprecated! From: http://www.openguru.com/2011/10/fixin ...

  8. Tomcat目录介绍以及运行时寻找class的顺序

    来自:http://blog.csdn.net/lihai211/article/details/6651977 Tomcat下的文件目录 /bin:存放启动和关闭tomcat的脚本文件: /conf ...

  9. java类的加载以及初始化顺序

    类的加载和初始化的了解对于我们对编程的理解有很大帮助,最近在看类的记载方面的问题.从网上查阅了若干文章,现总结如下: 我们通过一段代码来了解类加载和初始化的顺序: package com.classl ...

  10. [51NOD]BSG白山极客挑战赛

    比赛链接:http://www.51nod.com/contest/problemList.html#!contestId=21 /* ━━━━━┒ギリギリ♂ eye! ┓┏┓┏┓┃キリキリ♂ min ...