Dans MySQL, vous pouvez utiliser l'instruction "CREATE VIEW" pour créer une vue. Le format de syntaxe est "CREATE VIEW
AS
(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语句>
La description de la syntaxe est la suivante.
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)
[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)
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)
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)
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!