SQL EXISTS: So überprüfen Sie, ob bereits Daten in einer Tabelle vorhanden sind

SQL ist eine Programmiersprache, die zur Verwaltung von Daten in einem relationalen Datenbankmanagementsystem (RDBMS) verwendet wird. SQL verfügt über viele nützliche Features und Funktionen zum Ausführen verschiedener Vorgänge für Daten, z. B. Einfügen, Aktualisieren, Löschen und Abrufen von Daten.

Eine der Operationen, die häufig in SQL durchgeführt werden, besteht darin, zu überprüfen, ob bestimmte Daten bereits in der Tabelle enthalten sind oder nicht. Dies ist nützlich, um die Duplizierung von Daten zu verhindern, Eingaben zu validieren oder Bedingungen für andere Abfragen anzugeben.

Es gibt mehrere Möglichkeiten, um zu überprüfen, ob sich die Daten bereits in einer Tabelle befinden, aber eine der gebräuchlichsten und effizientesten Methoden ist die Verwendung der EXISTS-Klausel. Eine EXISTS Klausel ist eine bedingte Klausel, die einen TRUE oder FALSE Wert zurückgibt, je nachdem, ob eine bestimmte Unterabfrage zu mindestens einer Zeile führt oder nicht.

In diesem Artikel erläutert Bardimin, wie EXISTS Klauseln in SQL verwendet werden, was die Vor- und Nachteile sind und wie man sie mit anderen Methoden vergleicht, z. B. mit COUNT oder JOIN. Bardimin wird auch einige Beispiele für die Verwendung von EXISTS in verschiedenen Szenarien und Datenbanken, wie z. B. MySQL, geben.

Grundlegende SQL EXISTS-Syntax und Beispiele

Die grundlegende Syntax für die Verwendung von EXISTS-Klauseln in SQL lautet wie folgt:

SELECT column_name(s)
FROM table_name
WHERE EXISTS (subquery);

Hier handelt subquery sich um eine Abfrage, die sich in Klammern befindet und in der Regel auf dieselbe Tabelle oder eine andere Tabelle verweist, die mit der Haupttabelle verbunden ist. Die Unterabfrage muss mindestens eine Spalte zurückgeben, aber der Wert dieser Spalte ist irrelevant, da EXISTS uns nur darum kümmern, ob Zeilen generiert werden oder nicht.

Schauen wir uns ein einfaches Beispiel für die Verwendung von EXISTS in SQL an. Angenommen, wir haben eine mahasiswa Tabelle, die Daten über Studenten an einer Universität enthält, wie folgt:

idnamajurusanangkatan
1AliMathematik2019
2VerstandPhysik2020
3CiciBiologie2019
4DediChemie2020
5EinsMathematik2021

Wir haben auch eine nilai Tabelle, die Daten über die Noten der Teilnehmer in verschiedenen Kursen enthält, wie z. B. die folgenden:

id_mahasiswakode_mknilai
1MA101-KARTON80
1MA102-KARTON85
2FI101-KARTON75
2FI102-KARTON70
3BI101-KARTON90
4KI101-KARTON95
5MA101-KARTON60

Wenn wir Schülerdaten anzeigen möchten, die Werte in der Tabelle nilai haben, können wir die EXISTS-Klausel wie folgt verwenden:

SELECT *
FROM mahasiswa m
WHERE EXISTS (
SELECT 1
FROM nilai n
WHERE m.id = n.id_mahasiswa
);

Die Ergebnisse der obigen Abfrage lauten wie folgt:

idnamajurusanangkatan
1AliMathematik2019
2VerstandPhysik2020
3CiciBiologie2019
4DediChemie2020
5EinsMathematik2021

Die obige Abfrage verwendet eine Unterabfrage, die den Wert 1 für jede Zeile zurückgibt, die die Bedingung m.id =n.id_mahasiswa zurückgibt, was bedeutet, dass der Student einen Wert in der Tabelle nilai hat. Da die Unterabfrage mindestens eine Zeile für jeden Schüler zurückgibt, gibt die EXISTS-Klausel TRUE zurück, und dieser Schüler wird in den Abfrageergebnissen angezeigt.

Beachten Sie, dass wir jeden Wert in einer Unterabfrage verwenden können, auch NULL oder *, da dieser Wert keinen Einfluss auf EXISTS Ergebnisse hat. Aus Leistungsgründen wird jedoch empfohlen, die einfachsten konstanten Werte zu verwenden, z. B. 1, 0 oder NULL, da SQL die tatsächlichen Spaltenwerte nicht verarbeiten muss.

Vor- und Nachteile von SQL EXISTS

Die Verwendung EXISTS Klauseln in SQL hat je nach Situation und verwendeter Datenbank mehrere Vor- und Nachteile. Hier sind einige der Vor- und Nachteile von EXISTS:

Vorteil

  • EXISTS ist eine intuitive und leicht lesbare Methode, um zu überprüfen, ob bereits Daten in der Tabelle vorhanden sind oder nicht, da die Klausel die Absicht der Abfrage explizit angibt.
  • EXISTS ist eine effiziente Möglichkeit, um zu überprüfen, ob bereits Daten in einer Tabelle vorhanden sind, da SQL die Suche beendet, nachdem die erste Zeile gefunden wurde, die die Unterabfragebedingungen erfüllt, was Zeit und Ressourcen spart.
  • EXISTS ist eine flexible Möglichkeit, um zu überprüfen, ob bereits Daten in einer Tabelle vorhanden sind oder nicht, da wir komplexe Unterabfragen verwenden und mehr als eine Tabelle einbeziehen können, solange die Unterabfrage gültig ist und mindestens eine Spalte zurückgibt.

Neueste Artikel