mysql视图创建
什么是视图?
视图就是数据库的虚拟表,不存储数据。在使用中,其实就可以当作普通表一样。
视图的作用?
设计视图是为了简化sql查询,比如student表有100个字段,我经常需要查询其中的20个字段,每次查询都写sql未免太麻烦,所以我们可以将查询这20个字段的sql建立一张视图student_view,以后查询直接可以select * from student_view;是不是方便了很多呀?
创建sql
一、基于同一数据库
这种情况较为简单,只需简单的一行sql命令,如下:
create view 视图名 as 查询语句;
例:create view v as (select * from table1) union all (select * from table2);
创建或替换视图:
create or replace view 视图名 as 查询语句;
二、基于不同数据库
这种情况只比上面的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);
***查询视图 ***
select * from 视图名;
查询有哪些视图
show tables in vcsaas [ like ‘%view%’] ; -------可以模糊查询。
删除视图
drop view 视图名;