MySQL-view

Posted aczy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL-view相关的知识,希望对你有一定的参考价值。

一.视图的定义
1.**在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。**是从一个或几个基本表(或视图)中导出的**虚拟**的表。
2.**视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。** 视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。
3.**视图看上去非常像数据库的物理表,对它的操作同任何其它的表一样。当通过视图修改数据时,实际上是在改变基表中的数据**;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些视图可以修改对应的基表,而有些则不能(仅仅能查询)。

二.视图的创建
1.第一类:create view v as select * from table;
2.第二类:create view v as select id,name,age from table;
3.第三类:create view v[vid,vname,vage] as select id,name,age from table;

如果涉及到数据量过大,业务逻辑需要跨表查询等等也可建立一个跨表的视图,有三种情况:
1.基于同一数据库
这种情况较为简单,只需简单的一行sql命令,如下:
**create view v as (select * from table1) union all (select * from table2);**

2.基于不同数据库
这种情况只比上面的sql语句多一个数据库的名字,如下:
**create view 数据库1.v as (select * from 数据库1.table1) union all (select * from 数据库2.table2);**

**create view 数据库2.v as (select * from 数据库1.table1) union all (select * from 数据2.table2);**
如果执行第一个sql将在数据库1下建立视图,反之亦然;

3.基于不同服务器
这种情况稍微麻烦一点,需要先建立一个远程表来访问远程服务器的数据表,然后再对这个刚建立的远程表和本地表进行视图,步骤如下:
(1)查看mysql是否支持federated引擎
    (1).登录Mysql;   
    (2).mysql>show engines;
    (3).如果显示为no,在配置文件中添加:federated (在my.ini),重新启动mysql服务。

(2)创建远程表
     mysql>CREATE TABLE federated_table (
                   id  INT(20)  NOT NULL AUTO_INCREMENT, 
                  name  VARCHAR(32) NOT NULL DEFAULT ‘‘, 
                  other  INT(20) NOT NULL DEFAULT ‘0‘,  
                 PRIMARY KEY  (id)
                 )
                 ENGINE=FEDERATEDDEFAULT
                 CHARSET=utf8
                 CONNECTION=‘mysql://[email protected]_host:9306/federated/test_table‘;

CONNECTION可以按如下方式进行配置:
      (1).CONNECTION=‘mysql://username:[email protected]:port/database/tablename‘
      (2).CONNECTION=‘mysql://[email protected]/database/tablename‘
      (3).CONNECTION=‘mysql://username:[email protected]/database/tablename‘
(3)建立视图
create view 本地数据库.v as (select * from 本地数据库.table1) union all (select * from 远程数据库.test_table);

三、view的别名
1.CREATE VIEW view_name(别名1,别名,...)
AS
SELECT name1,name2
FROM
table_name;
2.CREATE VIEW view_name
AS
SELECT name1 AS 别名1,name2 AS 别名2
FROM table_name;



参考大佬博客:https://www.cnblogs.com/sening/p/4526163.html

以上是关于MySQL-view的主要内容,如果未能解决你的问题,请参考以下文章