码迷,mamicode.com
首页 > 数据库 > 详细

MySQL创建视图

时间:2017-08-17 00:52:42      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:sel   int   char   other   一个   nbsp   incr   arch   配置   

(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:3306/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);

MySQL创建视图

标签:sel   int   char   other   一个   nbsp   incr   arch   配置   

原文地址:http://www.cnblogs.com/LiGoHi/p/7376561.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!