Maison > Article > base de données > Explication détaillée de la vue MySQL dans un article
Concept de vue mysql
La vue elle-même est une table virtuelle et ne stocke aucune donnée. Lorsque vous utilisez des instructions SQL pour accéder aux vues, les données obtenues sont générées par MySQL à partir d'autres tables, et la vue et la table se trouvent dans le même espace de noms. Afficher les données des requêtes est relativement sûr. Il peut masquer certaines données et structures et permettre aux utilisateurs de voir uniquement les données dans le cadre de leurs autorisations, ce qui rend les requêtes complexes faciles à comprendre et à utiliser.
Utilisation de la vue
Ce qui suit est l'utilisation de base de la vue de démonstration basée sur la gestion des utilisateurs et des commandes. (Partage de didacticiels vidéo d'apprentissage en ligne : tutoriel vidéo mysql)
Structure de table de base
CREATE TABLE v01_user ( id INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', user_name VARCHAR(20) DEFAULT NULL COMMENT '用户名', phone VARCHAR(20) DEFAULT NULL COMMENT '手机号', pass_word VARCHAR(64) DEFAULT NULL COMMENT '密码', card_id VARCHAR(18) DEFAULT NULL COMMENT '身份证ID', pay_card VARCHAR(25) DEFAULT NULL COMMENT '卡号', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '用户表'; CREATE TABLE v02_order ( id INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', user_id INT(11) NOT NULL COMMENT '用户ID', order_no VARCHAR(32) DEFAULT NULL COMMENT '订单编号', good_name VARCHAR(60) DEFAULT NULL COMMENT '商品名称', good_id INT(11) DEFAULT NULL COMMENT '商品ID', num INT(11) DEFAULT NULL COMMENT '购买数量', total_price DECIMAL(10,2) DEFAULT NULL COMMENT '总价格', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '订单表';
Syntaxe de base
CREATE OR REPLACE VIEW view_name AS select_statement
Remarque : les tables et les vues partagent le même espace de noms dans la base de données. Par conséquent, la base de données ne peut pas contenir de tables et de vues portant le même nom.
Vue de la commande utilisateur
CREATE OR REPLACE VIEW user_order_view AS SELECT t1.id,t1.user_name,t2.order_no,t2.good_id, t2.good_name,t2.num,t2.total_price FROM v01_user t1 LEFT JOIN v02_order t2 ON t2.user_id = t1.id;
Afficher l'appel
C'est fondamentalement la même chose que la requête de table MySQL, et diverses conditions de requête peuvent être utilisées.
SELECT * FROM user_order_view WHERE user_name='Cicada'; 查看视图 SHOW CREATE VIEW user_order_view ; 修改视图 ALTER VIEW view_name AS select_statement ; 删除视图 DROP VIEW [IF EXISTS] view_name ;
Mise à jour de la vue
Lorsque les conditions spécifiées le permettent, vous pouvez mettre à jour, supprimer ou même écrire des données en opérant sur la vue, mettant ainsi à jour les informations impliquées dans la vue . Tableaux associés.
UPDATE user_order_view SET user_name='smile' WHERE id='1';
Ici, les données de la table v01_user sont mises à jour en effectuant une opération de mise à jour sur la vue. Si la vue est définie à l'aide d'opérations spéciales telles que des fonctions d'agrégation et de regroupement, elle ne peut pas être mise à jour. MySQL ne prend pas en charge la création de déclencheurs sur les vues.
Implémentation de la vue
1. Algorithme de table temporaire
Le serveur enregistrera les données SQL de la requête de vue dans une table temporaire. table est La structure du champ d'affichage doit être cohérente. C'est l'opération la plus taboue dans l'optimisation des requêtes SQL. Une quantité de données légèrement plus grande affectera sérieusement les performances. Si la vue ne peut pas avoir de relation de mappage un à un avec la table d'origine, une table temporaire sera générée. Cela montre également que la vue n'est pas une fonction très simple, ni même très complexe.
2. Algorithme de fusion
Le serveur exécute la requête en fonction de la table utilisée dans la vue, puis fusionne la structure de la requête et la renvoie au client.
3. Méthode de différence
Exécutez l'instruction de requête suivante pour analyser les paramètres de performances d'exécution.
EXPLAIN SELECT * FROM user_order_view ;
Observez le champ select_type dans le résultat de la requête. S'il est DERIVED, cela signifie qu'une table temporaire est utilisée. Ici, la syntaxe de l'analyse de l'exécution SQL sera expliquée en détail plus loin dans la section optimisation.
Remarques
1. Problèmes de performances
MySQL ne prend pas en charge la création d'index dans les vues. L'utilisation de vues peut entraîner de nombreuses performances de requête. problème, il est donc recommandé d'être prudent lors de son utilisation, de l'examiner et de le tester sous plusieurs angles.
2. Utilisation particulière
Une requête basée sur une vue peut modifier une partie de la structure de la table. Tant que les champs ne sont pas utilisés dans la vue, cela n'affectera pas la requête de vue.
Articles et tutoriels connexes recommandés : Tutoriel mysql
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!