Detaillierte Erklärung der Primärschlüssel und Transaktionen in MySQL

Detaillierte Erklärung der Primärschlüssel und Transaktionen in MySQL

1. Kommentare zu MySQL-Primärschlüsseln und Tabellenfeldern

1. Primärschlüssel und Auto-Inkrement

Jede Tabelle hat normalerweise genau einen Primärschlüssel, um die Eindeutigkeit jedes einzelnen Datenelements anzugeben.

Features: Werte können nicht wiederholt werden und können nicht null sein

Format: Tabellentest erstellen (ID int Primärschlüssel)

Primärschlüssel + Auto-Inkrement-Schreibmethode:

Format: Tabellentest erstellen (ID int Primärschlüssel auto_increment)

Hinweis: Auto-Increment kann nur mit dem Primärschlüssel verwendet werden (wenn es separat definiert wird, wird ein Fehler gemeldet)

2. Kommentare zu Tabellenfeldern

mysql> alter table test modify Name varchar(12) comment 'Benutzername';

3. Abfrage mehrerer Tabellen

mysql> Tabelle A erstellen (ID int Primärschlüssel auto_increment, Name varchar (12), Abteilung int);
mysql> Tabelle B erstellen (ID int Primärschlüssel auto_increment, Name varchar (12));
mysql> einfügen in B(Name) Werte("Finanzen"),("Markt");
mysql> einfügen in A(Name,Abteilung) Werte("Name",1),("Abteilung",2),("Abteilung",2);
mysql> wähle B.Name 部门,A.Name aus B,A, wobei B.ID=2 und A.Abteilung=2;

2. Übersicht über Datenbanktransaktionen

Datenbank: relationale Datenbank (unterstützt Transaktionen); nicht relationale Datenbank (unterstützt nicht)

  • Was ist eine Transaktion : Sie stellt sicher, dass Batch-Operationen entweder vollständig oder gar nicht ausgeführt werden, wodurch die Datenintegrität gewahrt bleibt. Einfach ausgedrückt: Es geht entweder um Erfolg oder Misserfolg.

Eine Transaktion enthält mehrere SQL-Anweisungen und zwischen diesen SQL-Anweisungen bestehen bestimmte Beziehungen:

  • Eine Transaktion kann aus N SQL-Anweisungen bestehen (N >= 0)
  • Nicht alle Datenbank-Speicher-Engines unterstützen Transaktionen, aber die InnoDB-Speicher-Engine unterstützt die Transaktionsverarbeitung.

1. Datenbanktransaktionsmerkmale (ACID)

Transaktionale Merkmale Wirkung
Atomar Alle Vorgänge einer Transaktion sind entweder abgeschlossen oder überhaupt nicht abgeschlossen; sie enden nicht in einem Zwischenglied.
Konsistenz Die Integritätsbeschränkungen der Datenbank vor Beginn und nach Ende der Transaktion werden nicht verletzt.
Isolierung Wenn mehrere Transaktionen gleichzeitig auf dieselben Daten in einer Datenbank zugreifen, entsteht eine wechselseitige Beziehung.
Haltbarkeit Nach Abschluss der Transaktion bleiben die vorgenommenen Änderungen erhalten und gehen nicht verloren.

2. Transaktionsparallelität ohne Transaktionsisolation

  • Dirty Read: Transaktion A liest Daten, die von der nicht festgeschriebenen Transaktion B geändert wurden. Wenn Transaktion B fehlschlägt und zurückgesetzt wird, liest Transaktion A schmutzige Daten.
  • Nicht wiederholbares Lesen: In derselben Transaktion sind die Ergebnisse des Lesens derselben Daten inkonsistent (für Daten).
  • Phantomlesen: In derselben Transaktion gibt dieselbe Abfrage mehrmals unterschiedliche Ergebnisse zurück (für die Gesamtzahl der Zeilen in der Tabelle).

Der Unterschied:

  • Dirty Reads und nicht wiederholbare Reads: Dirty Reads liegen vor, wenn eine Transaktion aktualisierte Daten liest, die noch nicht festgeschrieben wurden. Nicht wiederholbares Lesen bedeutet, dass die Daten, die mehrmals in der gleichen Transaktion gelesen werden, unterschiedlich sind.
  • Nicht wiederholbares Lesen und Phantomlesen: Beides geschieht in derselben Transaktion. Ersteres bedeutet, dass die mehrmals gelesenen Daten unterschiedlich sind, während letzteres bedeutet, dass die mehrmals gelesenen Daten völlig unterschiedlich sind.

