MySQL-Lernnotizen zum Umgang mit doppelten Daten

MySQL-Lernnotizen zum Umgang mit doppelten Daten

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:

  • 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 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:
  • Ein praktischer Bericht über die Prüfung und Bearbeitung doppelter MySQL-Datensätze vor Ort
  • MySQLs Methode zum Umgang mit doppelten Daten (Verhindern und Löschen)
  • 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 installieren und konfigurieren Sie das Orchestrierungstool Docker Compose in Docker.v19

>>:  So verwalten Sie große Datei-Uploads und Breakpoint-Resumes basierend auf js

Artikel empfehlen

Zusammenfassung einiger wichtiger Punkte zu mysql init_connect

Die Rolle von init_connect init_connect wird norm...

Zusammenfassung der Unterschiede zwischen SQL und NoSQL

Hauptunterschiede: 1. Typ SQL-Datenbanken werden ...

Vue implementiert rekursiv ein dreistufiges Menü

In diesem Artikelbeispiel wird der spezifische Co...

Erläuterung der MySQL-Indexoptimierung

Bei unserer täglichen Arbeit führen wir manchmal ...

So lösen Sie das domänenübergreifende Front-End-Problem mithilfe des Nginx-Proxys

Vorwort Nginx (ausgesprochen „Engine X“) ist ein ...

MySql-Import - CSV-Datei oder tabulatorgetrennte Datei

Manchmal müssen wir Daten aus einer anderen Bibli...

20 JS-Abkürzungsfähigkeiten zur Verbesserung der Arbeitseffizienz

Inhaltsverzeichnis Wenn Sie mehrere Variablen gle...

Implementierung von LNMP für die separate Bereitstellung von Docker-Containern

1. Umweltvorbereitung Die IP-Adresse jedes Contai...

Verwendung der MySQL DATE_FORMAT-Funktion

Angenommen, Taobao animiert die Leute zum Einkauf...

MySql legt die angegebenen Benutzerdatenbankansichtsabfrageberechtigungen fest

1. Neuen Benutzer anlegen: 1. Führen Sie eine SQL...