视图:view,是一种有结构(有行有列)但是没有结果(结构中不真实的存放数据)的虚拟表,虚拟表的结构来源不是自己定义,而是从对应的基表中产生(视图的数据来源);

视图意义:

  1、视图可以节省SQL语句:将一条复杂的查询语句使用视图保存,以后可以直接对视图进行操作。

  2、数据安全:视图的操作是主要针对查询的,如果对视图结构进行删除处理,不会影响基表数据(相对安全)。

  3、视图往往是在大项目中使用,而且是多系统使用。(想想现在的微信,有多少项目是基于微信开发的,但是微信不可能提供数据库基表的,但是可以给提供视图,因为视图在查询时候是可以提供自己想给的select语句的,比如:我提供没有查询学号的select语句,封装到视图里面。)

    可以对外提供有用的数据,但是隐藏关键(无用)的数据。

  4、视图可以对外提供友好型:不同的视图提供不同的数据,好像是对外专门设计的。(比如与其他公司合作,可以专门提供不同公司所需要的不同数据,用视图进行封装,这个与第三条有点类似。)

  5、视图可以更好(更容易)的进行权限控制。

一、创建视图:

  格式:

    create view 视图名字 as select 语句;

  查询语句可以是普通查询,连接查询,联合查询,子查询。

  创建单表视图:基表只能有一个

  创建多表视图:基表至少有两个

二、查看视图

  查看视图:查看视图结构

    视图是一张虚拟表:表的所有的查看方式都适用于视图:show tables [like] 视图名字;desc 视图名字; show create 视图名字;

    视图比表还是有一个关键字的区别:view。查看“表(视图)”的创建语句的时候可以用view关键字

  视图一旦创建:系统就会在视图对应的数据库文件夹下创建一个对应的结构文件:frm文件。

三、使用视图

  视图主要是为了查询,将视图当做表一样查询就可以了。

  视图的执行:其实本质就是执行封装的select语句。(可能有疑问,我们还不如去查询基表呢,但是有时候我们写select语句会很长,占一两页,这样我们就可以用视图,进行语句的复用,但是视图不仅仅只有这一个功能,它还有其他功能)

四、修改视图

  视图本身是不可以修改的,但是视图的来源是可以修改的。

  修改视图:修改视图本身的来源语句(select语句)

  格式:

    alter view 视图名字  as 新的select语句;

五、删除视图

  格式:

  drop view 视图名字(删除视图一般不用,一个复杂select语句是不容易写的,创建这样的视图后,如果该select语句没有保存,那么就玩完了。)

六、视图算法:系统对视图以及外部查询视图的select语句的一种解释方式

  视图算法分为三种:

    1、undefined:未定义(默认的),这不是一种实际使用的算法,是一种推卸责任的算法,告诉系统,视图没有定义算法,系统自己看着办。

    2、temptable:临时表算法:系统应该先执行视图的select语句,后执行外部查询语句。

    3、merge:合并算法:系统应该先将视图对应的select语句与外部查询视图的select语句进行合并,然后执行(效率高)

    算法指定:在创建视图的时候

    格式:

      create algorithm = 指定算法  view 视图名字 as select 语句;

  视图算法选择:如果视图的select语句中会包含一个查询子句,而且很有可能顺序比外部的查询语句要靠后,一定要使用算法temptable,其他情况可以不指定(默认就可以了)

 视图对数据的操作:

  视图是可以进行数据的操作,但是有很多的限制。将数据直接在视图上进行操作。

一、新增数据(如果给别人视图,一般是不会给他人操作基表权限的)

  数据的新增,就是直接对视图进行数据的新增

    1、多表视图不能进行新增

    2、可以向单表视图插入数据:但是视图中包含的字段必须有基表中所有不能为空(或者没有默认值)的字段。

    3、向基表中插入数据

二、删除数据

  1、多表视图不可以删除(连接的视图)

  2、单表视图的删除

 

三、更新数据

  一、单表视图与多表视图都是可以修改成功的。

    更新限制:with check option,如果对视图在新增的时候,限定了某个字段有限制,那么在对视图进行数据更新操作时候,系统会进行验证,要保证更新之后,数据依然可以被实体查询出来,否则不让更新。

    

MySQL(三)视图的更多相关文章

  1. MySQL(三)

    MYSQL(三) 上一章给大家说的是数据库的视图,存储过程等等操作,这章主要讲索引,以及索引注意事项,如果想看前面的文章,url如下: MYSQL入门全套(第一部) MYSQL入门全套(第二部) 索引 ...

  2. mysql view(视图)

    一,什么是视图 视图是存放数据的一个接口,也可以说是虚拟的表.这些数据可以是从一个或几个基本表(或视图)的数据.也可以是用户自已定义的数据.其实视图里面不存放数据的,数据还是放在基本表里面,基本表里面 ...

  3. 第五章 MySQL事务,视图,索引,备份和恢复

    第五章 MySQL事务,视图,索引,备份和恢复 一.事务 1.什么是事务 事务是一种机制,一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求.要么都执行 ...

  4. MySQL之视图、触发器、事务、存储、函数、流程控制

    一.视图 视图就是一个虚拟表,我们把复杂的sql语句后看到的虚拟表封装起来,给他取个名字,当我们下次使用的时候,就不用再去写复杂的sql语句,直接调用封装后的视图名字,就可以得到我们想要的表,然后就可 ...

  5. MySQL之视图、触发器、事务、存储过程、函数 流程控制

    MySQL之视图.触发器.事务.存储过程.函数 阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 MySQL这个软件想将数据处理的所有事情,能够在mysql这个层面上全部 ...

  6. 数据库MySQL之 视图、触发器、存储过程、函数、事务、数据库锁、数据库备份、事件

    数据库MySQL之 视图.触发器.存储过程.函数.事务.数据库锁.数据库备份.事件 浏览目录 视图 触发器 存储过程 函数 事务 数据库锁 数据库备份 事件 一.视图 1.视图概念 视图是一个虚拟表, ...

  7. MySQL 的视图、触发器、事务、存储过程、函数

    MySQL 的视图.触发器.事务.存储过程.函数   阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句 ...

  8. MySQL的视图和索引

    MySQL的视图 简单来说MySQL的视图就是对SELECT 命令的定义的一个快捷键,我们查询时会用到非常复杂的SELECT语句,而这个语句我们以后还会经常用到,我们可以经这个语句生产视图.视图是一个 ...

  9. day 40 MySQL之视图、触发器、事务、存储过程、函数

    MySQL之视图.触发器.事务.存储过程.函数   阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 MySQL这个软件想将数据处理的所有事情,能够在mysql这个层面上 ...

  10. mysql第五篇 : MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁

    第五篇 : MySQL 之 视图.触发器.存储过程.函数.事物与数据库锁 一.视图 视图是一个虚拟表(非真实存在的),其本质是‘根据SQL语句获取动态的数据集,并为其命名‘ ,用户使用时只需使用“名称 ...

随机推荐

  1. python+opencv实现图像自适应阈值的均衡化

    内容涉及:列表遍历,图像均衡化,图像通道分离与合并 import cv2 import numpy as np import os for path in open("org_junheng ...

  2. cbitmap 获取RGB

    CBitMap的用法   MFC提供了位图处理的基础类CBitmap,可以完成位图(bmp图像)的创建.图像数据的获取等功能.虽然功能比较少,但是在对位图进行一些简单的处理时,CBitmap类还是可以 ...

  3. plsql启动报 Using filter for all users can lead to poor perform

    首先,这个与Oracle配置无关,就是在使用pl/sql左侧树形目录时会看到非常多的和你当前工作无关的表,视图,序列等,导致打开速度慢. ​解决办法:Tools-->Object browser ...

  4. 《算法笔记》6.6小节 问题 A: 任务调度

    这道题我一开始看到的时候,想到的是拓补排序,可是这么菜又这么懒的我怎么可能用呢,既然出现在优先队列里面,那么久一定和他有关了 可是并没有使用优先队列 思路: 对于这道题,我们肯定是对他们定义优先级,然 ...

  5. linux terminal---EOF

    we can use cat and eof to enter multiple lines content once.

  6. HTML5全局属性汇总

    局部属性和全局属性 局部属性:有些元素能规定自己的属性,这种属性称为局部属性.比如link元素,它具有的局部属性有href. rel. hreflang. media. type. sizes这六个. ...

  7. mysql数据库 创建、查看、重命名、复制和删除的基本操作

    在数据库中,表是最重要.最基本的对象,是存储数据的基本单位.数据表从哪里来呢?数据表由关系模式转换而来.但不是简单的转换. 在设计表结构时要考虑下面几个方面: 字段名要通俗易懂且具有代表性,字段名不允 ...

  8. BUUCTF-Misc-No.1

    # BUUCTF-Misc # 签到 flag{buu_ctf} 金三胖 说实话直接看出来flag{he11ohongke} 二维码 直接binwalk扫一下,-e分离就出来一个带锁的zip爆破一下就 ...

  9. adb devices 不能连接设备 could not install *smartsocket* listener

    cmd以管理员身份运行命令adb devices  或adb reverse tcp:8081 tcp:8081,无法连接设备,出现上图信息. 输入命令:adb kill-server 再输入:adb ...

  10. Scala 基础(七):Scala 运算符

    1 算术运算符 算术运算符(arithmetic)是对数值类型的变量进行运算的,在Scala程序中使用的非常多. 细节说明: 1)对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留 ...