Heim  >  Artikel  >  Datenbank  >  Einführung in Transaktionen und Ansichten im MySQL-System

Einführung in Transaktionen und Ansichten im MySQL-System

零下一度
零下一度Original
2017-06-27 09:59:321064Durchsuche
  • 1. Transaktion

    • 1. Rollback

    • 3. ACID-Eigenschaften

    • 2. Ansicht
  • 1 🎜>
    • 2. Ansicht löschen

    • 3. Ansicht aktualisieren

    • 4

    • 3. Unterabfrage

  • 1. Unterabfrage verwenden

    • 2
    • 3. Korrelierte Unterabfrage
    • 1. Transaktion

      In RDBMS ist die Transaktion die Einheit zum Aktualisieren der Daten in der Tabelle. Einfach ausgedrückt ist eine Transaktion eine Sammlung von Aktualisierungsprozessen, die in derselben Verarbeitungseinheit ausgeführt werden müssen.
1. Commit

COMMIT ist die Endanweisung aller Aktualisierungsverarbeitungen, die in der Commit-Transaktion enthalten sind, was dem Überschreiben und Speichern bei der Dateiverarbeitung entspricht. Nach dem Festschreiben kann der Zustand vor Beginn der Transaktion nicht wiederhergestellt werden.

2. Rollback
事务开始语句START TRANSACTION;

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

ROLLBACK ist die Endanweisung zum Abbrechen aller in der Transaktion enthaltenen Aktualisierungsverarbeitung, was dem Verzicht auf das Speichern in der Dateiverarbeitung entspricht. Nach dem Rollback wird die Datenbank in den Zustand zurückversetzt, in dem sie sich vor Beginn der Transaktion befand.

3. ACID-Merkmale

DBMS-Transaktionen folgen alle vier Merkmale. Die Kombination der Anfangsbuchstaben dieser vier Merkmale wird zusammenfassend als ACID-Merkmale bezeichnet.

Atomizität Atomarität bedeutet, dass am Ende einer Transaktion die darin enthaltene Aktualisierungsverarbeitung entweder vollständig oder gar nicht ausgeführt wird.

    Konsistenz Konsistenz bedeutet, dass die in der Transaktion enthaltene Verarbeitung die von der Datenbank im Voraus festgelegten Einschränkungen erfüllen muss, z. B. Primärschlüsseleinschränkungen oder NOT NULL-Einschränkungen. Beispielsweise kann eine Spalte mit einer NOT NULL-Einschränkung nicht auf NULL aktualisiert werden. Wenn Sie versuchen, einen Datensatz einzufügen, der gegen die Primärschlüsseleinschränkung verstößt, tritt ein Fehler auf und die Ausführung kann nicht erfolgen. Bei Transaktionen werden diese illegalen SQL-Anweisungen zurückgesetzt.
  • Isolation Isolation bezieht sich auf die Funktion, die sicherstellt, dass verschiedene Transaktionen sich nicht gegenseitig stören. Diese Funktion stellt sicher, dass Transaktionen nicht ineinander verschachtelt sind. Darüber hinaus sind innerhalb einer Transaktion vorgenommene Änderungen für andere Transaktionen erst dann sichtbar, wenn die Transaktion beendet ist. Selbst wenn daher eine Transaktion Datensätze zur Tabelle hinzufügt, werden andere Transaktionen die neu hinzugefügten Datensätze erst dann sehen, wenn sie festgeschrieben werden.
  • Haltbarkeit Haltbarkeit bezieht sich auf die Funktion des DBMS, die sicherstellt, dass der Datenstatus zu diesem Zeitpunkt nach dem Ende der Transaktion (ob festgeschrieben oder zurückgesetzt) ​​gespeichert wird. Auch wenn Daten aufgrund eines Systemausfalls verloren gehen, muss die Datenbank auf irgendeine Weise wiederhergestellt werden.
  • 2. Ansicht
  • Der wesentliche Unterschied zwischen einer Ansicht und einer Tabelle besteht darin, „ob die tatsächlichen Daten gespeichert werden.“

  • Die Tabelle speichert tatsächliche Daten, während die Ansicht die SELECT-Anweisung speichert, die zum Abrufen von Daten aus der Tabelle verwendet wird.

Wir sollten die häufig verwendeten SELECT-Anweisungen in Ansichten umwandeln.

1. Ansichten erstellen

Hinweis:

Vermeiden Sie das Erstellen von Ansichten basierend auf Ansichten. Bei den meisten DBMS verringern mehrere Ansichten die SQL-Leistung.
--格式:CREATE VIEW 视图名称(<视图列名1>, <视图列名2>, ……) AS <SELECT语句>

CREATE VIEW v1 (product_name, name_cnt)
AS 
SELECT product_name, count(*)
FROM
    表名/视图名
GROUP BY product_name

    Die ORDER BY-Klausel kann beim Definieren einer Ansicht nicht verwendet werden
  • 2. Löschen Sie die Ansicht
  • 3 . Aktualisieren Sie die Ansicht

Hinweis:

--格式:DROP VIEW 视图名称

DROP VIEW v1

Die Ansicht und die Tabelle müssen gleichzeitig aktualisiert werden, sodass die durch Zusammenfassung erhaltene Ansicht (Aggregation kombiniert mit Join-Tabelle) kann nicht durch INSERT aktualisiert werden.
-- 格式:ALTER VIEW 视图名称 AS <SELECT语句>

-- 格式:INSERT INTO 视图名称 VALUES(...)

  • Denken Sie daran, dass das Aktualisieren einer Ansicht letztendlich das Aktualisieren der Tabelle bedeutet, die der Ansicht entspricht.

  • 4. Verwenden von Ansichten

Behandeln Sie Ansichten einfach als Tabellen, sodass sie nicht zum Erstellen oder Aktualisieren realer Tabellen verwendet werden können nur zur Abfrage verwendet werden.

3. Unterabfrage

1. Unterabfrage verwenden

Unterabfrage ist eine einmalige Ansicht (SELECT-Anweisung). Im Gegensatz zu Ansichten verschwinden Unterabfragen, nachdem die SELECT-Anweisung ausgeführt wurde.
select * from v1

2. Skalare Unterabfrage

Die skalare Unterabfrage hat eine besondere Einschränkung, das heißt, sie muss und kann nur die Ergebnisse von 1 Zeile und 1 Spalte zurückgeben, das heißt, sie gibt zurück ein bestimmter Wert in der Tabelle. Der Wert einer Spalte in einer Zeile.

-- 根据商品种类统计商品数量的视图
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. Korrelierte Unterabfrage

Beim Vergleich innerhalb unterteilter Gruppen müssen Sie korrelierte Unterabfragen verwenden.

Das obige ist der detaillierte Inhalt vonEinführung in Transaktionen und Ansichten im MySQL-System. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn