mysql中的视图

一、创建视图

  create [algorithm = 视图算法]  view 视图名 as select 语句;  -- 可以是任何查询语句(普通查询、连接查询、联合查询、子查询)

  有三种视图算法选项:

  1. undefined:默认设置,表示没有指定算法,一般此选项会自动指定为merge。

  2. temptable:临时表算法,系统先执行视图封装的select语句,再执行视图外部的select语句,因要执行两次查询语句,所以效率相对低一些。

  3. merge:合并算法,系统将视图封装的select语句与视图外部的select语句进行合并后再执行这条合并后的语句,因只需执行一次,所以效率相对高。

  注:创建多表视图时,多表中的同名字段会导致创建失败,可用别名或只查询不同名字段解决。 

  create view my_v1 as select * from my_student;  -- 创建单表视图

  create view my_v2 as select c.name,c.room,s.* from my_class as c left join my_student as s on c.id = s.class;  -- 创建多表视图, 不查询同名字段id

  create view my_v3 as select c.id as c_id,c.name,c.room,s.* from my_class as c left join my_student as s on c.id = s.class; -- 用别名查询同名字段id

二、查看视图

  用于查看表的所有方法都适用于查看视图:

  show tables;

  show tables like ‘pattern‘;

  show create table 视图名;  -- 还可以使用show create view 视图名

  desc 视图名;

三、使用视图

  使用视图主要是为了查询,将视图当表一样查询即可。

四、修改视图

  alter view 视图名 as 新的select语句; -- 视图的修改只能修改他封装的语句

五、删除视图

  drop view 视图名;

时间: 2024-10-12 20:31:23

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的视图 再次使用时,可以直接

(8)MySQL中的视图

概念 ??视图是一种虚拟存在的表,对于使用视图的用户来说,基本上跟使用正常的表一样.视图在数据库中是不存在的,视图中的数据是动态生成的. ??视图相对于普通表的优势: 简单:使用视图不需要关心后面的表的对应结构条件,对于使用者来说,视图是过滤好的结果集. 安全:使用者只能访问他们被允许查询的结果集. 数据独立:一旦视图结构确定,对实际表的改变对视图使用者是没有影响的. 视图操作 视图操作分为创建视图.修改视图.删除视图.查看视图定义. 创建视图,修改视图 #创建视图 create [or rep

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的