视图


1:概述


1:视图:view,可以理解为一种有结构(二维表),但是这个结构中不真实存放着数据,虚拟表的结构来源不是自己定义,而是从对应的基表(视图的数据来源)中产生的


2:视图是MySQL5.0版本之后开始引入的,视图本身是一个虚拟表,不能对视图创建触发器,也不能使用DROP和table命令删除视图


3:视图是从数据库中一个或多个表中导出来的表,视图还可以从已经存在的视图的基础上定义,数据库中只存放了视图的定义而已,而并没有存放视图中的数据,这些数据还是存放在原来的表中,只有当使用视图查询数据的时候,数据库系统会从原来的表中取出对应的数据,因此视图中的数据是依赖于原来的表中的数据的.


2:视图的作用


视图可以筛选对用户有用的信息,是应用简单化,也保证了系统的安全,可以更好的进行权限控制


1:操作简单化


1:视图需要达到的目的就是所见即所需,也就是说,从视图看到的信息就是我们所需要了解的信息,而不需要了解的信息,将屏蔽掉


2:我们可以为经常使用的查询定义一个视图(节省SQL语句,将复杂的查询语句使用视图进行保存,以后可以直接对视图进行操作),使用户不必为同样的查询操作指定条件,简化操作


2:增加数据的安全性


1:通过视图,用户只能查询和修改指定的数据,指定数据以外的信息,用户根本接触不到,数据库授权命令可以限制用户的操作权限,但不能限制到特定的行和列上,使用视图后,可以简单方便的将用户的权限限制到特定的行和列上,这样就可以保证一些重要的信息不回被没有权限的人查看到


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


3:视图往往是在大项目中使用,而且在多系统使用(例如微信平台,第三方是拿不到腾讯平台的数据),可以对外提供有用的数据,隐藏无用的数据(节省网路带宽),数据安全


3:友好型


不同的视图提供不同的数据,对外做专门设计(针对不同的客户)


3:基本语法


create view 视图名称 as select语句;


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


4:视图的常用操作


1:创建视图


1:创建单表视图(基表为单张表)


create view my_sv1 as select * from t_student;


create view my_cv2 as select * from t_class;


2:创建多表视图(基表为多张表)


视图基表有多张的情况下,注意字段名不能重复


left join


1:my_sc3 视图名


2:s.* 匹配学生表中的所有字段


3:注意:name字段相同,要使用别名




1267 mysql 视图 mysql中的视图是什么_数据库




2:查看视图


查看视图的结构,因为视图是一张虚拟的表,表的所有查看方式都适用于视图


1:show tables


1267 mysql 视图 mysql中的视图是什么_mysql_02



2:desc 视图名


1267 mysql 视图 mysql中的视图是什么_数据库_03



3:show create table 视图名(查看视图创建语句)


1267 mysql 视图 mysql中的视图是什么_数据_04



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


1267 mysql 视图 mysql中的视图是什么_字段_05