Maison  >  Article  >  base de données  >  Introduction aux transactions et aux vues dans le système MySQL

Introduction aux transactions et aux vues dans le système MySQL

零下一度
零下一度original
2017-06-27 09:59:321064parcourir
  • 1. Transaction

    • 1. Soumettre

    • 2. >

    • 3. Propriétés ACIDE
    2. Vue
    • 1. 🎜>
    • 2. Supprimer la vue
    • 3. Mettre à jour la vue
    • 4.
    • 3. Sous-requête
  • 1. Utiliser la sous-requête
    • 2.

    • 3. Sous-requête corrélée

    • 1. Transaction
    Dans le SGBDR, la transaction est l'unité pour mettre à jour le données dans le tableau. En termes simples, une transaction est un ensemble de processus de mise à jour qui doivent être effectués dans la même unité de traitement.

1. Commit

COMMIT est l'instruction de fin de tout traitement de mise à jour inclus dans la transaction de validation, ce qui équivaut à l'écrasement et à l'enregistrement dans le traitement du fichier. Une fois validé, il ne peut pas être restauré à l’état où il était avant le début de la transaction.
事务开始语句START TRANSACTION;

      DML语句①;
      DML语句②;
      DML语句③;
         .
         .
         .
事务结束语句(COMMIT或者ROLLBACK);

2. 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.

3. Caractéristiques ACID

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

  • La différence essentielle entre une vue et un tableau est "si les données réelles sont enregistrées".

La table stocke les données réelles, tandis que la vue stocke l'instruction SELECT utilisée pour récupérer les données de la table.

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

3. . Mettre à jour la vue

--格式:DROP VIEW 视图名称

DROP VIEW v1
Remarque :

-- 格式: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.

  • N'oubliez pas que mettre à jour une vue signifie en fin de compte mettre à jour la table correspondant à la vue.

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ête
select * from v1

La sous-requête est une vue unique (instruction SELECT). Contrairement aux vues, les sous-requêtes disparaissent après l'exécution de l'instruction SELECT.

2. Sous-requête scalaire

La sous-requête scalaire a une restriction spéciale, c'est-à-dire qu'elle doit et ne peut renvoyer que les résultats d'une ligne et d'une colonne, c'est-à-dire renvoyer un certaine valeur dans le tableau La valeur d'une colonne dans une ligne.
-- 根据商品种类统计商品数量的视图
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!

Déclaration:
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