141 votes

Comment obtenir une liste des vues MySQL ?

Je cherche un moyen de lister toutes les vues dans une base de données.

Au départ, j'ai trouvé et essayé un réponse sur les forums MySQL :

SELECT table_name
FROM information_schema.views
WHERE information_schema.views.table_schema LIKE 'view%';

Cependant, cela ne fonctionne pas et renvoie un ensemble vide. (Je sais qu'ils sont là !)

Ceux-ci échouent également :

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'

Pourquoi ça ne marche pas ?

0 votes

lien ceci peut aider

319voto

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

Requête MySQL pour trouver toutes les vues dans une base de données

3 votes

Il est possible de ne pas mentionner "IN database_name" si vous cherchez la vue dans la base de données actuellement sélectionnée.

0 votes

Pour compléter ou récupérer plus de données sur la vue, considérer : stackoverflow.com/questions/2834016/

29voto

Voici un moyen de trouver toutes les vues dans chaque sur votre instance :

SELECT TABLE_SCHEMA, TABLE_NAME 
FROM information_schema.tables 
WHERE TABLE_TYPE LIKE 'VIEW';

4 votes

Si vous voulez restreindre la recherche à une certaine base de données pour obtenir une réponse à la question posée, ajoutez AND TABLE_SCHEMA LIKE 'database_name' .

0 votes

Pour compléter ou récupérer plus de données sur la vue, considérez : stackoverflow.com/questions/2834016/

8voto

zloctb Points 531
 select * FROM information_schema.views\G;

7voto

Sameera Sampath Points 514

Ça va marcher.

    USE INFORMATION_SCHEMA;
    SELECT TABLE_SCHEMA, TABLE_NAME
    FROM information_schema.tables
    WHERE TABLE_TYPE LIKE 'VIEW';

2 votes

C'est mieux, car je peux le manipuler en "SHOW CREATE" avec concat.

2 votes

Même réponse que Valerie Parham-Thompson

6voto

Manuel Jordan Points 554

A complément about pour obtenir plus d'informations sur une vue spécifique

Même avec les deux réponses valables

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';

Vous pouvez appliquer ce qui suit (je pense que c'est mieux) :

SELECT TABLE_SCHEMA, TABLE_NAME 
FROM information_schema.VIEWS 
WHERE TABLE_SCHEMA LIKE 'your_db_name';

est mieux de travailler directement avec information_schema.VIEWS (observez maintenant est VIEWS et non TABLEAUX ), vous pouvez donc récupérer plus de données, utiliser DESC VIEWS pour plus de détails :

+----------------------+---------------------------------+------+-----+---------+-------+
| 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    |       |
+----------------------+---------------------------------+------+-----+---------+-------+

Par exemple, observez le VIEW_DEFINITION ainsi vous pouvez l'utiliser en action :

SELECT TABLE_SCHEMA, TABLE_NAME, VIEW_DEFINITION 
FROM information_schema.VIEWS 
WHERE TABLE_SCHEMA LIKE 'your_db_name';

Bien entendu, d'autres champs sont à votre disposition.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X