MYSQL下建立视图

   MYSQL下建立视图

第一类:create view v as select * from table;
第二类:create view v as select id,name,age from table;
第三类:create view v[vid,vname,vage] as select id,name,age from table;

   如果涉及到数据量过大,业务逻辑需要跨表查询等等也可建立一个跨表的视图,有三种情况:

   (一)基于同一数据库

   这种情况较为简单,只需简单的一行sql命令,如下:

create view v as (select * from table1) union all (select * from table2);

   (二)基于不同数据库

   这种情况只比上面的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服务。

   3.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://fed_user@remote_host:9306/federated/test_table';

   CONNECTION可以按如下方式进行配置:

(1).CONNECTION='mysql://username:password@hostname:port/database/tablename'
(2).CONNECTION='mysql://username@hostname/database/tablename'
(3).CONNECTION='mysql://username:password@hostname/database/tablename'

   3.3建立视图

create view 本地数据库.v as (select * from 本地数据库.table1) union all (select * from 远程数据库.test_table);


转载于:https://blog.51cto.com/luckysu/1361814


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部