Isolationsstufe:

Isolationsstufe Wirkung
SERIALIZABLE Vermeiden Sie Dirty Reads, nicht wiederholbare Reads und Phantom Reads
REPEATABLE-READ Vermeiden Sie Dirty Reads und nicht wiederholbare Lesevorgänge
READ-COMMITTED ENGAGIERT Vermeiden Sie Dirty Reads
READ-UNCOMMITTED VERPFLICHTET Keine Wirkung

MySQL unterstützt die oben genannten vier Isolationsebenen, wobei wiederholbares Lesen die Standardeinstellung ist. Wenn Sie die Isolationsebene ändern möchten, müssen Sie Folgendes tun: sed -i '/\[mysqld]/a transaction-isolation = SERIALIZABLE' /etc/my.cnf

mysql> Variablen wie „%tx_is%“ anzeigen;
mysql> beenden
[root@MySQL ~]# sed -i '/\[mysqld]/a Transaktionsisolierung = SERIALIZABLE' /etc/my.cnf
[root@MySQL ~]# systemctl restart mysqld
[root@MySQL ~]# mysql -uroot -p123123 -e "zeige Variablen wie '%tx_is%';"

4.MySQL-Datenbankverwaltungstransaktionen

Drei Befehle zum Verwalten von Transaktionen:

  • BEGIN: Starten Sie eine Transaktion, gefolgt von der Ausführung mehrerer Datenbankvorgangsanweisungen.
  • COMMIT: Beginnen Sie mit dem Commit einer Transaktion, entsprechend der vorherigen BEGIN-Operation, und speichern Sie die Ergebnisse der Transaktionsverarbeitung in der Datendatei.
  • ROLLBACK: Beginnt mit dem Rollback einer Transaktion. Zwischen BEGIN und COMMIT werden alle Anweisungen in der Transaktion rückgängig gemacht und die Daten in den Zustand vor BEGIN zurückversetzt.
  • set autocommit = 0/1: Deaktivieren oder Aktivieren von Autocommit, d. h. wenn Sie das MySQL-Verbindungsprogramm beenden oder die nächste DML-Anweisung (Data Manipulation Language) ausführen.
mysql> Tabelle C erstellen (ID int);
mysql> in C-Werte einfügen (1), (2);
mysql> wähle * aus C;
mysql> BEGINNEN;
mysql> in C-Werte einfügen (3);
mysql> COMMIT;
mysql> wähle * aus C;

mysql> Variablen wie „autocommit“ anzeigen; #Überprüfen Sie, ob das automatische Transaktions-Commit aktiviert werden sollmysql> BEGIN;
mysql> in C-Werte einfügen(4)
mysql> wähle * aus C;
mysql> beenden
[root@localhost ~]# mysql -uroot -p123123 -e "Wählen Sie * aus Coco.C aus, wobei ID=4"

set autocommit=0 : Änderung in der Datenbank soll temporär wirksam werden (wenn Sie sie dauerhaft ändern möchten, müssen Sie sie sed -i '/\[mysqld]/a autocommit=0' /etc/my.cnf ändern)

mysql> setze Autocommit=0;
mysql> wähle * aus Coco.C;
mysql> in Coco.C-Werte einfügen (4);
mysql> wähle * aus Coco.C, wobei ID=4;
[root@localhost ~]# mysql -uroot -p123123 -e "Wählen Sie * aus Coco.C aus, wobei ID=4"

Beachten:

  • Nachdem Sie eine Transaktion mit BEGIN oder START TRANSACTION gestartet haben, bleibt Autocommit deaktiviert, bis Sie die Transaktion mit COMMIT oder ROLLBACK beenden.
  • Anschließend wird der Autocommit-Modus auf den vorherigen Zustand zurückgesetzt, d. h. wenn Autocommit vor BEGIN = 1 war, ist Autocommit nach Abschluss dieser Transaktion immer noch 1.
  • Wenn Autocommit vor BEGIN = 0 ist, wird Autocommit nach Abschluss dieser Transaktion immer noch 0 sein.

1) Alias

mysql> wähle ID als „Nummer“, Name als „Name“, Abteilung als „Abteilung“ aus A, wobei ID=1;
mysql> wähle ID "Nummer",Name "Name",Abteilung "Abteilung" aus A, wobei ID=1;

2) Deduplizierung

