Anfragen an Datenbanken - SQL

Im Abschnitt Was ist ein Datenbanksystem? 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.

Für unsere Beispiele verwenden wir Tabellen aus der Datenbank von Instahub. Zunächst beschränken wir uns auf die Tabelle users:

Teste die folgenden Beispiele jeweils in Instahub!

Anzeige der gesamten Tabelle

Mit dem SQL-Befehl

SELECT * FROM users;

lässt sich die Tabelle users vollständig anzeigen. Der * steht Dabei für alle Attribute der Tabelle.

Projektion

Eine Projektion filtert bestimmte Spalten aus einer Datenbanktabelle heraus.

Beispiel

Gib die Spalten id, username und email der Tabelle users aus!

SELECT id, username, email FROM users

Selektion

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

Beispiel

Gib alle Datensätze der Tabelle users vollständig aus, bei denen der Nutzername 'max383' ist!

SELECT * FROM users WHERE username = 'max383'

Attributwerte müssen in einfachen Anführungsstrichen stehen! ('max383')

Selektion und Projektion

Bei Anfragen werden in der Regel Selection und Projektion kombiniert.

Beispiel:

Gib von allen Datensätze der Tabelle users die Spalten username und name aus, bei denen der Nutzername 'max383' ist!

SELECT username, name FROM users WHERE username = 'max383'

Formulierung der Bedingung

Mehrere Bedingungen können durch NOT, OR und AND verbunden sein.

Zum Vergleich können die Operatoren >, <, >=, <=, <>, = und like genutzt werden.

Beispiel 1

Gib alle Eigenschaften aller Nutzer aus, die größer sind als 160 cm.

SELECT * FROM users WHERE centimeters > '160'

Beispiel 2

Gib Nutzername und Größe aller Nutzer aus, die größer als 161 cm und kleiner als 170 cm sind.

SELECT username, centimeters FROM users WHERE centimeters > '161' AND centimeters < '170'

Beispiel 3

Gib Nutzername Größe und Geschlecht aller Nutzer aus, die größer als 170 cm oder weiblich sind.

SELECT username, centimeters, gender FROM users WHERE centimeters > '170' OR gender = 'female'

like

Den Vergleichsoperator like nutzt man, wenn bestimmte Muster in Zeichenketten sucht. In den Zeichenketten steht dabe % für beliebig viele Zeichen und _ für ein einzelnes Zeichen.

Beispiel 4

Gib alle Daten aller Nutzer aus, deren Nutzername mit 'a' beginnt.

SELECT * FROM users WHERE username LIKE 'a%'

Beispiel 5

Gib alle Daten aller Nutzer aus, bei denen der zweite Buchstabe im Nutzernamen ein a ist.

SELECT * FROM users WHERE username LIKE '_a%'

Verfeinerung der Ausgabe

Manchmal kann es vorkommen, dass Datensätze mehrfach auftreten:

Beispiel 1

SELECT gender FROM users