Maison > base de données > tutoriel mysql > Comment créer une vue dans MySQL ? Qu'est-ce qu'une instruction create ?

Comment créer une vue dans MySQL ? Qu'est-ce qu'une instruction create ?

青灯夜游
Libérer: 2020-10-13 16:11:52
original
19566 Les gens l'ont consulté

Dans MySQL, vous pouvez utiliser l'instruction "CREATE VIEW" pour créer une vue. Le format de syntaxe est "CREATE VIEW AS " ne peut pas contenir de sous-requêtes dans la clause FROM et ne peut pas faire référence aux paramètres d'instruction préparée. 语句>语句>

Comment créer une vue dans MySQL ? Qu'est-ce qu'une instruction create ?

(tutoriel recommandé : tutoriel vidéo mysql)

Créer une vue fait référence à l'établissement d'une vue sur une table de base de données MySQL existante. Les vues peuvent être créées dans une ou plusieurs tables.

Syntaxe de base

Vous pouvez utiliser l'instruction CREATE VIEW pour créer une vue.

Le format de 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.

Il existe les restrictions suivantes sur la spécification de l'instruction SELECT dans la vue créée :

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

  • 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 d'entrée et les résultats de l'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 une vue basée 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.

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