Benutzer-Werkzeuge

Webseiten-Werkzeuge


datenbanken:sql

Auswertung der Datenbasis - SQL

Im Abschnitt Grundlagen zu Datenbanken wird erklärt, was wir unter einem Datenbanksystem verstehen. Zur Kommunikation zwischen Datenbankensystemen und anderen Anwendungen hat sich allgemein die Sprache SQL (Structured Query Language) durchgesetzt. SQL lässt sich in verschiedene Sprachgruppen einteilen:

  • DDL - Definition und Veränderung von Relationen (tabellen)
  • DML - Erfassung und Pflege der Daten
  • QL - Anfragesprache zur Auswertung der Datenbasis
  • DCL - Vergabe und Organisation von Zugriffsrechten

Auswertung der Datenbasis - Operationen auf Tabellen

Bei der Auswertung der Datenbasis sollen bestimmte Daten aus bereits vorhandenen Tabellen ausgelesen werden. Dabei sind verschiedene Operationen möglich. Zur Auswertung der Datenbasis wird der SQL-Befehl SELECT verwendet:

SELECT spalte(n)
FROM tabelle(n)
[WHERE bedingunge(n)];

SQL-Befehle können in beliebiger Schreibweise geschrieben werden, es hat sich aber eingebürgert, die Befehle ausschließlich in Großbuchstaben zu schreiben. Die Syntax des Befehls wird in den nächsten Abschnitten erläutert.

Projektion

Eine Projektion filtert bestimmte Spalten aus einer Datenbanktabelle heraus.

Wir betrachten die Datenbanktabelle Stadt.

Name Einwohnerzahl Fläche Staat
Berlin 3,769 Mio 891,8 km² Deutschland
Hamburg 1,845 Mio 755,2 km² Deutschland
London 8,982 Mio 1572 km² Großbritannien
Paris 2,176 Mio 105,34 km² Frankreich
SELECT Name, Einwohnerzahl
FROM Stadt;

gibt nur die Spalten Name und Einwohnerzahl aus und blendet alle anderen Spalten aus. →

Name Einwohnerzahl
Berlin 3,769 Mio
Hamburg 1,845 Mio
London 8,982 Mio
Paris 2,176 Mio

Wenn man alle Spalten einer Tabelle ausgeben will, so muss man diese nicht alle aufzählen, man kann sie mit dem *-Symbol abkürzen.

SELECT * 
FROM Stadt;

ergibt:

Name Einwohnerzahl Fläche Staat
Berlin 3,769 Mio 891,8 km² Deutschland
Hamburg 1,845 Mio 755,2 km² Deutschland
London 8,982 Mio 1572 km² Großbritannien
Paris 2,176 Mio 105,34 km² Frankreich

Selektion

Bei einer Selektion werden bestimmte Zeilen aus einer Tabelle herausgefiltert, die einer bestimmten Bedingung entsprechen. Diese Bedingung wird in der WHERE-Klausel angegeben.

SELECT *
FROM Stadt;
WHERE Name = 'London'

ergibt:

Name Einwohnerzahl Fläche Staat
London 8,982 Mio 1572 km² Großbritannien

Selektion und Projektion können auch miteinander verbunden werden:

SELECT Staat
FROM Stadt
WHERE Name = 'London';

ergibt:

Staat
Großbritannien

Verbund

Ein Verbund (Join) ist eine Verbindung zwischen mehreren Tabellen einer Datenbank über ein bestimmtes Attribut. Um zu erklären, wie ein Verbund entsteht betrachten wir unsere bekannte Tabelle Stadt und fügen noch eine weitere Tabelle Staaten hinzu:

Tabelle Stadt

Name Einwohnerzahl Fläche Staat
Berlin 3,769 Mio 891,8 km² Deutschland
Hamburg 1,845 Mio 755,2 km² Deutschland
London 8,982 Mio 1572 km² Großbritannien
Paris 2,176 Mio 105,34 km² Frankreich

Tabelle Staaten

Staat Sprache
Deutschland Deutsch
Großbritanien Englisch
Frankreich Französisch

Das Attribut Staat, welches in der Tabelle Staaten Primärschlüssel ist, ist in der Tabelle Stadt Fremdschlüssel, es verbindet also die Tabellen. (Die zweite Tabelle ist bewusst klein gehalten, dass der Umfang der Seite gesprengt wird.)

Wenn man die folgende Abfrage durchführt

SELECT *
FROM Stadt, Staaten;

erhält man die folgende Tabelle

Name Einwohnerzahl Fläche Staat Staat Sprache
Berlin 3,769 Mio 891,8 km² Deutschland Deutschland Deutsch
Hamburg 1,845 Mio 755,2 km² Deutschland Deutschland Deutsch
London 8,982 Mio 1572 km² Großbritannien Deutschland Deutsch
Paris 2,176 Mio 105,34 km² Frankreich Großbritanien Englisch
Berlin 3,769 Mio 891,8 km² Deutschland Großbritanien Englisch
Hamburg 1,845 Mio 755,2 km² Deutschland Großbritanien Englisch
London 8,982 Mio 1572 km² Großbritannien Großbritanien Englisch
Paris 2,176 Mio 105,34 km² Frankreich Frankreich Französisch
Berlin 3,769 Mio 891,8 km² Deutschland Frankreich Französisch
Hamburg 1,845 Mio 755,2 km² Deutschland Frankreich Französisch
London 8,982 Mio 1572 km² Großbritannien Frankreich Französisch
Paris 2,176 Mio 105,34 km² Frankreich Deutschland Deutsch

Es wird also jede Zeile der ersten Tabelle mit jeder Zeile der zweiten Tabelle kombiniert. Uns interessieren aber nur die Zeilen, in der die Eigenschaft Staat der einen Tabelle mit der Eigenschaft Staat der zweiten Tabelle übereinstimmt. Da die Spalte Staat in beiden Tabellen auftritt, muss im SQL-Befehl der Spaltenname mit dem Tabellenname verknüpft werden:

SELECT *
FROM Stadt, Staaten
WHERE Stadt.Staat = Staaten.Staat;

Die Abfrage ergibt:

Name Einwohnerzahl Fläche Staat Staat Sprache
Berlin 3,769 Mio 891,8 km² Deutschland Deutschland Deutsch
Hamburg 1,845 Mio 755,2 km² Deutschland Deutschland Deutsch
London 8,982 Mio 1572 km² Großbritannien Großbritanien Englisch
Paris 2,176 Mio 105,34 km² Frankreich Frankreich Französisch

Eine solche Abfrage nennt man Verbund oder Join. Man kann sie auch wie folgt formulieren:

SELECT *
FROM Stadt JOIN Staaten
ON Stadt.Staat = Staaten.Staat;

Auf das Ergebnis des Verbunds lassen sich dann wiederum Projektion und Selektion anwenden.

Video


Aufgaben

Lade die Datenbank Geo herunter und teste die Beispiele aus dem Video. Überlege dir eigene Beispiele und teste sie.

Datenbank Geo

Filtern von Daten

Projektion, Selektion und Verbund können kombiniert werden, um bestimmte Daten aus Datenbanktabellen herauszufiltern. Um die Filterung noch mehr zu verfeinern, können innerhalb der WHERE-Klausel noch logische und Vergleichsoperatoren genutzt werden.

Logische Operatoren

Operator Bedeutung
AND logisches UND, ist dann wahr wenn beide Bedingungen wahr sind
OR logisches ODER, ist dann wahr, wenn mindestens eine der Bedingungen wahr ist
NOT logisches NICHT, ist dann wahr, wenn die Bedingung falsch ist

Beispiele

Vergleichsoperatoren

(Liste nicht vollständig)

Operator Bedeutung
= gleich
<> ungleich
< kleiner
> größer
<= kleiner gleich
>= größer gleich
LIKE Vergleich mit einem Muster, % steht für beliebig viele Zeichen, _ steht für ein Zeichen
BETWEEN zusammenhängender Bereich, Start- und Endwert gehören nicht zum Bereich

Beispiele

Neben logischen und Vergleichsoperatoren gibt es noch weitere Operatoren

Operatoren die die Ausgabe verfeinern

Operator Bedeutung
AS benennt den Spaltenname in der Ausgabe um
ORDER BY Spalte ASC ordnet die Ausgabe nach der angegebenen Spalte aufsteigend (ASC kann weggelassen werden)
ORDER BY Spalte DESC ordnet die Ausgabe nach der angegebenen Spalte absteigend
DISTINCT gibt mehrfach vorkommende gleiche Datensätze nur einmal aus

Beispiele

Mathematische Operatoren

Operator Bedeutung
COUNT gibt die Anzahl der Datensätze aus
MAX gibt das Maximum der Datensätze aus
MIN gibt das Minimum der Datensätze aus
AVG gibt das arithmetische Mittel der Datensätze aus
+,-,*,/ Operatoren für die Grundrechenoperationen

Beispiele

Gruppieren der Ausgabe

Mit dem Operator GROUP BY kann die Ausgabe in Gruppen zerlegt werden über die dann wieder SQL-Befehle angewendet werden können.

Beispiel

Geschachtelte SQL-Befehle

In der WHERE-Klausel kann man wiederum einen vollständigen SQL-Befehl in Klammern verwenden.

Beispiel

Alle Beispiele zum Filtern von Daten >>

Video

Dieses Video bezieht sich auf die Datenbank „Literatur“, die bei den Beispielen zum Filtern von Daten vorgestellt wird.


Aufgaben

Teste alle Beispiele aus dem Video und von der Beispielseite zum Filtern von Daten!

literatur.zip

datenbanken/sql.txt · Zuletzt geändert: 2021/12/21 06:39 von lutz