mysql建立视图

(1).第一类:create view v as select * from table;mysql

(2).第二类:create view v as select id,name,age from table;sql

(3).第三类:create view v[vid,vname,vage] as select id,name,age from table;数据库

若是涉及到数据量过大,业务逻辑须要跨表查询等等也可创建一个跨表的视图,有三种状况:服务器

1、基于同一数据库post

这种状况较为简单,只需简单的一行sql命令,以下:blog

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

2、基于不一样数据库it

这种状况只比上面的sql语句多一个数据库的名字,以下:io

create view 数据库1.v as (select * from 数据库1.table1) union all (select * from 数据库2.table2);table

create view 数据库2.v as (select * from 数据库1.table1) union all (select * from 数据库2.table2);

若是执行第一个sql将在数据库1下创建视图,反之亦然;

3、基于不一样服务器

这种状况稍微麻烦一点,须要先创建一个远程表来访问远程服务器的数据表,而后再对这个刚创建的远程表和本地表进行视图,步骤以下:

一、查看MySql是否支持federated引擎

    (1).登陆Mysql;    

    (2).mysql>show engines;

    (3).若是显示为no,在配置文件中添加:federated (在my.ini),从新启动mysql服务。

二、建立远程表

     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'

三、创建视图

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

相关文章
相关标签/搜索