Zurück zur Artikelliste Artikel
5 Leseminuten

Was ist der Unterschied zwischen UNIQUE und DISTINCT in SQL?

In unserem Alltag verwenden wir die Wörter unique und distinct austauschbar. In SQL spielen diese Begriffe jedoch eine ganz andere Rolle. Lassen Sie uns herausfinden, was an ihnen so unterschiedlich ist und wie wir sie in SQL verwenden können.

Obwohl die Wörter unique und distinct Synonyme sind, decken sie in SQL sehr unterschiedliche Dinge ab. Das Schlüsselwort UNIQUE spielt in SQL die Rolle einer Datenbankbeschränkung; es stellt sicher, dass in einer bestimmten Spalte oder einem Satz von Spalten keine doppelten Werte gespeichert sind. Andererseits wird das Schlüsselwort DISTINCT in der Anweisung SELECT verwendet, um eindeutige Zeilen aus einer Tabelle zu holen.

Der beste Ort, um etwas über SQL und Datenbanken zu lernen, ist LearnSQL.de. Es handelt sich um eine Online-Plattform, die Ihnen helfen soll, alle Datenbankthemen zu beherrschen. Sie bietet über 30 SQL-Kurse, darunter einen umfassenden SQL von A bis Z Track mit dem kompletten interaktiven SQL-Lernpfad oder Creating Database Structure, der Sie über Datenbankeinschränkungen wie UNIQUE unterrichtet.

Schauen wir uns die beiden Schlüsselwörter UNIQUE und DISTINCT in SQL genauer an.

Das DISTINCT-Schlüsselwort in SQL

Das Schlüsselwort DISTINCT in SQL wird zusammen mit der Anweisung SELECT verwendet. Durch die Verwendung von SELECT, unmittelbar gefolgt vom Schlüsselwort DISTINCT, werden alle doppelten Zeilen aus der Ergebnismenge entfernt.

Schauen wir uns ein Beispiel für DISTINCT in Aktion an.

Wir erhalten die Cars Tabelle, die die Marken- und Modellinformationen für einige Autos enthält:

IdBrandModelProductionYear
AQ16AudiQ72011
FK19FordKuga2019
JC07JeepCherokee2012
JW15JeepWrangler2015
TS14TeslaModel S2014
TY20TeslaModel Y2020

Führen wir eine einfache SELECT -Anweisung aus, um alle Automarken zu erhalten, die nach 2011 hergestellt wurden:

SELECT Brand 
FROM Cars 
WHERE ProductionYear > 2011;

Das Ergebnis der obigen Abfrage lautet wie folgt.

Brand
Ford
Jeep
Jeep
Tesla
Tesla

Wie Sie sehen können, haben wir doppelte Werte für Jeep und Tesla. Was, wenn wir einen einzelnen Datensatz für jeden Wert benötigen? Wir verwenden das Schlüsselwort DISTINCT:

SELECT DISTINCT Brand 
FROM Cars 
WHERE ProductionYear > 2011;

Und das Ergebnis ist...

Brand
Ford
Jeep
Tesla

Jetzt sehen Sie, wie einfach und bequem es ist, das Schlüsselwort DISTINCT zu verwenden.

Wenn Sie einen tieferen Einblick in das Schlüsselwort DISTINCT in SQL erhalten möchten, lesen Sie unseren Artikel Was ist die Rolle von DISTINCT in SQL?

Das UNIQUE-Schlüsselwort in SQL

Das Schlüsselwort UNIQUE in SQL kennzeichnet eine der Datenbankbeschränkungen. Durch die Verwendung der Einschränkung UNIQUE für eine Spalte oder einen Satz von Spalten können Sie verhindern, dass doppelte Werte in dieser Spalte oder diesem Satz gespeichert werden (d. h. die Kombination von Spaltenwerten muss eindeutig sein, obwohl jeder Wert mehrmals in derselben Spalte vorkommen kann).

Schauen wir uns die UNIQUE Einschränkung in Aktion an. Wir erstellen eine Person Tabelle, die den Namen, die Sozialversicherungsnummer und die Nationalität einer Person speichert.

CREATE TABLE Person (
	RowId INTEGER PRIMARY KEY,
	FirstName varchar(50),
	LastName varchar(50),
	SSN varchar(20) UNIQUE,
	Nationality varchar(30)
);

