(8)MySQL中的视图

概念

??视图是一种虚拟存在的表,对于使用视图的用户来说,基本上跟使用正常的表一样。视图在数据库中是不存在的,视图中的数据是动态生成的。

??视图相对于普通表的优势:

  • 简单:使用视图不需要关心后面的表的对应结构条件,对于使用者来说,视图是过滤好的结果集。
  • 安全:使用者只能访问他们被允许查询的结果集。
  • 数据独立:一旦视图结构确定,对实际表的改变对视图使用者是没有影响的。

视图操作

视图操作分为创建视图修改视图删除视图查看视图定义

创建视图,修改视图

#创建视图
create [or replace] [algorithm={undefined|merge|temptable}]
view view_name[(column_list)]
as select_statement
[with[cascaded|local] check option]

#修改视图
alter [algorithm={undefined|merge|temptable}]
view view_name[(column_list)]
as select_statement
[with[cascaded|local] check option]

举例:

create view view_test as
select t1.sid,t1.username,t2.department
from test1 t1 left join test2 t2 on t1.sid=t2.sid;

说明:

  • from关键字后面不能包含子查询;
  • 不能更新的视图:包含聚合函数/group/distinct/having/union,常量视图,select中包含子查询,jion,from一个不能更新的视图,where中子查询引用from子句中的表。
  • with[cascaded|local] check option 绝对是否允许更新数据使记录不再满足视图条件。其中local-只需满足本视图条件就可以更新cascaded-必须满足所有针对该视图的所有视图的条件才可以更新。默认为cascaded。

查看视图数据

同普通表

select * from view_test;

删除视图

#删除视图
drop view [if exists] view_name [,view_name2]...[restrict|cascade]

#举例
drop view view_test;

查看视图状态

从MySQL5.1开始,使用show tables命令的时候不仅显示表名还显示视图名称。

时间: 2024-08-29 20:07:22

(8)MySQL中的视图的相关文章

在Navicat for MySQL中打开视图时,提示视图没有主键的问题

一直把视图理解为一个select语句而已,视图一般就是用于查询,不会通过视图来更新表或视图本身的数据,所以视图根本不需要什么主键.今天自己建了一个视图view_test: drop view if exists view_test create view view_test as select a.c1,a.c2, b.c1,b.c2, c.c1,c.c2, d.c1,d.c2 from table_A a join teble_B b on a.c3=b.c3 join table_C c o

MySql中的视图 触发器 存储过程,以及事物

视图: 一个临时表被反复使用的时候,对这个临时表起一个别名,方便以后使用,就可以创建一个视图,别名就是视图的名称.视图只是一个虚拟的表,其中的数据是动态的从物理表中读出来的,所以物理表的变更回改变视图. 创建: create view v1 as SQL 例如:create view v1 as select * from student where sid<10 创建后如果使用mysql终端可以看到一个叫v1的表,如果用navicate可以在视图中看到生成了一个v1的视图 再次使用时,可以直接

mysql中的视图

一.创建视图 create [algorithm = 视图算法]  view 视图名 as select 语句;  -- 可以是任何查询语句(普通查询.连接查询.联合查询.子查询) 有三种视图算法选项: 1. undefined:默认设置,表示没有指定算法,一般此选项会自动指定为merge. 2. temptable:临时表算法,系统先执行视图封装的select语句,再执行视图外部的select语句,因要执行两次查询语句,所以效率相对低一些. 3. merge:合并算法,系统将视图封装的sele

mysql中的视图--数据操作

一.新增数据 insert into 视图名 [(字段列表)] values(值列表); 注: 1. 多表视图不能新增数据. 2. 单表视图拥有基表所有不能为空或没有默认值的字段才能新增数据. 二.删除数据 delete from 视图名 [where 条件]; 注: 多表视图不能删除数据. 三.更新数据 理论上多表和单表视图都可以更新数据. 可以在创建视图是添加更新限制: with check option create view 表名 as select语句 where 条件 with ch

Java学习总结(十八)——MySQL数据库(4)MySQL数据库中的视图,函数,存储过程中常见循环

一.MySQL存储过程中常见的循环1.while循环:WHILE.....DO.....END WHILE例1:创建存储过程(求1+2+.......+num的和):创建成功,进行调用:显示结果:2.REPEAT循环: REPEAT.........UNTLL END REPEAT例2:创建存储过程:创建完成,调用存储过程:显示结果:3.LOOP循环:LOOP END LOOP 例3:创建存储过程:创建成功,调用存储过程:显示结果:二.MySQL中的视图1.概念:有结构(有行有列),但没有结果(

MySQL中视图的那点东西

本人新手一枚,将自己学习时的经验总结一下,其中若有错误,还望各位多多指教. 1,什么是视图 视图(view)是一种虚拟的表,并不在数据库中实际存在.通俗的来说,视图就是执行select语句后返回的结果. 2,为什么要使用视图 1,简单 对于数据库的用户来说,很多时候,需要的关键信息是来自多张复杂关联表的.这时用户就不得不使用十分复杂的SQL语句进行查询,给用户造成极差的体验感.使用视图之后,可以极大的简化操作,使用视图的用户不需要关心相应表的结构.关联条件等.对于用户来说,视图就是他们想要查询的

MySQL中INFORMATION_SCHEMA是什么?(2)

information_schema数据库表说明: SCHEMATA:提供了当前mysql实例中所有数据库的信息.是show databases的结果取之此表. TABLES:提供了关于数据库中的表的信息(包括视图).详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息.是show tables from schemaname的结果取之此表. COLUMNS:提供了表中的列信息.详细表述了某张表的所有列以及每个列的信息.是show columns from schemaname.

MySQL中INFORMATION_SCHEMA是什么?(1)

在获取自增ID时,我用到了以下语句: select auto_increment from information_schema.tables where table_name = "表名"; 仔细一看,这其实就是一条查询语句,查询了information_schema数据库下的"tables"表,里面 以 table_name  为 "表名"  的一行记录的  auto_increment字段的值. 那么information_schema数据

mysql中的where和having子句的区别

mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前.而 having子句在聚合后对组记录进行筛选. SQL实例: 一.显示每个地区的总人口数和总面积. SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region 先以region把返回记录分成多个组,这就是GROUP BY的