Maison > base de données > tutoriel mysql > Que dois-je faire si MySQL ne parvient pas à créer une vue ?

Que dois-je faire si MySQL ne parvient pas à créer une vue ?

coldplay.xixi
Libérer: 2020-10-13 16:51:17
original
3300 Les gens l'ont consulté

La solution au problème selon lequel MySQL ne peut pas créer une vue : utilisez l'instruction CREATE VIEW pour créer la vue, le code est [CREATE VIEW AS语句>

Que dois-je faire si MySQL ne parvient pas à créer une vue ?

Plus de recommandations d'apprentissage gratuites connexes : tutoriel mysql (Vidéo)

MySQL ne peut pas créer de solution de vue :

Syntaxe de base

Des vues peuvent être créées à l'aide de l'instruction CREATE VIEW.

Le format de la syntaxe est le suivant :

CREATE VIEW <视图名> AS <SELECT语句>
Copier après la connexion

La description de la syntaxe est la suivante.

  •  : Spécifiez le nom de la vue. Le nom doit être unique dans la base de données et ne peut pas avoir le même nom qu'une autre table ou vue.

  •  : Spécifie l'instruction SELECT pour créer une vue, qui peut être utilisée pour interroger plusieurs tables de base ou vues source. Les restrictions suivantes s'appliquent à la spécification des instructions SELECT dans les vues de création :

  • En plus des autorisations CREATE VIEW, l'utilisateur dispose également des autorisations pertinentes sur les tables sous-jacentes et autres vues impliquées dans l'opération. .

  • Les instructions SELECT ne peuvent pas faire référence à des variables système ou utilisateur.

  • Une instruction SELECT ne peut pas contenir de sous-requête dans la clause FROM.

  • Les instructions SELECT ne peuvent pas faire référence aux paramètres d'instruction préparés.

La table ou la vue référencée dans la définition de la vue doit exister. Toutefois, après avoir créé la vue, vous pouvez supprimer la table ou la vue référencée par la définition. Vous pouvez utiliser l'instruction CHECK TABLE pour vérifier la définition de la vue pour de tels problèmes.

Les instructions ORDER BY sont autorisées dans les définitions de vue, mais si vous sélectionnez dans une vue spécifique qui utilise sa propre instruction ORDER BY, l'ORDER BY dans la définition de vue sera ignoré.

La table TEMPORAIRE (table temporaire) ne peut pas être référencée dans la définition de la vue, et la vue TEMPORAIRE ne peut pas être créée.

AVEC OPTION DE VÉRIFICATION signifie que lors de la modification de la vue, vérifiez si les données insérées répondent aux conditions définies par OÙ.

Créer une vue basée sur une seule table

MySQL peut créer une vue sur une seule table de données.

Affichez les données de la table tb_students_info dans la base de données test_db, comme indiqué ci-dessous.

mysql> SELECT * FROM tb_students_info;
+----+--------+---------+------+------+--------+------------+
| id | name  | dept_id | age | sex | height | login_date |
+----+--------+---------+------+------+--------+------------+
| 1 | Dany  |    1 |  25 | F  |  160 | 2015-09-10 |
| 2 | Green |    3 |  23 | F  |  158 | 2016-10-22 |
| 3 | Henry |    2 |  23 | M  |  185 | 2015-05-31 |
| 4 | Jane  |    1 |  22 | F  |  162 | 2016-12-20 |
| 5 | Jim  |    1 |  24 | M  |  175 | 2016-01-15 |
| 6 | John  |    2 |  21 | M  |  172 | 2015-11-11 |
| 7 | Lily  |    6 |  22 | F  |  165 | 2016-02-26 |
| 8 | Susan |    4 |  23 | F  |  170 | 2015-10-01 |
| 9 | Thomas |    3 |  22 | M  |  178 | 2016-06-07 |
| 10 | Tom  |    4 |  23 | M  |  165 | 2016-08-05 |
+----+--------+---------+------+------+--------+------------+
10 rows in set (0.00 sec)
Copier après la connexion

[Exemple 1]

Créez une vue nommée view_students_info sur la table tb_students_info L'instruction SQL saisie et les résultats d'exécution sont les suivants.

mysql> CREATE VIEW view_students_info
  -> AS SELECT * FROM tb_students_info;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM view_students_info;
+----+--------+---------+------+------+--------+------------+
| id | name  | dept_id | age | sex | height | login_date |
+----+--------+---------+------+------+--------+------------+
| 1 | Dany  |    1 |  25 | F  |  160 | 2015-09-10 |
| 2 | Green |    3 |  23 | F  |  158 | 2016-10-22 |
| 3 | Henry |    2 |  23 | M  |  185 | 2015-05-31 |
| 4 | Jane  |    1 |  22 | F  |  162 | 2016-12-20 |
| 5 | Jim  |    1 |  24 | M  |  175 | 2016-01-15 |
| 6 | John  |    2 |  21 | M  |  172 | 2015-11-11 |
| 7 | Lily  |    6 |  22 | F  |  165 | 2016-02-26 |
| 8 | Susan |    4 |  23 | F  |  170 | 2015-10-01 |
| 9 | Thomas |    3 |  22 | M  |  178 | 2016-06-07 |
| 10 | Tom  |    4 |  23 | M  |  165 | 2016-08-05 |
+----+--------+---------+------+------+--------+------------+
10 rows in set (0.04 sec)
Copier après la connexion

Par défaut, la vue créée a les mêmes champs que la table de base. Vous pouvez également créer une vue en précisant le nom du champ de la vue.

[Exemple 2]

Créez une vue nommée v_students_info sur la table tb_students_info L'instruction SQL d'entrée et les résultats de l'exécution sont les suivants.