mysql> wähle eine andere Abteilung als A aus;

3) UND- und ODER-Operatoren

UND: logisches UND (alle Bedingungen müssen erfüllt sein); ODER: logisches ODER (nur eine der Bedingungen muss erfüllt sein).

mysql> select * from A where ID >= 3 und Abteilung = 2;
mysql> select * from A where ID >= 3 oder Abteilung = 2;

  • in: Wenn für ein bestimmtes abzufragendes Feld mehrere Werte vorliegen, kann man das Schlüsselwort in verwenden.
  • zwischen und: zwischen zwei Werten, einschließlich der Zahlen auf beiden Seiten von und.
mysql> wähle * von A, wobei ID in (1,3,4);
mysql> wähle * von A, wobei ID nicht in (1,3,4) ist;
mysql> select * from A, wobei die ID zwischen 1 und 3 liegt;

4) SQL LIKE-Operator

  • -_: Stellt ein einzelnes unbekanntes Zeichen dar.
  • - %: steht für mehrere unbekannte Zeichen.
  • Zum Beispiel: A% beginnt mit A, % endet mit BB, %C% enthält C, _D% der zweite Buchstabe ist D, %E__ der dritte Buchstabe vom Ende ist E, %@163.com 163 E-Mail-Adresse.
mysql> select * from A, wobei Name wie "%三%" ist;
mysql> select * from A, wobei Name wie "%三%" oder Name wie "%四" ist;

5) SQL ORDER BY-Klausel

  • asc: aufsteigende Reihenfolge (die Standardeinstellung ist aufsteigende Reihenfolge)
  • desc: absteigende Reihenfolge.
mysql> wähle * aus A, sortiert nach ID desc;
mysql> select * from A, sortiert nach Abteilung, ID desc;

6) Haftungsbeschränkung

mysql> wähle * aus C;
mysql> wähle * von C-Limit 2;
mysql> wähle * von C-Limit 0,2;

Zusammenfassen

Dies ist das Ende dieses Artikels über MySQL-Primärschlüssel und -Transaktionen. Weitere relevante MySQL-Primärschlüssel und -Transaktionen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Beispiel für eine gespeicherte MySQL-Prozedur (einschließlich Transaktionen, Ausgabeparameter, verschachtelte Aufrufe)
  • Was ist eine Transaktion in MySQL und wie wird sie verwendet?
  • Detaillierte Erklärung der MySql-Transaktionsverwendung und Beispiele
  • MySQL implementiert Beispiele für Transaktions-Commits und -Rollbacks
  • Umfassendes Verständnis von Transaktionen in MySQL
  • Kurze Einführung in den Transaktionsmechanismus in MySQL
  • Verwenden von Transaktionsinstanzen in gespeicherten MySQL-Prozeduren
  • Detaillierte Erklärung und Vergleich der vier Transaktionsisolationsebenen in MySQL
  • Kurze Analyse der Transaktionsverwaltung für gespeicherte MySQL-Prozeduren

<<:  Konfigurationshandbuch für den Lastenausgleich auf Ebene 4 von Nginx

>>:  Designbeispiele für Dropdown-Menüs und Schiebemenüs

Artikel empfehlen

Beschreibung der Grenzen und Bereiche zwischen MySQL

MySQL zwischen Grenzbereich Der Bereich zwischen ...

Mehrere Situationen, in denen Div durch Iframe abgedeckt ist, und ihre Lösungen

Ähnliche Strukturen: Code kopieren Der Code laute...

Tipps zum Gestalten der Fotovorschau-Navigation auf Webseiten

<br />Navigation bezieht sich nicht nur auf ...

JavaScript-Methode zum Erkennen des Dateityps

Inhaltsverzeichnis 1. So zeigen Sie die Binärdate...

CSS -webkit-box-orient: vertikale Eigenschaft nach der Kompilierung verloren

1. Ursache Die Anforderung besteht darin, zwei Ze...

So legen Sie mit CSS eine Hintergrundunschärfe fest

Beim Erstellen einiger Seiten müssen wir häufig H...

Importieren von CSS-Dateien unter Verwendung von Beurteilungsbedingungen

Lösung 1: Verwenden Sie bedingten Import im HTML-...

Implementierung der Docker-Batch-Container-Orchestrierung

Einführung Der Dockerfile-Build-Ausführungsvorgan...

Grafische Einführung in den Unterschied zwischen := und = in MySQL

Der Unterschied zwischen := und = = Nur beim Setz...