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

Detaillierte Erklärung der grundlegenden Typen von TypeScript

Inhaltsverzeichnis Boolescher Typ Nummerntypen Ze...

SpringBoot integriert Activiti7-Implementierungscode

Nach der offiziellen Veröffentlichung von Activit...

So implementieren Sie Reaktionsfähigkeit beim Lernen des Vue-Quellcodes

Inhaltsverzeichnis Vorwort 1. Schlüsselelemente e...

So packen Sie das Projekt per Idee in Docker

Viele Freunde wollten schon immer wissen, wie man...

my.cnf-Parameterkonfiguration zur Optimierung der InnoDB-Engine-Leistung

Ich habe im Internet unzählige my.cnf-Konfigurati...

Einige Verbesserungen in MySQL 8.0.24 Release Note

Inhaltsverzeichnis 1. Verbindungsmanagement 2. Ve...

Der Excel-Export schlägt in der Docker-Umgebung immer fehl

Der Excel-Export schlägt in der Docker-Umgebung i...

Beispiel zur Identifizierung des Benutzers mithilfe eines Linux-Bash-Skripts

In Bash-Skripten oder direkt im Skript selbst ist...

Detailliertes Tutorial zur Überwachung von Nginx/Tomcat/MySQL mit Zabbix

Inhaltsverzeichnis Zabbix überwacht Nginx Zabbix ...

Tiefgreifendes Verständnis der CSS @font-face-Leistungsoptimierung

In diesem Artikel werden hauptsächlich allgemeine...

So vergessen Sie das Root-Passwort in Mysql8.0.13 unter Windows 10

1. Stoppen Sie zuerst den MySQL-Dienst Öffnen Sie...

Zusammenfassung der Berechtigungsprobleme bei gespeicherten MySQL-Prozeduren

Ja, gespeicherte MySQL-Prozeduren scheinen sehr s...

Verwendung der Vue3-Tabellenkomponente

Inhaltsverzeichnis 1. Ant Design Vue 1. Offiziell...