mysql view(视图)

一,什么是视图

视图是存放数据的一个接口,也可以说是虚拟的表。这些数据可以是从一个或几个基本表(或视图)的数据。也可以是用户自已定义的数据。其实视图里面不存放数据的,数据还是放在基本表里面,基本表里面的数据发生变动时,视图里面的数据随之变动。

二,视图有什么用

1,视图可以让查询变得很清楚

如果您要找的数据存放在三张关系表里面,查看数据的时候,你就要写个联合查询了。换种方法,我把联合查询的数据放到视图里面,这样查询起来是不是更方便呢,通phpmyadmin看着是不是更清淅呢。

2,保护数据库的重要数据,给不同的人看不同的数据

假如您让别人帮您开发一套系统,但是你又想把真正表的暴露出来,这个时候视图是不是最好的选择呢。

三,视图的类型

mysql的视图有三种类型:MERGE、TEMPTABLE、UNDEFINED。如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响MySQL处理视图的方式。

1,MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。

2,TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。

3,UNDEFINED,MySQL将选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。

四,添加视图

1,添加规则

1 REATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
2
3  VIEW view_name [(column_list)]
4
5  AS select_statement
6
7  [WITH [CASCADED | LOCAL] CHECK OPTION]  

2,实例

mysql> use test;
Database changed
mysql> create  algorithm = MERGE view aaa as select * from user;//创建一个视图
Query OK, 0 rows affected (0.00 sec)  

上面我们说了,视图里面没有真正的数据,那在数据仓库里面,他的存储是什么样子的呢。看下面

 1 [[email protected] test]# cat /usr/local/mysql/data/test/aaa.frm
 2 TYPE=VIEW
 3 query=select `test`.`user`.`id` AS `id`,`test`.`user`.`name` AS `name`,`test`.`user`.`sex` AS `sex` from `test`.`user`
 4 md5=04d5ab2cc3ffcf3376a5e9c946f858ab
 5 updatable=1
 6 algorithm=2
 7 definer_user=
 8 definer_host=
 9 suid=2
10 with_check_option=0
11 revision=1
12 timestamp=2010-10-20 19:59:34
13 create-version=1
14 source=select * from user
15 client_cs_name=utf8
16 connection_cl_name=utf8_general_ci
17 view_body_utf8=select `test`.`user`.`id` AS `id`,`test`.`user`.`name` AS `name`,`test`.`user`.`sex` AS `sex` from `test`.`user` 

创建的视图,他没有.MYD,.MYI这二个文件,一个是存放数据的,一个存放索引的。在这儿就可以说明数据是存在基本表里面的。

五,修改视图

1,修改规则

1 ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
2
3  VIEW view_name [(column_list)]
4
5  AS select_statement
6
7  [WITH [CASCADED | LOCAL] CHECK OPTION]  

2,实例

1 mysql> alter view aaa as select * from user where id <> any
2  -> (select u_id from comment);
3 Query OK, 0 rows affected (0.00 sec)

六,查看,删除视图

 1 mysql> select * from aaa;    //查看视图数据
 2 +----+------+-----+
 3 | id | name | sex |
 4 +----+------+-----+
 5 |  3 | tank |   0 |
 6 |  4 | tank |   0 |
 7 +----+------+-----+
 8 2 rows in set (0.00 sec)
 9
10 mysql> show create view aaa\G;  //查看视图
11 *************************** 1. row ***************************
12  View: aaa
13  Create View: CREATE ALGORITHM=MERGE DEFINER=``@`` SQL SECURITY DEFINER VIEW `aaa` AS select `user`.`id` AS `id`,`user`.`name` AS `name`,`user`.`sex` AS `sex` from `user` where `user`.`id` <> any (select `comment`.`u_id` AS `u_id` from `comment`)
14 character_set_client: utf8
15 collation_connection: utf8_general_ci
16 1 row in set (0.00 sec)
17
18 mysql> drop view aaa;   //删除视图
19 Query OK, 0 rows affected (0.00 sec)
20
时间: 2024-12-28 23:08:05

