mysql創建視圖


(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;

如果涉及到數據量過大,業務邏輯需要跨表查詢等等也可建立一個跨表的視圖,有三種情況:

一、基於同一數據庫

這種情況較為簡單,只需簡單的一行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下建立視圖,反之亦然;

三、基於不同服務器

這種情況稍微麻煩一點,需要先建立一個遠程表來訪問遠程服務器的數據表,然后再對這個剛建立的遠程表和本地表進行視圖,步驟如下:

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://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、建立視圖

create view 本地數據庫.v as (select * from 本地數據庫.table1) union all (select * from 遠程數據庫.test_table);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM