SQL
Was ist SQL?
SQL (Structured Query Language) ist eine Datenbank-Sprache, mit der man Datenbanken erstellen, verwalten und auslesen kann.
SQL hat drei Untersprachen DDL, DML, DQL.
SQL Untersprachen
DDL
DDL steht für Data Definition Language. Mit DDL kann man Datenbanken und Tabellen erstellen/löschen. Wenn man eine Datenbank mit einem Haus vergleicht, dann ist DDL für den Rohbau, also die Wände und das Dach zuständig.
DDL-Befehle
| Befehl | Bedeutung | Beispiel |
|---|---|---|
| CREATE [TABLE][DATABASE] | Erstellt eine Tabelle oder Datenbank | CREATE DATABASE Mitabeiter; |
| DROP [TABLE][DATABASE] | Lösche eine Datenbank oder Tabelle endgültig | DROP DATABASE Mitarbeiter; |
DML
DML steht für Data Manipulation Language. Mit DDL kann man Datensätze in einer Tabelle bearbeiten, löschen und Einfügen. In einem Haus, wäre die DML für die Einrichtung zuständig.
DML-Befehle
| Befehl | Bedeutung | Beispiel |
|---|---|---|
| INSERT | Fügt einen Datensatz ein | INSERT INTO mitarbeiter VALUES (1, "Peter", "Maier") |
| UPDATE | Updatet den Inhalt eines oder mehrerer Datensätze | UPDATE mitarbeiter SET name="Mayer" WHERE ID = 1; |
| DELETE | Löscht einen oder meherer Datensätze aus einer Tabelle | DELETE FROM mitarbeiter WHERE ID = 1; |
DQL
DQL steht für Data Query Language. Mit DQL werden Datensätze aus Tabellen ausgelesen und sortiert.
DQL-Befehle
| Befehl | Bedeutung | Beispiel |
|---|---|---|
| SELECT | Auslesen einer oder mehrer Datensätze | SELECT * FROM mitarbeiter; |
Unabhängige Befehle
Neben den Untersprachen von SQL gibt es noch weiter Befehle, die keiner Untersprache angehören.
| Befehl | Bedeutung | Beispiel |
|---|---|---|
| SHOW [TABLES][DATABASES] | Listet alle Datenbanken oder Tabellen auf | SHOW DATABASES; SHOW TABLES; |
| USE | Wechsel in eine Datenbank um mit dessen Tabellen zu arbeiten | USE mitarbeiter; |
| SOURCE | List eine .sql Datei ein | SOURCE test-user.sql |
| EXPLAIN / DESC | Zeigt den Aufbau einer Tabelle | SHOW kunden; |
| UNITE | Verbindet zwei SELECT Statements miteinander | SELECT name FROM Test UNITE SELECT name FROM Test2 |
Select Statements
Aufbau
Jedes SELECT-Statement hat den selben Aufbau:
SELECT <Attribute>
FROM <Tabelle>
WHERE <Filter>
ORDER BY <ASC(aufsteigend)/DESC(absteigend)>
LIMIT <max. Anzahl an Datensätzen>
Beispiel:
SELECT name
FROM mitarbeiter
ORDER by DESC
LIMIT 5;
SELECT *
FROM mitarbeiter
WHERE name = "Peter" AND vorname = "Hans";
Joins
Joins werden verwendet um in einem SELECT-Statement mehrere Tabellen zu Verknüpfen.
Beispiel Tabellen:
Mitarbeiter
| id | name | vorname | gid |
|---|---|---|---|
| 1 | Hans | Peter | 1 |
| 4 | Schult | Birgit | 2 |
| 5 | Müller | Johanna | 4 |
Gehalt
| id | gehalt |
|---|---|
| 4 | 1200 |
| 1 | 1500 |
| 7 | 1300 |
INNER JOIN
Bei einem INNER JOIN werden nur die Daten zurück gegeben, bei denen eine Übereinstimmung gefunden wurden.
Aufbau:
SELECT name, vorname, gehalt
FROM Mitarbeiter
INNER JOIN gehalt g on gid = g.id
Alternative:
SELECT name, vorname, gehalt
FROM Mitarbeiter, gehalt g
WHERE gid = g.id;
Rückgabe
| name | vorname | gehalt |
|---|---|---|
| Hans | Peter | 1500 |
| Schulz | Birgit | 1200 |
OUTER JOIN
LEFT JOIN
RIGHT JOIN
Funktionen
Datum
| Funktion | Aufbau | Erklärung | Beispiel | Ausgabe |
|---|---|---|---|---|
| DATE() | DATE(<string>) | Filter das Datum aus einem "Date" oder einer "Datetime" | DATE('2003-12-31 01:02:03') | '2003-12-31' |
| YEAR() | YEAR(<datum>) | Gibt das Jahr des angegenbenen Datums wieder | YEAR("2004-11-16") | 2004 |
| MONTH() | MONTH(<datum>) | Gibt den Monat des angegebenen Datums wieder | MONTH("2004-11-16") | 11 |
| DAY() | DAY(<datum>) | Gibt den Tag des angegebenen Datums wieder | DAY("2004-11-16") | 16 |
| TIMESTAMPDIFF() | TIMESTAMPDIFF(<zubedrachtender Wert>, <datum1>, <datum2>) | Gibt die Differenz von zwei Daten aus | TIMESTAMP(YEAR, "2001-04-22", "2022-01-18") | 20 |
| DATE_FORMAT | DATE_FORMAT(<datum>, <format>) | Gibt das angegebene Datum in dem angegebenen Format aus | DATE_FORMAT("2022-02-22", "%d.%m.%y") | 22.02.22 |
| DATEDIFF() | DATEDIFF(<datum1>, <datum2>) | Gibt den Unterschied von zwei Daten in Tagen aus | DATEDIFF("2002-08-31", "2002-08-01") | 30 |
Sonstige
| Funktion | Aufbau | Erklärung | Beispiel | Ausgabe |
|---|---|---|---|---|
| TRUNCATE() | TRUNCATE(<zahl>, <anzahl an nachkommastellen>) | Schneidet bis auf eine gegebene Nachkommastelle alles ab | TRUNCATE(298.567, 1) | 298.5 |
| MAX() | MAX(<attribut>) | Gibt den größten Wert aus | MAX(preis) | 25.98 |
| MIN() | MIN(<attribut>) | Gibt den kleinsten Wert aus | MIN(preis) | 2.90 |
| CONCAT() | CONCAT(<string1>, <string2>) | Fügt mehrere Werte zusammen | CONCAT("Sven", "", "Ziegler") | "Sven Ziegler" |
ANSI-SPARC Model
Das ANSI-SPARC Model zeigt, den Aufbau einer Datenbank.
| Ebene | Beschreibung |
|---|---|
| Externe Ebene | Hier werden die Rechte auf die Datenbank vergeben. Zudem wird darüber auf die Datenbank vom End-User zugegriffen |
| Konzeptionelle Ebene | Hier wird der theoretische Aufbau (Konzept) der Datenbank erstellt, also welche Tabellen mit welchen Attributen. |
| Physische Ebene | Hier werden die Daten physikalisch auf einer Festplatte abgelegt und gespeichert, darum kümmert sich das RDBMS (Datenbank Management System) |

Weitere Fachbegriffe
RDBMS
Ein RDBMS ist ein Relationales Datenbank Management System. Es kümmert sich um die Verwaltung und Strukturierung der Daten in einer Datenbank. Darin werden die Tabellen erstellt, Datensätze eingefügt und Daten abgerufen.