Detaillierte Erklärung zur Verwendung von MySQL DML-Anweisungen

Detaillierte Erklärung zur Verwendung von MySQL DML-Anweisungen

Vorwort:

Im vorherigen Artikel haben wir hauptsächlich die Verwendung von DDL-Anweisungen vorgestellt, die aufmerksamen Studenten möglicherweise aufgefallen sind. Dieser Artikel konzentriert sich auf DML-Anweisungen und erläutert tabellendatenbezogene Vorgänge.

Hier erklären wir die Klassifizierung von DDL- und DML-Anweisungen. Für manche Schüler ist dies möglicherweise nicht klar.

DDL (Data Definition Language): Datendefinitionssprache, die zum Erstellen, Löschen, Ändern von Datenbank- oder Tabellenstrukturen und zum Bearbeiten der Struktur von Datenbanken oder Tabellen verwendet wird. Zu den gängigen Methoden gehören „Erstellen“, „Ändern“, „Löschen“ usw.

DML (Data Manipulation Language): Datenmanipulationssprache, die hauptsächlich zum Aktualisieren (Hinzufügen, Löschen, Ändern) von Tabellendatensätzen verwendet wird. Zu den gängigen Befehlen gehören Einfügen, Aktualisieren, Löschen usw.

1. Daten einfügen

Die Insert-Syntax wird hauptsächlich zum Einfügen von Daten verwendet. Die offizielle Dokumentation bietet auch viele Optionen:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] [(col_name [, col_name] ...)] {VALUES | VALUE} (value_list) [, (value_list)] ... [ON DUPLICATE KEY UPDATE assignment_list]
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] SET assignment_list [ON DUPLICATE KEY UPDATE assignment_list]
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] [(col_name [, col_name] ...)] SELECT ... [ON DUPLICATE KEY UPDATE assignment_list]
Wert: {expr | DEFAULT}
Werteliste: Wert [, Wert] …
Zuweisung: col_name = Wert
Zuweisungsliste: Zuweisung [, Zuweisung] …

Interessierte Studierende können die oben genannten Optionen konsultieren und studieren. Im Folgenden werde ich Ihnen in Kategorien mehrere häufig verwendete Syntaxen vorstellen.

EINFÜGEN IN ... WERTE (...)

Dies ist wahrscheinlich die häufigste Art, Insert-Anweisungen zu schreiben. Die Standardverwendung ist:

INSERT INTO <Tabellenname> [ <Spaltenname 1> [ , … <Spaltenname n>] ]VALUES (Wert 1) [… , (Wert n) ];
INSERT INTO Tabelle (Spalte1, Spalte2 ...) VALUES (Wert1, Wert2, ...), (Wert1, Wert2, ...), ...;

Die Syntax lautet wie folgt:

  • <Tabellenname>: Gibt den Namen der zu bearbeitenden Tabelle an.
  • <Spaltenname>: Geben Sie den Spaltennamen an, in den Daten eingefügt werden müssen. Wenn Sie Daten in alle Spalten einer Tabelle einfügen möchten, können alle Spaltennamen weggelassen werden und Sie können direkt INSERT <Tabellenname> VALUES(…) verwenden.
  • VALUES- oder VALUE-Klausel: Diese Klausel enthält die Liste der einzufügenden Daten. Die Reihenfolge der Daten in der Datenliste sollte der Reihenfolge der Spalten entsprechen.

EINFÜGEN ... FESTLEGEN ...

Die Anweisung insert ... set kann jeweils nur ein Datenelement einfügen. Sie kann Werte einiger Spalten in die Tabelle einfügen, was flexibler ist.

INSERT INTO <Tabellenname> SET <Spaltenname 1> = <Wert 1>, <Spaltenname 2> = <Wert 2>, …

EINFÜGEN IN ... AUSWÄHLEN ...

Mit der Anweisung INSERT INTO…SELECT…FROM können Sie schnell Daten aus einer oder mehreren Tabellen abrufen und als Zeilendaten in eine andere Tabelle einfügen.

Die SELECT-Klausel gibt einen Abfrageergebnissatz zurück und die INSERT-Anweisung fügt diesen Ergebnissatz in die angegebene Tabelle ein. Die Anzahl der Felder und der Datentyp jeder Datenzeile im Ergebnissatz müssen genau mit denen der bearbeiteten Tabelle übereinstimmen.

Wenn beispielsweise die Testtabelle und die Test_bak-Tabelle dieselbe Struktur haben und wir die Daten aus der Testtabelle in die Test_bak-Tabelle einfügen möchten, können wir Folgendes tun:

INSERT INTO test_bak, wähle * aus Test;

EINFÜGEN ... BEIM UPDATE DES DOPPELTEN SCHLÜSSELS

Wenn die neu einzufügende Zeile den Primärschlüssel (PRIMARY KEY) oder die UNIQUE-Einschränkung verletzt, meldet MySQL einen Fehler. Mit dieser Syntax lässt sich dieser Fehler beheben. Wenn in der Datenbank ein Datensatz vorhanden ist, wird dieser durch die Ausführung dieser Anweisung aktualisiert, und wenn er nicht vorhanden ist, wird er eingefügt.

Hier ist ein Beispiel, um den Effekt zu demonstrieren:

TABELLE `Student` erstellen ( `xuehao` int(11) Primärschlüssel, `Name` varchar(255) STANDARD NULL, `Alter` int(11) STANDARD NULL) ENGINE=InnoDB STANDARD CHARSET=utf8;
mysql> wähle * von Student;+--------+------+------+| xuehao | Name | Alter |+--------+------+------+| 1001 | aaa | 18 || 1002 | bbb | 19 || 1003 | ccc | 20 |+--------+------+------+
Füge in den Schüler (xuehao, Name, Alter) die Werte (1003, 'ccc', 19) bei DUPLICATE KEY UPDATE ein: Alter = 19;
mysql> wähle * von Student;+--------+------+------+| xuehao | Name | Alter |+--------+------+------+| 1001 | aaa | 18 || 1002 | bbb | 19 || 1003 | ccc | 19 |+--------+------+------+
Aktualisiere das Alter des Schülers = 19, wobei xuehao = 1003;

ERSETZEN IN ... WERTE …

„Replace into“ ähnelt „Insert“, außer dass „Replace into“ zuerst versucht, Daten in die Tabelle einzufügen. 1. Wenn festgestellt wird, dass die Datenzeile bereits in der Tabelle vorhanden ist (basierend auf dem Primärschlüssel oder dem eindeutigen Index), wird die Datenzeile gelöscht und anschließend die neuen Daten eingefügt. 2. Andernfalls fügen Sie die neuen Daten direkt ein.

Nehmen wir zur Veranschaulichung ein Beispiel:

mysql> wähle * von Student;+--------+------+------+| xuehao | Name | Alter |+--------+------+------+| 1001 | aaa | 18 || 1002 | bbb | 19 || 1003 | ccc | 19 |+--------+------+------+
ersetzen durch Studentenwerte (1003, 'ccc', 17);
mysql> wähle * von Student;+--------+------+------+| xuehao | Name | Alter |+--------+------+------+| 1001 | aaa | 18 || 1002 | bbb | 19 || 1003 | ccc | 17 |+--------+------+------+

2. Daten aktualisieren

Mit der Update-Anweisung werden Tabellendaten aktualisiert. Die offiziell empfohlene Syntax lautet:

UPDATE [LOW_PRIORITY] [IGNORE] Tabellenreferenz SET Zuweisungsliste [WHERE Where_Bedingung] [ORDER BY ...] [LIMIT Zeilenanzahl]
Wert: {expr | DEFAULT}
Zuweisung: col_name = Wert
Zuweisungsliste: Zuweisung [, Zuweisung] …

In ähnlicher Weise stellen wir hier nur die häufig verwendete Aktualisierungssyntax für einzelne Tabellen vor:

UPDATE <Tabellenname> SET Feld1=Wert1 [,Feld2=Wert2…] [WHERE-Klausel][ORDER BY-Klausel] [LIMIT-Klausel]

Die Syntax lautet wie folgt:

  • <Tabellenname>: wird verwendet, um den Namen der zu aktualisierenden Tabelle anzugeben.
  • SET-Klausel: Wird verwendet, um den Spaltennamen und den Spaltenwert anzugeben, die in der Tabelle geändert werden sollen. Jeder angegebene Spaltenwert kann ein Ausdruck oder der der Spalte entsprechende Standardwert sein. Wenn ein Standardwert angegeben ist, kann das Schlüsselwort DEFAULT verwendet werden, um den Spaltenwert darzustellen.
  • WHERE-Klausel: Optional. Wird verwendet, um die zu ändernden Zeilen in der Tabelle einzuschränken. Wenn nicht angegeben, werden alle Zeilen in der Tabelle geändert.
  • ORDER BY-Klausel: Optional. Wird verwendet, um die Reihenfolge einzuschränken, in der Zeilen in einer Tabelle geändert werden.
  • LIMIT-Klausel: Optional. Wird verwendet, um die Anzahl der zu ändernden Zeilen zu begrenzen.

