DQL - Select-Anweisungen
Last updated
Was this helpful?
Last updated
Was this helpful?
Öffne diese Beispiel-Datenbank in einem neuen Fenster:
Hier kannst du direkt im Browser SQL Statements ausprobieren. Probiere die Beispiele hier mit einem ⚡️-Symbol aus.
DQL Anweisungen werden zur Auswahl und Anzeige von Daten aus der Datenbank verwendet. Abfragen erstellen eine temporäre, speicherresidente (nicht persistente) Tabelle mit 0 oder mehreren Datenzeilen. Sie beginnen immer mit SELECT
, gefolgt von der FROM
-Klausel.
Mit SELECT
wird ausgewählt, welche Spalten der Tabelle in welcher Reihenfolge zurückgegeben werden sollen. Mit *
werden alle Spalten ausgewählt, entspricht der Spaltenreihenfolge der in der zugrundeliegenden Tabelle.
Nach FROM
gibt man den Namen der Tabelle an, welche abgefragt werden soll.
Lass dir alle Kunden ausgeben.
Zeigt nur den Namen und die Adresse der Kunden an
Bei einer Abfrage können mit dem optionalen Schlüsselwort AS
den Spalten (oder berechneten Spalten) neue Namen gegeben werden.
Verändere das Statement so, dass die Spalte ContactName
neu Zustaendiger Ansprechpartner
heisst.
2. Probiere auch das aus:
Mit dem Schlüsselwort DISTINCT
nach SELECT
, werden doppelte Einträge weggelassen. Als doppelter Eintrag gelten nur, wenn die Werte in alle angezeigten Spalten gleich sind.
Verändere das Statement so, dass die Ausgabe keine doppelten Einträge mehr enthält
Berechnungsausdrücke werden wie Tabellenspalten angegeben.
Auch Texte können verkettet werden:
Schreibe ein SQL-Statement, welches vom Kunden den Namen und eine berechnete Kundennummer anzeigt. Die Kundennummer ist einfach CustomerID plus 10'000.
Erweitere das Statement um die Spalte "Anschrift", welche eine Verkettung aus Namen, Adresse, PLZ, Ort und Land ist.
Mit CASE
kann in Ausdrücken nach bestimmten Bedingungen unterschieden werden, wie ein if-else
in der Programmierung.
Erweitere dieses SQL-Statement mit einer neuen Spalte "QuantityText". Ist die Quantität grösser als 10, soll darin stehen "Die Anzahl ist grösser als 10". Ist die Quantität gleich 10, soll darin stehen "Die Anzahl ist 10". Ist die Quantität kleiner als 10, soll stehen "Dia Anzahl ist kleiner als 10".
Schränkt die über SELECT zurückgegebenen Zeilen ein. WHERE folgt nach der FROM Klausel und besteht jeweils aus einem linken Vergleichsterm, einem Vergleichsoperator (=, >, <, >=, <=, <>, !=) und einem rechten Vergleichsterm.
Auswertung nach mathematischen Gesichtspunkten.
Texte werden wie Datumswerte von einfachen Hochkommata umschlossen
Vergleiche erfolgen von links nach rechts nach dem Alphabet
Gross-/Kleinschreibung bei SQL Server in der Regel nicht relevant im Gegensatz zu ORACLE
Alle Vergleichsoperatoren sind möglich
Für gültige Vergleiche muss auf das Datumsformat geachtet werden
Unterschiedlich bei verschiedenen Herstellern
Numerische Datumsformate
'01.01.2015'
'01-01-2015'
Alphanumerische Datumsformate (sprachenabhängig!)
'01 JANUAR 15'
'JAN 1, 15'
Erweitere dieses SQL-Statement, sodass nur noch Kundennamen angezeigt werden, welche einen Anfangsbuchstaben > 'M'
haben.
Schreibe ein SQL Statement, welches alle Produkte ausgibt, welche teurer als 50$ sind.
Schreibe ein SQL Statement, welches alle Bestellungen anzeigt, die vor dem 15.07.1996 getätigt wurden.
Zusätzlich zu den einfachen Vergleichsoperatoren (=
, >
, <
, >=
, <=
, <>
, !=
) gibt es auch noch etwas komplexere Operatoren. Einer davon ist LIKE
.
LIKE sucht nach enthaltenem Text in einer Textspalte. Dabei gibt es verschiedene Platzhalter, die Beschreiben:
Platzhalter
Beschreibung
%
Beliebig viele Zeichen
_
Genau ein Zeichen
[]
Genau eines der Zeichen in der Klammer oder im angegebenen Bereich / den angegebenen Bereichen.
Beispiele:
[ace]
: Platzhalter für ein a
, ein c
oder ein e
.
[a-m]
: Platzhalter für ein Zeichen zwischen a
und m
.
^
Platzhalter für ein Zeichen ausser der angegebenen Zeichen oder Zeichenbereiche.
Beispiele:
[^ace]
: Platzhalter für ein Zeichen, das kein a
, c
oder e
ist.
Erweitere das SQL-Statement, dass nur Kunden angezeigt werden, welche an Orten leben, die mit "ber" anfangen.
Ändere das SQL-Statement, dass nur Kunden angezeigt werden, welche an Orten leben, die mit "li" oder "la" anfangen.
Ändere das SQL-Statement, dass nur Kunden angezeigt werden, in deren Namen als zweiter Buchstabe ein "e" steht.
Ändere das SQL-Statement, dass nur Kunden angezeigt werden, deren Namen nicht mit "A" beginnen.
BETWEEN
Für Vergleiche mit Werten in einem bestimmten Bereich
Für Zahlen-, Datums- und Textkriterien möglich
… WHERE artpreis BETWEEN 10 AND 30;
… WHERE gebdat BETWEEN '01.01.2000' AND '30.09.2000'
… WHERE artbez BETWEEN 'k' AND 'mz'
Grenzwerte sind immer mit dabei
Keine zusätzlichen Vergleichsoperatoren nötig (wie z.B. = )
Erweitere das SQL-Statement, dass nur Mitarbeiter angezeigt werden, die zwischen 1950 und 1959 geboren sind.
2. Erweitere das SQL-Statement, dass nur Produkte angezeigt werden, die zwischen 10$ und 20$ kosten.
IN
Vergleiche mit mehreren, explizit in runden Klammern angegebenen Werten
Bei Verwendung von IN
wird kein weiterer Operator mehr benötigt
Gleichheit mit einem der enthaltenen Werte
Entspricht von der Logik einer ODER-Verknüpfung
Die Auflistung in IN
kann wieder eine SELECT
Abfrage sein.
Erweitere das SQL-Statement, dass nur Kunden angezeigt werden, die in Beron oder Paris leben.
Liste mit einem IN
-Vergleich und einer Unterabfrage alle Produkte aus Italien auf.
NULL
-WertenVergleiche mit NULL
-Werten
Wird auf Wahr / Falsch ausgewertet
NULL
in Kombination mit IS
Suche in einer Nordwind-Datenbank alle Kunden, für welche KEINE Region angegeben ist.
Suche in einer Nordwind-Datenbank alle Kunden, die eine FAX-Nummer haben.
Logische Und-Verknüpfung: AND
Logische Oder-Verknüpfung: OR
Jede Teilbedingung muss vollständig sein
Falsch: WHERE artnr = 1098 OR 1237
Richtig: WHERE artnr = 1098 OR artnr = 1237
Logische Umkehrung: NOT
Falsch: WHERE artnr NOT = 1098
Richtig: WHERE NOT (artnr = 1098)
WHERE NOT (artnr = 1098) AND NOT (artnr = 1237)
Nimm dir ein paar der vorherigen Beispiele vor und versuche sie mit NOT
umzukehren.
Nimm dir ein paar der vorherigen Beispiele vor und versuche sie mit AND
oder OR
zu verknüpfen.
Sortierung über ORDER BY
ORDER BY immer letzte Klausel innerhalb der Anweisung
Sortiert wird immer am Schluss
Sortierung nach ein oder mehreren Spalten
Aufsteigende (ASC) und absteigende Sortierung (DESC)
Sortierung nach Spalten- oder Aliasnamen oder durch Spaltenposition innerhalb der SELECT-Klausel
Schreibe ein SQL-Statement, welches die Mitarbeiter nach Alter sortiert, die Ältesten zuerst.
TOP
AuswertungenTOP
: Die "obersten" x Zeilen absolut oder in Prozent
Reihenfolge wird durch Sortierung bestimmt
Erweitere das SQL-Statement so, dass nur die 3 ältesten Mitarbeiter angezeigt werden.