MySQLs Methode zum Umgang mit doppelten Daten (Verhindern und Löschen)

MySQLs Methode zum Umgang mit doppelten Daten (Verhindern und Löschen)

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:

  • Bestimmt, welche Spalte Werte enthält, die wiederholt auftreten können.
  • Verwenden Sie COUNT(*) in der Spaltenauswahlliste, um diese Spalten aufzulisten.
  • Die in der GROUP BY-Klausel aufgelisteten Spalten.
  • Die HAVING-Klausel setzt die Anzahl der Wiederholungen auf größer als 1.

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 sind die Details der MySQL-Methode zum Umgang mit doppelten Daten (Verhinderung und Löschung) aufgeführt. 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:
  • Ein praktischer Bericht über die Prüfung und Bearbeitung doppelter MySQL-Datensätze vor Ort
  • MySQL-Lernnotizen zum Umgang mit doppelten Daten
  • So handhaben Sie gleichzeitige Aktualisierungen von MySQL-Daten
  • Detaillierte Erläuterung des MySQL-Ausführungsprinzips, der logischen Schichtung und der Änderung der Datenbankverarbeitungs-Engine
  • Einige Methoden zur Optimierung der Abfragegeschwindigkeit bei der Verarbeitung großer Datenmengen durch MySQL
  • Sortieren der MySQL-Datenverarbeitung und Erläuterung der Vorgänge zum Hinzufügen, Löschen und Ändern

<<:  So zeigen Sie alle laufenden Prozesse in Linux an

>>:  So verwenden Sie den Yum-Befehl

Artikel empfehlen

Zusammenfassung des Front-End-Wissens im Gokudō-Spiel

Hintergrund Zu Beginn meines Japanisch-Lernens fi...

js-Datentypen und Beispiele für ihre Beurteilungsmethoden

js-Datentypen Grundlegende Datentypen: Zahl, Zeic...

So installieren Sie Jenkins auf CentOS 8

Um Jenkins auf CentOS 8 zu installieren, müssen S...

Grundlegende Verwendung von UNION und UNION ALL in MySQL

In der Datenbank führen sowohl die Schlüsselwörte...

So löschen Sie Tabellendaten in MySQL

Es gibt zwei Möglichkeiten, Daten in MySQL zu lös...

CentOS7-Konfiguration Alibaba Cloud Yum-Quellmethodencode

Öffnen Sie den Centos Yum-Ordner Geben Sie den Be...

Zabbix-Konfiguration DingTalk-Alarmfunktions-Implementierungscode

brauchen Das Konfigurieren von DingTalk-Alarmen i...

Die Verbindung zwischen JavaScript und TypeScript

Inhaltsverzeichnis 1. Was ist JavaScript? 2. Wofü...

Installieren Sie .NET 6.0 im CentOS-System mithilfe eines Cloud-Servers

.NET SDK-Download-Link https://dotnet.microsoft.c...

Implementierung von TypeScript im React-Projekt

Inhaltsverzeichnis 1. Einleitung 2. Nutzung Zusta...

Eine vollständige Liste häufig verwendeter HTML-Tags und ihrer Eigenschaften

Zunächst müssen Sie einige Eigenschaften von HTML...

js realisiert die Bildschneidefunktion

In diesem Artikelbeispiel wird der spezifische Co...