3. Daten löschen

Mit der Delete-Anweisung werden Tabellendaten gelöscht. Das offizielle Dokument empfiehlt folgende Syntax:

LÖSCHEN [NIEDRIGE_PRIORITÄT] [SCHNELL] [IGNORIEREN] VON Tabellenname [PARTITION (Partitionsname [, Partitionsname] ...)] [WHERE Where-Bedingung] [ORDER BY ...] [LIMIT Zeilenanzahl]

Mit der DELETE-Anweisung können Sie Daten aus einer einzelnen Tabelle löschen. Die Syntax lautet:

DELETE FROM <Tabellenname> [WHERE-Klausel] [ORDER BY-Klausel] [LIMIT-Klausel]

Die Syntax lautet wie folgt:

  • <Tabellenname>: Geben Sie den Namen der Tabelle an, aus der Daten gelöscht werden sollen.
  • ORDER BY-Klausel: Optional. Beim Löschen werden die Zeilen der Tabelle in der in der Klausel angegebenen Reihenfolge gelöscht.
  • WHERE-Klausel: Optional. Gibt an, dass die Löschbedingungen für den Löschvorgang eingeschränkt sind. Wenn diese Klausel weggelassen wird, bedeutet dies, dass alle Zeilen in der Tabelle gelöscht werden.
  • LIMIT-Klausel: Optional. Wird verwendet, um dem Server die maximale Anzahl der zu löschenden Zeilen mitzuteilen, bevor die Kontrolle an den Client zurückgegeben wird.

Zusammenfassen:

In diesem Artikel wird hauptsächlich die Syntax von drei DML-Anweisungen vorgestellt. Obwohl sie einfach erscheinen, sind die verschiedenen Optionen tatsächlich sehr komplex, insbesondere die Insert-Anweisung, die viele häufig verwendete Optionen enthält. An dieser Stelle möchten wir auch alle daran erinnern, dass Sie beim Ausführen von Update- oder Delete-Anweisungen vorsichtig sein müssen. Wenn Sie die Where-Bedingung nicht verwenden, werden alle Daten aktualisiert oder gelöscht.

Oben finden Sie eine ausführliche Erläuterung der Verwendung von MySQL-DML-Anweisungen. Weitere Informationen zu MySQL-DML-Anweisungen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Zusammenfassung der MySQL-DML-Anweisungen
  • MySQL-Datenoperation – Verwendung von DML-Anweisungen
  • MySQL-Grundlagen-Tutorial: Detaillierte Erklärung der DML-Anweisungen

<<:  js zur Realisierung einer einfachen Scheibenuhr

>>:  Detaillierte Schritte zum Konfigurieren des Tomcat-Servers in IDEA 2020

Artikel empfehlen

CSS-Stil zum Zentrieren des HTML-Tags im Browser

CSS-Stil: Code kopieren Der Code lautet wie folgt:...

Einführung in die Verwendung von Requisiten in Vue

Vorwort: In Vue können Props verwendet werden, um...

MySql fügt Daten erfolgreich ein, meldet aber [Err] 1055 Fehlerlösung

1. Frage: Ich habe in diesen Tagen Einfügevorgäng...

Import-, Export-, Sicherungs- und Migrationsvorgänge für Docker-Images

Export: docker save -o centos.tar centos:latest #...

So ändern Sie das MySQL-Datenbankdateiverzeichnis in Ubuntu

Vorwort Der Ubuntu-Server des Unternehmens platzi...

JavaScript zum Erzielen eines Zeitlupenanimationseffekts

In diesem Artikel wird der spezifische Code für J...

Lösung zur Schnittstellenverformung beim Einstellen der Frameset-Höhe

Derzeit habe ich ein Projekt erstellt, die Schnitt...

Konzept und Anwendungsbeispiele für die MySQL-Indexkardinalität

Dieser Artikel erläutert anhand von Beispielen da...

So erstellen Sie einen Trigger in MySQL

In diesem Artikelbeispiel wird der spezifische Co...

Eine kurze Diskussion über die Verwendung und Analyse von Nofollow-Tags

Kontroverse um Nofollow Zwischen Zac und Guoping ...

Analyse der Unterschiede zwischen Iframe und FRAME

1. Verwendung des Iframe-Tags <br />Wenn es ...

Kodierungsprobleme und -lösungen, wenn MySQL zwei Tabellen verknüpft

Wenn Mysql zwei Tabellen verknüpft, wird eine Feh...