当前位置:首页>开发>正文

mysql里查询已存在视图的语句是什么 mysql 创建视图

2023-04-14 04:32:53 互联网 未知 开发

 mysql里查询已存在视图的语句是什么 mysql 创建视图

mysql里查询已存在视图的语句是什么?

进入mysql后,你要进入你的操作库,然后再看表或者视图,例子如下:
mysql> show databases
上面是现实库,假设你的库是ABC
mysql>use ABC
上面的意思是使用ABC库,也就是当前的操作库是ABC
mysql>show tables
上面的意思是显示ABC库中表和视图

mysql 创建视图

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)

mysql 存储过程 根据查询表创建视图 跪求大神

首先要明确你的目的是什么?
我猜是不是你想select出所有表名为test的数据,这样的话方案如下:

如果非要按照你说的视图的话、我不知道mysql能不能动态创建执行创建语句、如果可以的话、你可以执行在存储过程里面动态执行这样的语句、CREATE OR REPLACE testView as 这里写你的select语句用union all连接,至于怎么取到这些类似的表然后怎么拼接成sql你知道怎么操作吧?

第二种方法比较通用、肯定行、存储过程你们做一件事情、select出所有test的表、然后把记录插入到一张临时表中,这个操作会把?但是这种方法数据量大的话有速度影响