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;
如果涉及到數(shù)據(jù)量過大,業(yè)務(wù)邏輯需要跨表查詢等等也可建立一個(gè)跨表的視圖,有三種情況:
一、基于同一數(shù)據(jù)庫
這種情況較為簡(jiǎn)單,只需簡(jiǎn)單的一行sql命令,如下:
create view v as (select * from table1) union all (select * from table2);
二、基于不同數(shù)據(jù)庫
這種情況只比上面的sql語句多一個(gè)數(shù)據(jù)庫的名字,如下:
create view 數(shù)據(jù)庫1.v as (select * from 數(shù)據(jù)庫1.table1) union all (select * from 數(shù)據(jù)庫2.table2);
或
create view 數(shù)據(jù)庫2.v as (select * from 數(shù)據(jù)庫1.table1) union all (select * from 數(shù)據(jù)庫2.table2);
如果執(zhí)行第一個(gè)sql將在數(shù)據(jù)庫1下建立視圖,反之亦然;
三、基于不同服務(wù)器
這種情況稍微麻煩一點(diǎn),需要先建立一個(gè)遠(yuǎn)程表來訪問遠(yuǎn)程服務(wù)器的數(shù)據(jù)表,然后再對(duì)這個(gè)剛建立的遠(yuǎn)程表和本地表進(jìn)行視圖,步驟如下:
1、查看MySql是否支持federated引擎
??? (1).登錄Mysql;????
??? (2).mysql>show engines;
??? (3).如果顯示為no,在配置文件中添加:federated (在my.ini),重新啟動(dòng)mysql服務(wù)。
2、創(chuàng)建遠(yuǎn)程表
???? 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可以按如下方式進(jìn)行配置:
????? (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 本地?cái)?shù)據(jù)庫.v as (select * from 本地?cái)?shù)據(jù)庫.table1) union all (select * from 遠(yuǎn)程數(shù)據(jù)庫.test_table);
總結(jié)
以上是生活随笔為你收集整理的MySql下视图的创建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ATT扩展随选网络至100城 SDN在美
- 下一篇: yum 简介及其常用命令