mysql view(视图)的相关文章

Mysql数据库理论基础之六--VIEW视图

一.简介 由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点: 1.是一种数据库管理系统 2.是一种关联数据库管理系统 3.是一种开放源码软件,且有大量可用的共享MySQL软件 4.MySQL数据库服务器具有快速.可靠和易于使用的特点 5.MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中 InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建.这样,表的大小就能超过单独文件的最大容量.表空间可包括原始磁盘分区,从而使得很大的表成为可能

MySQL的视图view,视图创建后,会随着表的改变而自动改变数据

首先是创建视图 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `new_view` AS (select `girls`.`id` AS `id`,`girls`.`name` AS `name`,`girls`.`age` AS `age`,`girls`.`level` AS `level` from `girls`); 红色的代码时mysql自动生成的, 一般创建VIEW的SQ

Atitit.code&#160;base&#160;view&#160;视图的实现原理

Atitit.code base view 视图的实现原理 1. 视图的执行算法:1 2. 不可更新的视图:1 3. 关于视图的可插入性:insert2 4. 视图定义3 5. 调用3 1. 视图的执行算法: 存在两种执行算法: 1.  Merge:合并的执行方式,每当执行的时候,先将我们视图的sql语句与外部查询视图的sql语句,混合在一起,最终执行: 2.  Temptable:临时表模式,每当查询的时候,将视图所使用的select语句生成一个结果的临时表,再在当前的临时表内进行查询. 指的

mysql view

定义:在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表. 1.视图是一个虚拟存在的表,视图可以包含表的全部或者部分记录,也可以由一个表或者多个表来创建.使用视图就可以不用看到数据表中的所有数据,而是只想得到所需的数据.当我们创建一个视图的时候,实际上是在数据库里执行了SELECT语句,SELECT语句包含了字段名称.函数.运算符,来给用户显示数据. 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事务,视图,索引,备份和恢复

第五章 MySQL事务,视图,索引,备份和恢复 一.事务 1.什么是事务 事务是一种机制,一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求.要么都执行,要么都不执行. 事务是作为最小的控制单元来使用的,特别使用与多用户同时操作的数据库系统. 2.为什么需要事务 事务(transaction)是指将一系列数据操作捆绑成为一个整体进行统一管理,如果某一事务执行成功,则在该事务中进行的所有数据均会提交,成为数据库中永久的组成部分.如果事务执行遇到错误且

小贝_mysql view视图学习

view视图 简要: 1.视图定义 2.创建视图 3.视图与表的关系 4.视图种类 一.视图定义 视图起因: 查询每个栏目最贵的商品=> selectgoods_id,goods_name,shop_price from goods order by cat_id asc,shop_price desc; 查询结果,当成一张表看 如果某个查询结果出现的非常频繁,也就是说,拿这个结果进行子查询出现的非常频繁. createtable g2 like goods;insert into g2 sel

MySQL数据库视图

day05 MySQL数据库视图 一.视图概述: 视图是一个虚拟表,是从数据库中一个或多个表中导出来的表,内容是由查询定义的.数据库中只存在视图的定义,而没有相关的数据,这些数据四存放在原来的表中.因此,视图是依赖于原来的表中的数据,表中数据改变,视图中的数据也会改变. 视图的作用: 1.具有简单性. 2.具有安全性. 3.逻辑数据独立性. 二.视图: 1.创建视图:         create view 视图名 as select * from 表名;  注意事项: 1.运行创建视图的语句需

MySQL基本操作-视图

视图由数据库中的一个或多个表导出的虚拟表,用户可以不用看到整个数据库表中的数据而只关心对自己有用的数据,也保障了数据库系统的安全性.数据库只存放视图的定义,其数据来源于原来的表中.所以源表中数据改变,视图的数据也会改变.视图可以简化重复的查询操作,增加数据的安全性. 1.创建视图 create [algorithm={undefined|merge|temptable}] view 视图名 [(属性清单)] as select 语句 [with [cascaded|local] check op