Inhaltsverzeichnis

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:

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:

$\text{users}\left( \underline{\text{id}}\text{, username, email, password, name, bio, gender, birthday, city, country, centimeters,} \\ \text{ avatar, role, is_active, remember_token, created_at, updated_at}\right)$

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 

Um jeden Datensatz einfach auszugeben kann man das Schlüsselwort DISTINCT benutzen.

Beispiel 2

SELECT DISTINCT gender
FROM users 

Man kann auch die Ausgabe ordnen. Dabei ordnet

Das ASC kann auch weggelassen werden.

Beispiele 3 und 4

Gib alle Daten aller Nutzer geordnet nach Größe aus (absteigend und aufsteigend)!

SELECT *
FROM users
ORDER BY centimeters DESC
SELECT *
FROM users
ORDER BY centimeters