In diesem Fall darf die SSN-Spalte nur nicht-duplizierende Werte speichern; daher gibt es ein UNIQUE -Schlüsselwort in der Definition dieser Spalte, das ihr die UNIQUE-Beschränkung auferlegt.

Weitere Übungen zur Tabellenerstellung und zum Datenbankdesign finden Sie in unserem Track zur Erstellung von Datenbankstrukturen. Er umfasst die Grundlagen der Tabellenerstellung, SQL-Datentypen, Beschränkungen und mehr. Und um einen Einblick in den Track zu bekommen, lesen Sie diesen Artikel.

Fügen wir nun einige Werte in die Person Tabelle ein.

INSERT INTO Person VALUES (1, 'John', 'Black', '321456987123', 'American');
INSERT INTO Person VALUES (2, 'Isabella', 'Sanchez', '987456345123', 'Spanish');
INSERT INTO Person VALUES (3, 'Klaus', 'Schmidt', '987456345123', 'German');

Wir erhalten einen Fehler bei der dritten INSERT Anweisung. Und warum? Weil eine UNIQUE Einschränkung für die Spalte SSN definiert wurde; daher kann derselbe Wert nicht zweimal in der Spalte SSN erscheinen. Sowohl Isabella als auch Klaus haben denselben SSN Wert, daher erhalten wir eine Fehlermeldung. Wir haben uns nicht an die Regeln gehalten, die durch die UNIQUE -Beschränkung festgelegt wurden.

Wenn wir die letzte INSERT -Anweisung in... ändern.

INSERT INTO Person VALUES (3, 'Klaus', 'Schmidt', '876456345123', 'German');

... es wird in die Tabelle aufgenommen. Nach dem Ausführen aller drei INSERT Anweisungen, einschließlich der korrigierten dritten Anweisung, sieht die Person sieht die Tabelle wie folgt aus:

RowIdFirstNameLastNameSSNNationality
1JohnBlack321456987123American
2IsabellaSanchez987456345123Spanish
3KlausSchmidt876456345123German

Die UNIQUE -Beschränkung verhindert, dass INSERTs oder UPDATEs in einer Tabelle zu doppelten Werten in der Spalte oder dem Satz von Spalten führen, die die Beschränkung implementieren.

Die nachstehende Tabelle verletzt also die UNIQUE -Beschränkung, die für die Spalte SSN gilt...

RowIdFirstNameLastNameSSNNationality
1JohnBlack321456987123American
2IsabellaSanchez987456345123Spanish
3KlausSchmidt987456345123German

...und diese Tabelle befolgt die UNIQUE -Beschränkung für die SSN -Spalte.

RowIdFirstNameLastNameSSNNationality
1JohnBlack321456987123American
2IsabellaSanchez987456345123Spanish
3KlausSchmidt876456345123German

Sie können die UNIQUE Einschränkung während der Tabellenerstellung definieren, wie hier gezeigt wurde, oder nachdem die Tabelle erstellt wurde. Die UNIQUE Einschränkung kann auch später geändert oder entfernt werden. Wie das geht, erfahren Sie im Artikel What Is a Unique Constraint in SQL? Wir bieten auch einen interaktiven Kurs über SQL-Beschränkungen an, um Ihnen zu helfen, die verschiedenen Beschränkungen, die SQL zur Verfügung stellt, zu verstehen.

Alles zusammenfügen: UNIQUE vs. DISTINCT in SQL

Wir haben die Schlüsselwörter UNIQUE und DISTINCT definiert. Aber was sind die tatsächlichen Unterschiede zwischen ihnen?

Das SchlüsselwortUNIQUE kennzeichnet eine Datenbankbeschränkung und wird bei der Tabellenerstellung oder später für eine bestimmte Spalte oder einen Satz von Spalten definiert. Das Schlüsselwort DISTINCT wird verwendet, wenn die Ergebnismenge aus der Datenbank abgerufen wird. Es folgt direkt auf dasSchlüsselwortSELECT , wenn wir sicherstellen wollen, dass alle Zeilen der Ergebnismenge eindeutige Werte oder einen eindeutigen Satz von Werten enthalten.

Wir wissen, dass es immer gut ist, so viel praktische Erfahrung wie möglich zu sammeln, deshalb haben wir ein SQL-Übungssatz vorbereitet, mit dem Sie die verschiedenen Funktionen von SQL erlernen und üben können. Um sich selbst zu motivieren, schauen Sie sich unseren Artikel über die SQL-Übungssatz.

Viel Erfolg!