如何获取MySQL视图列表?

Ann*_*nan 120 mysql

我正在寻找一种列出数据库中所有视图的方法.

最初我在MySQL论坛上找到并尝试了答案:

SELECT table_name
FROM information_schema.views
WHERE information_schema.views.table_schema LIKE 'view%';
Run Code Online (Sandbox Code Playgroud)

但是这不起作用,返回一个空集.(我知道他们在那里!)

这些也失败了:

mysql> use information_schema;
Database changed
mysql> select * from views;
ERROR 1102 (42000): Incorrect database name 'mysql.bak'
mysql> select * from tables;
ERROR 1102 (42000): Incorrect database name 'mysql.bak'
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?

小智 274

SHOW FULL TABLES IN database_name WHERE TABLE_TYPE LIKE 'VIEW';
Run Code Online (Sandbox Code Playgroud)

MySQL查询以查找数据库中的所有视图

  • 如果在当前选定的数据库中查找视图,则可以将"IN database_name"保留. (3认同)

Val*_*son 24

这是一种查找实例上每个数据库中所有视图的方法:

SELECT TABLE_SCHEMA, TABLE_NAME 
FROM information_schema.tables 
WHERE TABLE_TYPE LIKE 'VIEW';
Run Code Online (Sandbox Code Playgroud)

  • 如果要将搜索限制到某个数据库以获得提出问题的答案,请添加"AND TABLE_SCHEMA LIKE"database_name'`. (4认同)

zlo*_*ctb 7

 select * FROM information_schema.views\G; 
Run Code Online (Sandbox Code Playgroud)


Sam*_*ath 7

这会奏效.

    USE INFORMATION_SCHEMA;
    SELECT TABLE_SCHEMA, TABLE_NAME
    FROM information_schema.tables
    WHERE TABLE_TYPE LIKE 'VIEW';
Run Code Online (Sandbox Code Playgroud)

  • 这样比较好,因为我可以用concat对其进行“ SHOW CREATE”操作。 (2认同)
  • 与“Valerie Parham-Thompson”相同的答案 (2认同)

Man*_*dan 6

为了配合即将获得有关特定视图更多信息

即使有两个有效的答案

SHOW FULL TABLES IN your_db_name WHERE TABLE_TYPE LIKE 'VIEW';

SELECT TABLE_SCHEMA, TABLE_NAME 
FROM information_schema.TABLES 
WHERE TABLE_TYPE LIKE 'VIEW' AND TABLE_SCHEMA LIKE 'your_db_name';
Run Code Online (Sandbox Code Playgroud)

您可以应用以下内容(我认为更好):

SELECT TABLE_SCHEMA, TABLE_NAME 
FROM information_schema.VIEWS 
WHERE TABLE_SCHEMA LIKE 'your_db_name';
Run Code Online (Sandbox Code Playgroud)

更好地直接使用information_schema.VIEWS(现在观察是VIEWS而不是TABLES),因此您可以检索更多数据,DESC VIEWS用于更多详细信息:

+----------------------+---------------------------------+------+-----+---------+-------+
| Field                | Type                            | Null | Key | Default | Extra |
+----------------------+---------------------------------+------+-----+---------+-------+
| TABLE_CATALOG        | varchar(64)                     | YES  |     | NULL    |       |
| TABLE_SCHEMA         | varchar(64)                     | YES  |     | NULL    |       |
| TABLE_NAME           | varchar(64)                     | YES  |     | NULL    |       |
| VIEW_DEFINITION      | longtext                        | YES  |     | NULL    |       |
| CHECK_OPTION         | enum('NONE','LOCAL','CASCADED') | YES  |     | NULL    |       |
| IS_UPDATABLE         | enum('NO','YES')                | YES  |     | NULL    |       |
| DEFINER              | varchar(93)                     | YES  |     | NULL    |       |
| SECURITY_TYPE        | varchar(7)                      | YES  |     | NULL    |       |
| CHARACTER_SET_CLIENT | varchar(64)                     | NO   |     | NULL    |       |
| COLLATION_CONNECTION | varchar(64)                     | NO   |     | NULL    |       |
+----------------------+---------------------------------+------+-----+---------+-------+
Run Code Online (Sandbox Code Playgroud)

例如观察该VIEW_DEFINITION字段,因此您可以在操作中使用:

SELECT TABLE_SCHEMA, TABLE_NAME, VIEW_DEFINITION 
FROM information_schema.VIEWS 
WHERE TABLE_SCHEMA LIKE 'your_db_name';
Run Code Online (Sandbox Code Playgroud)

当然,您还有更多可用字段供您考虑。