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语句>
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语句>
La description de la syntaxe est la suivante.
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)
[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)
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 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)
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('M','F') | YES | | NULL | | | s_height | int(11) | YES | | NULL | | | s_date | date | YES | | 2016-10-22 | | +----------+---------------+------+-----+------------+-------+ 7 rows in set (0.04 sec)
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!