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)

DBMS-ANSI_SPARC.png

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.