MySQL verarbeitet doppelte Daten Einige MySQL-Tabellen können doppelte Datensätze enthalten. In manchen Fällen lassen wir die Existenz doppelter Daten zu, manchmal müssen wir die doppelten Daten aber auch löschen. In diesem Kapitel erfahren Sie, wie Sie das Auftreten doppelter Daten in Datentabellen verhindern und wie Sie doppelte Daten in Datentabellen löschen. Verhindern, dass doppelte Daten in der Tabelle erscheinen Sie können ein bestimmtes Feld in einer MySQL-Tabelle als PRIMARY KEY- oder UNIQUE-Index festlegen, um die Eindeutigkeit der Daten sicherzustellen. Versuchen wir es mit einem Beispiel: In der folgenden Tabelle gibt es weder einen Index noch einen Primärschlüssel, daher sind in der Tabelle mehrere doppelte Datensätze zulässig. CREATE TABLE person_tbl ( vorname CHAR(20), Nachname CHAR(20), Geschlecht CHAR(10) ); Wenn Sie die Daten der Felder „Vorname“ und „Nachname“ in der Tabelle so einstellen möchten, dass sie nicht wiederholt werden, können Sie einen dualen Primärschlüsselmodus festlegen, um die Eindeutigkeit der Daten festzulegen. Wenn Sie einen dualen Primärschlüssel festlegen, kann der Standardwert dieses Schlüssels nicht NULL sein und kann auf NOT NULL festgelegt werden. Wie unten dargestellt: CREATE TABLE person_tbl ( Vorname CHAR(20) NOT NULL, Nachname CHAR(20) NOT NULL, Geschlecht CHAR(10), PRIMÄRSCHLÜSSEL (Nachname, Vorname) ); Wenn wir einen eindeutigen Index festlegen, wird die SQL-Anweisung beim Einfügen doppelter Daten nicht erfolgreich ausgeführt und ein Fehler wird ausgegeben. Der Unterschied zwischen INSERT IGNORE INTO und INSERT INTO besteht darin, dass INSERT IGNORE die Daten ignoriert, die bereits in der Datenbank vorhanden sind. Wenn keine Daten in der Datenbank vorhanden sind, werden neue Daten eingefügt. Wenn Daten vorhanden sind, werden die Daten übersprungen. Auf diese Weise können die vorhandenen Daten in der Datenbank beibehalten und der Zweck des Einfügens von Daten in die Lücke erreicht werden. Im folgenden Beispiel wird INSERT IGNORE INTO verwendet. Nach der Ausführung tritt kein Fehler auf und es werden keine doppelten Daten in die Datentabelle eingefügt: mysql> INSERT IGNORE INTO person_tbl (Nachname, Vorname) -> WERTE('Jay', 'Thomas'); Abfrage OK, 1 Zeile betroffen (0,00 Sek.) mysql> INSERT IGNORE INTO person_tbl (Nachname, Vorname) -> WERTE('Jay', 'Thomas'); Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) INSERT IGNORE INTO: Wenn beim Einfügen von Daten nach dem Festlegen der Eindeutigkeit des Datensatzes doppelte Daten eingefügt werden, wird kein Fehler zurückgegeben, sondern nur eine Warnung. Wenn REPLACE INTO einen Datensatz mit demselben primären oder eindeutigen Wert hat, wird dieser zuerst gelöscht. Neue Datensätze erneut einfügen. Eine weitere Möglichkeit, die Eindeutigkeit Ihrer Daten sicherzustellen, besteht darin, einen UNIQUE-Index hinzuzufügen, wie unten gezeigt: CREATE TABLE person_tbl ( Vorname CHAR(20) NOT NULL, Nachname CHAR(20) NOT NULL, Geschlecht CHAR(10), UNIQUE (Nachname, Vorname) ); Zählen doppelter Daten Nachfolgend zählen wir die Anzahl der doppelten Datensätze von Vorname und Nachname in der Tabelle: mysql> SELECT COUNT(*) als Wiederholungen, Nachname, Vorname -> VON person_tbl -> GRUPPE NACH Nachname, Vorname -> MIT Wiederholungen > 1; Die obige Abfrage gibt die Anzahl der doppelten Datensätze in der Tabelle „person_tbl“ zurück. Um nach doppelten Werten zu suchen, gehen Sie im Allgemeinen wie folgt vor:
Filtern doppelter Daten Wenn Sie keine doppelten Daten lesen müssen, können Sie das Schlüsselwort DISTINCT in der SELECT-Anweisung verwenden, um doppelte Daten herauszufiltern. mysql> SELECT DISTINCT Nachname, Vorname -> VON person_tbl; Sie können GROUP BY auch verwenden, um eindeutige Daten in der Tabelle zu lesen: mysql> SELECT Nachname, Vorname -> VON person_tbl -> GROUP BY (Nachname, Vorname); Deduplizierung Wenn Sie doppelte Daten in einer Tabelle löschen möchten, können Sie die folgende SQL-Anweisung verwenden: mysql> CREATE TABLE tmp SELECT Nachname, Vorname, Geschlecht FROM person_tbl GROUP BY (Nachname, Vorname, Geschlecht); mysql> DROP TABLE person_tbl; mysql> ALTER TABLE tmp RENAME TO person_tbl; Natürlich können Sie auch INDEX (Index) und PRIMAY KEY (Primärschlüssel) in die Datentabelle einfügen, um doppelte Datensätze in der Tabelle zu löschen. So geht's: mysql> ALTER IGNORE TABLE person_tbl -> PRIMÄRSCHLÜSSEL HINZUFÜGEN (Nachname, Vorname); Oben finden Sie den detaillierten Inhalt der Studiennotizen zum Umgang von MySQL mit doppelten Daten. Weitere Informationen zum Umgang von MySQL mit doppelten Daten finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: So installieren und konfigurieren Sie das Orchestrierungstool Docker Compose in Docker.v19
>>: So verwalten Sie große Datei-Uploads und Breakpoint-Resumes basierend auf js
Inhaltsverzeichnis Boolescher Typ Nummerntypen Ze...
Nach der offiziellen Veröffentlichung von Activit...
Inhaltsverzeichnis Vorwort 1. Schlüsselelemente e...
Viele Freunde wollten schon immer wissen, wie man...
Ich habe im Internet unzählige my.cnf-Konfigurati...
Inhaltsverzeichnis 1. Verbindungsmanagement 2. Ve...
Der Excel-Export schlägt in der Docker-Umgebung i...
Bevor wir die GROUP BY- und HAVING-Klauseln vorst...
In Bash-Skripten oder direkt im Skript selbst ist...
Inhaltsverzeichnis Zabbix überwacht Nginx Zabbix ...
In diesem Artikel werden hauptsächlich allgemeine...
Ein ES-Image vom Docker-Hub heruntergeladen, Vers...
1. Stoppen Sie zuerst den MySQL-Dienst Öffnen Sie...
Ja, gespeicherte MySQL-Prozeduren scheinen sehr s...
Inhaltsverzeichnis 1. Ant Design Vue 1. Offiziell...