Springe zum Inhalt oder Footer
SerloDie freie Lernplattform

Kurs

Einführung in Abfragen mit SQL

1 Übersicht

In diesem Kurs lernst du, wie du mithilfe der Datenbanksprache SQL Daten aus einer Datenbanktabelle abfragen kannst.

Dieses Wissen ist produktunabhängig in allen gängigen Datenbankverwaltungssystemen einsetzbar!

Dauer: WIP

2 Viel zu viele Filme

Nachdem sich Simone und ihre Freunde dazu entschlossen haben, eine Datenbank aufzusetzen, um ihre Filme übersichtlich zu speichern, ist ihre Datenbank schnell gewachsen.

Deshalb stellen sie sich die Frage, wie sie möglichst einfach nach bestimmten Filmen oder Beziehungen suchen können.

Die universelle Antwort: Mit SQL-Abfragen!

Bild
Datenbankschema der Filmdatenbank

3 SQL Abfragen

SQL (=Structured Query Language) ist eine Sprache, die in allen gängigen Datenbankverwaltungssystemen verwendet werden kann, um Relationen anzulegen, zu verändern, zu löschen und Daten aus diesen abzufragen.

In diesem Kurs wirst du lernen, wie eine typische SQL-Abfrage aufgebaut ist und man mithilfe der Abfragen Daten aus einer Relation auslesen kann.

Dabei ist das Ergebnis einer Abfrage immer auch eine Relation, die kürzer, anders sortiert oder gruppiert ist.

//Links auf weitere Kurse folgen

4 Wie sehen Abfragen aus?

Laden

5 SELECT: Was möchte ich wissen

Selten möchte man alle Informationen zu einem Datensatz haben. Wenn du alle Komödien aus der Filmdatenbank heraussuchen möchtest, interessieren dich vielleicht der Titel und die Länge, nicht unbedingt aber, wie viele Oscarnominierungen ein Film hatte. Deshalb beginnst du SQL-Abfragen damit, dass du angibst, welche Spalten, also welche Attribute dich interessieren. Diese Angabe machst du mit dem Schlüsselwort SELECT.

Möchtest du alle Spalten sehen, so schreibst du

SELECT *

Möchtest du hingegen nur den Titel und die Länge, so schreibst du:

SELECT Titel, Laenge
Bild

Diese Abfragen funktionieren noch nicht! Auf der nächsten Seite erfährst du, wieso.

6 FROM: Wo findet man die Daten

Manchmal sind Spaltennamen nicht eindeutig. Statt "Titel" hätte man in der Relation FILM auch von "Name" sprechen können. Unter anderem deswegen ist es wichtig, dass du angibst, aus welcher Relation die Spalten kommen, die du abfragst.

Das Schlüsselwort hier ist FROM.

Zusammen mit dem SELECT kannst du jetzt schon erste gültige Abfragen machen! Beende deine Anfragen immer mit einem ";".

Möchtest du alle Einträge aus der Relation Film, so schreibst du

SELECT *
FROM FILM;

Möchtest du eine Liste aller Titel, die in der Relation FILM gespeichert sind, so schreibst du

SELECT Titel
FROM FILM;
Bild

7 Abfragen an die Filmdatenbank (1/2)

Laden

8 WHERE: Welche Bedingungen gelten

Wie du vielleicht gemerkt hast, werden die Ergebnisrelationen durch die bisherigen Anfragen nicht kürzer. Sie haben, wenn überhaupt, nur weniger Spalten, da das SELECT einschränkt, welche Attribute angezeigt werden sollen.

Das Problem von Simone und ihren Freunden wird dadurch gelöst, dass zusätzlich noch Bedingungen an die Daten gestellt werden.

SQL-Abfragen können deshalb noch eine WHERE-Klausel haben, in der zum Beispiel Attributwerte überprüft werden können.

Alle Informationen zu Filmen mit dem Genre "Horror" erhältst du mit

SELECT *
FROM FILM
WHERE Genre= "Horror";

Den Titel aller Filme, die kürzer sind als 100 Minuten bekommst du, wenn du das <-Zeichen verwendest

SELECT Titel
FROM FILM
WHERE Laenge < 100;

Die zweite Abfrage zeigt auch, dass im SELECT-Teil nicht die Spalten stehen müssen (aber natürlich stehen können), die im WHERE-Teil verwendet werden.

Bild

9 mehrere Bedingungen

Möchtest du bei einer Abfrage jetzt die Titel wissen, die aus dem Genre "Horror" sind und gleichzeitig kürzer als 100 Minuten, so kannst du die zwei Bedingungen mit AND verknüpfen:

SELECT Titel
FROM FILM
WHERE Genre="Horror" AND Laenge<100;

Als Ergebnis bekommst du alle Filme, die beide Bedingungen erfüllen. Möchtest du aber wissen, welche Filmtitel in der Datenbank sind, die entweder dem Genre "Horror" oder "Action" angehören, verwendest du OR:

SELECT Titel
FROM FILM
WHERE Genre="Horror" OR Genre="Action";

10 genau das nicht!

Wenn du für Datensätze prüfen möchtest, dass etwas nicht zutrifft, verwendest du dafür NOT. Willst du also zum Beispiel alle Filme, die keine Komödien sind, so schreibst du:

SELECT *
FROM FILM
WHERE NOT Genre="Komödie";

11 kein Attributwert da?

Nicht alle Attribute eines Datensatzes müssen einen Wert haben. Man kann einen Film zum Beispiel auch schon anlegen, wenn man seine Länge nicht weiß.

Möchte man dann Abfragen mit diesen Datensätzen durchführen, will man manchmal genau diese leeren Zellen finden oder herausfiltern.

Nicht belegte Felder haben den Inhalt NULL. Bei Abfragen schreibt man IS NULL, um das Fehlen eines Wertes zu überprüfen:

SELECT *
FROM FILM
WHERE Laenge IS NULL;

Die Anfrage gibt alle Datensätze, in denen keine Länge gesetzt ist.

NOT funktioniert so wie bisher:

SELECT *
FROM FILM
WHERE NOT Laenge IS NULL;

12 Abfragen an die Filmdatenbank (2/2)

Laden

13 Zusammenfassung

Bei Abfragen in Datenbanksystemen kann man SQL benutzen.

Eine SQL-Abfrage benötigt immer die Informationen, Was (SELECT) von Wo (FROM) herausgesucht werden soll. Optional kannst du noch angeben, Welche Bedingungen (WHERE) die Datensätze erfüllen sollen.

Die SQL-Abfragen haben bisher die Form

SELECT <Spaltennamen, mit Komma getrennt>
FROM <Tabellenname>
WHERE <Bedingung>;

Dieses Werk steht unter der freien Lizenz
CC BY-SA 4.0Was bedeutet das?