Maison > Article > base de données > Introduction aux transactions et aux vues dans le système MySQL
1. Transaction
1. Soumettre
2. >
2.
3. Sous-requête corrélée
事务开始语句START TRANSACTION; DML语句①; DML语句②; DML语句③; . . . 事务结束语句(COMMIT或者ROLLBACK);
ROLLBACK est l'instruction de fin pour annuler tout le traitement de mise à jour inclus dans la transaction, ce qui équivaut à renoncer à la sauvegarde dans le traitement des fichiers. Une fois restaurée, la base de données est restaurée dans l'état dans lequel elle se trouvait avant le début de la transaction.
Les transactions SGBD suivent toutes quatre caractéristiques. Les premières lettres de ces quatre caractéristiques sont combinées et collectivement appelées caractéristiques ACID.
Atomicité L'atomicité signifie qu'à la fin d'une transaction, le traitement de mise à jour qu'elle contient est soit entièrement exécuté, soit pas exécuté du tout.
Cohérence La cohérence signifie que le traitement inclus dans la transaction doit satisfaire les contraintes définies au préalable par la base de données, telles que les contraintes de clé primaire ou les contraintes NOT NULL. Par exemple, une colonne avec une contrainte NOT NULL ne peut pas être mise à jour vers NULL. Si vous essayez d'insérer un enregistrement qui viole la contrainte de clé primaire, une erreur se produira et ne pourra pas être exécutée. Pour les transactions, ces SQL illégaux seront annulés.
Isolement L'isolement fait référence à la fonctionnalité qui garantit que les différentes transactions n'interfèrent pas les unes avec les autres. Cette fonctionnalité garantit que les transactions ne sont pas imbriquées les unes dans les autres. De plus, les modifications apportées au sein d'une transaction ne sont pas visibles par les autres transactions jusqu'à la fin de la transaction. Par conséquent, même si une transaction ajoute des enregistrements à la table, les autres transactions ne verront pas les enregistrements nouvellement ajoutés tant qu'ils ne seront pas validés.
Durabilité La durabilité fait référence à la fonctionnalité du SGBD qui garantit que l'état des données à ce moment-là sera enregistré après la fin de la transaction (qu'elle soit validée ou annulée). Même si des données sont perdues en raison d'une panne du système, la base de données doit être récupérée par un moyen ou un autre.
2. Vue
Nous devrions transformer les instructions SELECT fréquemment utilisées en vues.
1. Créer des vues
Remarque :--格式:CREATE VIEW 视图名称(<视图列名1>, <视图列名2>, ……) AS <SELECT语句> CREATE VIEW v1 (product_name, name_cnt) AS SELECT product_name, count(*) FROM 表名/视图名 GROUP BY product_name
Évitez de créer des vues basées sur des vues. Pour la plupart des SGBD, plusieurs vues réduisent les performances SQL.
La clause ORDER BY ne peut pas être utilisée lors de la définition d'une vue
Supprimer la vue
--格式:DROP VIEW 视图名称 DROP VIEW v1Remarque :
-- 格式:ALTER VIEW 视图名称 AS <SELECT语句> -- 格式:INSERT INTO 视图名称 VALUES(...)
La vue et le tableau doivent être mis à jour en même temps, donc la vue obtenue par résumé (agrégation combinée avec join table) ne peut pas être mis à jour par INSERT.
4. Utilisation des vues Lorsque vous utilisez des vues, traitez-les simplement comme des tables. Puisque les vues sont des tables virtuelles, elles ne peuvent pas être utilisées pour créer ou mettre à jour des tables réelles et les opérations de suppression peuvent être effectuées. être utilisé uniquement pour la requête.
3. Sous-requête 1. Utiliser la sous-requêteselect * from v1
-- 根据商品种类统计商品数量的视图 CREATE VIEW ProductSum (product_type, cnt_product) AS SELECT product_type, COUNT(*) FROM Product GROUP BY product_type; -- 确认创建好的视图 SELECT product_type, cnt_product FROM ProductSum; --子查询 SELECT product_type, cnt_product FROM (SELECT product_type, COUNT(*) FROM Product GROUP BY product_type)AS ProductSum;3. Sous-requête corrélée Lors de la comparaison au sein de groupes subdivisés, vous devez utiliser des sous-requêtes corrélées.
SELECT product_id, product_name, sale_price FROM Product WHERE sale_price > (SELECT AVG(sale_price) FROM Product);
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!