mysql> CREATE VIEW v_students_info
  -> (s_id,s_name,d_id,s_age,s_sex,s_height,s_date)
  -> AS SELECT id,name,dept_id,age,sex,height,login_date
  -> FROM tb_students_info;
Query OK, 0 rows affected (0.06 sec)
mysql> SELECT * FROM v_students_info;
+------+--------+------+-------+-------+----------+------------+
| s_id | s_name | d_id | s_age | s_sex | s_height | s_date   |
+------+--------+------+-------+-------+----------+------------+
|  1 | Dany  |  1 |  24 | F   |   160 | 2015-09-10 |
|  2 | Green |  3 |  23 | F   |   158 | 2016-10-22 |
|  3 | Henry |  2 |  23 | M   |   185 | 2015-05-31 |
|  4 | Jane  |  1 |  22 | F   |   162 | 2016-12-20 |
|  5 | Jim  |  1 |  24 | M   |   175 | 2016-01-15 |
|  6 | John  |  2 |  21 | M   |   172 | 2015-11-11 |
|  7 | Lily  |  6 |  22 | F   |   165 | 2016-02-26 |
|  8 | Susan |  4 |  23 | F   |   170 | 2015-10-01 |
|  9 | Thomas |  3 |  22 | M   |   178 | 2016-06-07 |
|  10 | Tom  |  4 |  23 | M   |   165 | 2016-08-05 |
+------+--------+------+-------+-------+----------+------------+
10 rows in set (0.01 sec)
Copier après la connexion
Copier après la connexion

Comme vous pouvez le voir, les noms de champs dans les deux vues view_students_info et v_students_info sont différents, mais les données sont les mêmes. Par conséquent, lors de l'utilisation de vues, les utilisateurs n'ont peut-être pas besoin de comprendre la structure de la table de base, encore moins les données de la table elle-même, garantissant ainsi la sécurité de la base de données.

Créer des vues basées sur plusieurs tables

Dans MySQL, vous pouvez également créer des vues dans plus de deux tables, à l'aide de l'instruction CREATE VIEW.

[Exemple 3]

Créez la vue v_students_info sur la table tb_student_info et la table tb_departments L'instruction SQL d'entrée et le résultat de l'exécution sont les suivants.

mysql> CREATE VIEW v_students_info
  -> (s_id,s_name,d_id,s_age,s_sex,s_height,s_date)
  -> AS SELECT id,name,dept_id,age,sex,height,login_date
  -> FROM tb_students_info;
Query OK, 0 rows affected (0.06 sec)
mysql> SELECT * FROM v_students_info;
+------+--------+------+-------+-------+----------+------------+
| s_id | s_name | d_id | s_age | s_sex | s_height | s_date   |
+------+--------+------+-------+-------+----------+------------+
|  1 | Dany  |  1 |  24 | F   |   160 | 2015-09-10 |
|  2 | Green |  3 |  23 | F   |   158 | 2016-10-22 |
|  3 | Henry |  2 |  23 | M   |   185 | 2015-05-31 |
|  4 | Jane  |  1 |  22 | F   |   162 | 2016-12-20 |
|  5 | Jim  |  1 |  24 | M   |   175 | 2016-01-15 |
|  6 | John  |  2 |  21 | M   |   172 | 2015-11-11 |
|  7 | Lily  |  6 |  22 | F   |   165 | 2016-02-26 |
|  8 | Susan |  4 |  23 | F   |   170 | 2015-10-01 |
|  9 | Thomas |  3 |  22 | M   |   178 | 2016-06-07 |
|  10 | Tom  |  4 |  23 | M   |   165 | 2016-08-05 |
+------+--------+------+-------+-------+----------+------------+
10 rows in set (0.01 sec)
Copier après la connexion
Copier après la connexion

Les données de la table de base peuvent être bien protégées grâce à cette vue. La vue contient s_id, s_name et dept_name, le champ s_id correspond au champ id dans la table tb_students_info, le champ s_name correspond au champ name dans la table tb_students_info et le champ dept_name correspond au champ dept_name dans la table tb_departments.

Vue de requête

Une fois la vue définie, vous pouvez utiliser l'instruction SELECT pour interroger les données dans la vue, tout comme pour interroger la table de données. La syntaxe est la même que pour interroger les données dans. le tableau de base.

Les vues sont principalement utilisées pour les requêtes dans les aspects suivants :

  • Utilisez les vues pour reformater les données récupérées.

  • Utilisez des vues pour simplifier les jointures de tables complexes.

  • Utilisez les vues pour filtrer les données.

DESCRIBE peut être utilisé pour afficher des vues, la syntaxe est la suivante :

DESCRIBE view name

[Exemple 4]

Par DESCRIBE La définition de la vue d'instruction v_students_info, l'instruction SQL d'entrée et le résultat de l'exécution sont les suivants.

mysql> DESCRIBE v_students_info;
+----------+---------------+------+-----+------------+-------+
| Field  | Type     | Null | Key | Default  | Extra |
+----------+---------------+------+-----+------------+-------+
| s_id   | int(11)    | NO  |   | 0     |    |
| s_name  | varchar(45)  | YES |   | NULL    |    |
| d_id   | int(11)    | YES |   | NULL    |    |
| s_age  | int(11)    | YES |   | NULL    |    |
| s_sex  | enum(&#39;M&#39;,&#39;F&#39;) | YES |   | NULL    |    |
| s_height | int(11)    | YES |   | NULL    |    |
| s_date  | date     | YES |   | 2016-10-22 |    |
+----------+---------------+------+-----+------------+-------+
7 rows in set (0.04 sec)
Copier après la connexion

Remarque : DESCRIBE peut généralement être abrégé en DESC. Le résultat de l'exécution de la saisie de cette commande est le même que de la saisie de DESCRIBE.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal