MySQL(三)视图

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

    

原文地址:https://www.cnblogs.com/soft2018/p/10200018.html

时间: 12-30

MySQL(三)视图的相关文章

mysql view(视图)

一,什么是视图 视图是存放数据的一个接口,也可以说是虚拟的表.这些数据可以是从一个或几个基本表(或视图)的数据.也可以是用户自已定义的数据.其实视图里面不存放数据的,数据还是放在基本表里面,基本表里面的数据发生变动时,视图里面的数据随之变动. 二,视图有什么用 1,视图可以让查询变得很清楚 如果您要找的数据存放在三张关系表里面,查看数据的时候,你就要写个联合查询了.换种方法,我把联合查询的数据放到视图里面,这样查询起来是不是更方便呢,通phpmyadmin看着是不是更清淅呢. 2,保护数据库的重

mysql 查询表,视图,触发器,函数,存储过程

1. mysql查询所有表: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '数据库名' AND  TABLE_TYPE ='BASE TABLE' mysql查询建表语句: show create table `表名` 2.mysql查询所有视图: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '数据库名'

MySQL的视图

一.视图是什么 1.视图是一条SELECT语句执行后的返回的结果集2.视图对实际表的引用,是一个虚表,并不存储任何数据,实际表数据改变了,视图也会改变3.对视图的更新,将会更新实际表 二.视图的作用1.方便操作,减少复杂语句2.增强安全性 三.创建视图基本语法CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW [db_name.]view_name [(column_list)] AS select_sta

MySQL(三)

上一章给大家说的是数据库的视图,存储过程等等操作,这章主要讲索引,以及索引注意事项,如果想看前面的文章,url如下: MYSQL入门全套(第一部) MYSQL入门全套(第二部) 索引简介 索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构.如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息. 例如这样一个查询:select * from table1 where id=10000.如果没有索引,必须遍历整个表

Mysql(三)约束

一.视图 视图是虚拟的数据表,本身不存储数据,而是提供数据的逻辑 展示.       1.创建视图 create view stu_view as select s1.id, s1.name, s2.room, s2.stay_time from student s1, stay s2 where s1.id = s2.id; 创建视图后,就可以像查询数据表一样查询视图.  视图的字段就是我们从数据表中查询而来的字段. select id from stu_view   desc stu_vie

MySQL笔记---视图,存储过程, 触发器的使用入门

大二学数据库的时候,只是隐约听到老师提起过视图啊,存储过程啊,触发器啊什么的,但只是淡淡的记住了名字,后来自己做些小项目,小程序,也没有用上过,都只是简单的建表,关联表之类的,导致我对这些东西的理解只能停留在名称的阶段.最近看完了一本薄薄的小书叫<MySQL必知必会>,记了不少笔记,也自己上手实践了一番,总算是了解了些皮毛. 下面通过实例来具体了解这几个东西,首先我的样例表是这样的. 视图: 什么是视图? 视图是虚拟的表,本身并不包含数据,通过一个例子,来更好地理解视图: 假设上述表中,我需要

mysql三:存储引擎

一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件应该有不同的类型:比如存文本用txt类型,存表格用excel,存图片用png等 数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎. 存储引擎说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型) 在O

MySQL之视图、存储过程、触发器、函数、事务、动态执行SQL

视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 创建视图: create view v1 as select * from student where id > 100; 今后可以直接通过: select * from v1;   #直接访问学生ID大于100的信息 删除视图: drop view v1; 修改视图: alter view v1 as select id,name f

mysql 深入视图和索引

版权声明:欢迎交流! 目录(?)[+] 注:求职季,巩固下MySQL知识! 1.视图 视图又叫虚表.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成. 视图主要有以下作用: 1.安全,权限控制.一些数据表有着重要的信息.有些字段是保密的,不能让用户直接看到.这时就可以创建一个视图,在这张视图中只保留一部分字段.这样,用户就可以查询自己需要的字段,不能查看保密的字段. 2.性能,

Mysql 临时表+视图

学习内容: 临时表和视图的基本操作... 临时表与视图的使用范围... 1.临时表   临时表:临时表,想必大家都知道这个概念的存在...但是我们什么时候应该使用到临时表呢?当一个数据库存在着大量的数据的时候,我们想要获取到这个数据集合的一个子集,那么我们就可以使用临时表来保存我们想要的数据..然后对临时表进行操作就可以了...使用临时表必然是有原因的..使用临时表会加快数据库的查询性能.... create temporary table tmp_table //新建一个临时表 ( name