Dies ist eine alte Version des Dokuments!


LU02b - Daten mit SQL abfragen

Das SELECT-Statement ist das am häufigsten verwendete SQL-Statement. Mit

SELECT

können Daten in verschiedenen Varianten ausgegeben werden:

  • alle Spalten
  • bestimmte Spalten
  • mit Filterbedingungen
  • sortiert

Die einfachste Abfrageform ist:

SELECT * FROM imdb_top_1000;

Die FROM-Anweisung sagt in welcher Tabelle gesucht werden soll.

Dies gibt alle Spalten und alle Zeilen der Tabelle zurück.

Beispielauszug (die tatsächliche Tabelle hat noch mehr Spalten):

Poster Filmtitel Jahr Genre Rating Kurzbeschreibung
mv5bm2mynjyxnmutytawni00mtyxlwjmnwytyzzlody3ztk3otflxkeyxkfqcgdeqxvynzkwmjq5nzm_._v1_uy98_cr1_0_67_98_al_.jpg The Godfather 1972 Crime, Drama 9.2 An organized crime dynasty's aging patriarch transfers control of his clandestine empire to his reluctant son.
mv5bzjdkotu3mdktn2ixos00ogeylwfmmjkty2fimmzknwiyodzixkeyxkfqcgdeqxvymtmxodk2otu_._v1_ux67_cr0_0_67_98_al_.jpg Interstellar 2014 Adventure, Drama, Sci-Fi 8.6 A team of explorers travel through a wormhole in space in an attempt to ensure humanity's survival.
mv5bmtuxmzqynja5mf5bml5banbnxkftztywotu2nty3._v1_ux67_cr0_0_67_98_al_.jpg The Green Mile 1999 Crime, Drama, Fantasy 8.6 The lives of guards on Death Row are affected by one of their charges: a black man accused of child murder and rape, yet who has a mysterious gift.
mv5bota5ndzlzgutmjaxos00ytrkltkwymmtywq0nwewzdzinjezxkeyxkfqcgdeqxvymtmxodk2otu_._v1_ux67_cr0_0_67_98_al_.jpg Whiplash 2014 Drama, Music 8.5 A promising young drummer enrolls at a cut-throat music conservatory where his dreams of greatness are mentored by a strict instructor.

Wenn nur bestimmte Daten benötigt werden, empfiehlt es sich, die Spalten explizit anzugeben:

SELECT Series_Title, Released_Year, IMDB_Rating
FROM imdb_top_1000;

Beispielauszug:

Filmtitel Jahr Bewertung
The Godfather 1972 9.2
Interstellar 2014 8.6
The Green Mile 1999 8.6
Whiplash 2014 8.5

Mit ORDER BY können Ergebnisse sortiert werden.

-- Die Filme nach Erscheinungsjahr sortieren
SELECT Series_Title, Released_Year, IMDB_Rating
FROM imdb_top_1000
ORDER BY Released_Year ASC;

Oder umgekehrt, die besten Filme zuerst:

SELECT Series_Title, Released_Year, IMDB_Rating
FROM imdb_top_1000
ORDER BY IMDB_Rating DESC;

Nicht immer sind alle Daten interessant – mit WHERE können Bedingungen definiert werden. Während die bisher behandelten SELECT- und FROM-Anweisungen in jedem SELECT-Befehl vorkommen müssen, ist die WHERE-Anweisung optional. Wegen seiner wichtigen Bedeutung zur Einschränkung (Restriktion) einer Tabelle auf bestimmte Zeilen kommt die WHERE-Anweisung in der Praxis trotzdem in fast allen SELECT-Befehlen vor. Die Struktur einer Abfrage mit Bedingung lautet in Worten:

  • Was? (welche Felder werden ausgewählt → z.B. SELECT Series_Title)
  • Woher? (aus welcher/n Tabelle/n → z.B. FROM imbd_top_1000)
  • Unter welcher/n Bedingung/en? (welche Feldwerte → z.B. WHERE IMDB_Rating > 8.5)
-- Alle Filme mit Bewertung über 8.5
SELECT Series_Title, IMDB_Rating
FROM imdb_top_1000
WHERE IMDB_Rating > 8.5;

Ergebnis (Auszug):

Filmtitel Bewertung
The Godfather 9.2
The Green Mile 8.6
Interstellar 8.6

Im WHERE-Statement können verschiedene Operatoren eingesetzt werden, um die Auswahl von Datensätzen einzuschränken.

= , < , > , <= , >= , <>

→ werden vor allem bei Zahlen verwendet. Beispiel: nur Filme anzeigen, die vor 1970 erschienen sind.

SELECT Series_Title, Released_Year
FROM imdb_top_1000
WHERE Released_Year < 1970;
AND, OR, NOT

→ verbinden mehrere Bedingungen. Beispiel: Filme von Regisseuren Christopher Nolan oder Francis Ford Coppola:

SELECT Series_Title, Director
FROM imdb_top_1000
WHERE Director = 'Christopher Nolan' OR Director = 'Francis Ford Coppola';

Mit AND kann man Bedingungen kombinieren, z. B.:

-- Alle Sci-Fi-Filme von Christopher Nolan
SELECT Series_Title, Director, Genre
FROM imdb_top_1000
WHERE Director = 'Christopher Nolan' AND Genre = 'Drama';
IN, NOT IN

→ vereinfacht Abfragen mit vielen Bedingungen.

-- Filme von Nolan oder Coppola
SELECT Series_Title, Director
FROM imdb_top_1000
WHERE Director IN ('Christopher Nolan', 'Francis Ford Coppola');

Das Gegenteil mit NOT IN:

-- Alle Filme, die NICHT von Nolan oder Coppola sind
SELECT Series_Title, Director
FROM imdb_top_1000
WHERE Director NOT IN ('Christopher Nolan', 'Francis Ford Coppola');
  • SELECT

    – bestimmt die Spalten

  • FROM

    – bestimmt die Tabelle

  • WHERE

    – filtert die Zeilen

  • ORDER BY

    – sortiert die Ergebnisse

Mit diesen Befehlen sind die wichtigsten Grundlagen für Abfragen in relationalen Datenbanken gelegt.

  • modul/m290_guko/learningunits/lu02/theorie/b_sql_select.1756309340.txt.gz
  • Zuletzt geändert: 2025/08/27 17:42
  • von gkoch