Zum Inhalt springen

SQL / MySQL

In diesem Fall wird der SQL-Dialekt MySQL beschrieben.

SQL ist eine sehr beliebte Aufgabe in der alten Prüfungsverordnung gewesen. Für die Prüfung ist dieses Wissen ein muss.

In der Prüfung ist bei SQL eine Cheatsheet beigelegt. Es lohnt sich diese anzuschauen und fehlende Syntax auswendig zu lernen.

Datentypen

TypBeschreibung
INT, INTEGERGanze Zahlen, 32 Bit, -2 Mrd. bis +2 Mrd.
SMALLINTGanze Zahlen, 16 Bit, -32768 bis 32767
BIGINT64 Bit, -263 bis 263-1 (falls vorhanden)
DECIMAL(p,s)Festkommatyp (p Dezimalstellen insgesamt, s Dezimalstellen hinter dem Komma)
FLOATGleitkommatyp, 32 Bit
DOUBLEGleitkommatyp, 64 Bit
BOOLEANFalse, True (0 oder 1)
BLOB, (LONG BLOB, MEDIUM BLOB)Binary large object, Für binäre Dateien (z.B. Bilder)
DATEDatum (mögliche Schreibweise: YYYY-MM-DD, z.B.: 2021-12-31)
DATETIMEDatum + Uhrzeit
TIMESTAMPDatum + Uhrzeit (Milli-Sekunden seit 1.1.1970 00:00 Uhr
CHAR(s)Zeichenfolge mit Länge s, wird ggf. mit Leerzeichen aufgefüllt
VARCHAR(s)Zeichenfolge mit Maximal-Länge s, ggf. auch kürzer
TEXTSehr große Texte

Datenbanken verwalten

Datenbank anlegen

CREATE DATABASE [IF NOT EXISTS] <Datenbankname>;

Datenbank auswählen

USE <Datenbankname>;

Datenbanken auflisten

SHOW DATABASES;

Datenbank löschen

DROP DATABASE <Datenbankname>;

Tabellen verwalten

Tabellen auflisten

SHOW TABLES;

Tabellenaufbau anzeigen

DESC <Tabellenname>;

Tabelle anlegen

CREATE TABLE <Tabellenname> (<Attributdefinition1>, <Attributdefinition2>, ...);

Attributdefinition

    <Attributname> <Datentyp> [PRIMARY KEY] [AUTO_INCREMENT] [NOT NULL] [DEFAULT <Wert>];
OptionBeschreibung
NOT NULLPflichtfeld, Wert darf nicht NULL sein
PRIMARY KEYFeld ist der Primärschlüssel
AUTO_INCREMENTZahlenfelder werden automatisch erhöht
DEFAULTDer Standartwert für dieses Feld wird auf “Wert” gesetzt.

Tabelle löschen

DROP TABLE <Tabellenname>;

Bestehende Tabellen ändern

Spalte hinzufügen

ALTER TABLE <Tabellenname> ADD <Attributdefinition>;

Spalte löschen

ALTER TABLE <Tabellenname> DROP <Attributname>;

Spalte ändern

ALTER TABLE <Tabellenname> MODIFY <Attributdefinition>;

Daten bearbeiten

Daten einfügen

INSERT INTO <Tabellenname> (Attributliste) VALUES (Wertliste);

Daten löschen

DELETE FROM <Tabellenname>;

Daten aktualisieren

UPDATE <Tabellenname> SET <Datenfeld1>=<neuer Wert1>, <Datenfeld2>=<neuer Wert2>;

Where Bedingungen

Where kann an die meisten Befehle angehangen werden und sorgt so dafür, dass nur bestimmte Datensätze angesprochen werden.

Mathematische Operationen:     =, !=, >, <, >=, <=, +, -, *, /
Boolesche Operatoren:         AND, OR, NOT
Textmustervergleich:         LIKE mit % für beliebige Zeichenkette (auch leer) und _ für einzelnes Zeichen z.B.: name LIKE "H%"
Bereichsoperator:             BETWEEN x AND y
Mengenvergleich:             IN(wert1, wert2, …)

Einfache Datenabfragen

SELECT * | spaltenliste | berechnung [TOP anzahl]
FROM tabelle(n)
[WHERE bedingung]
[GROUP BY spalten(n)]
[HAVING bedingung]
[ORDER BY spalte(n) [ASC | DESC]]
[LIMIT anzahl | start, anzahl];

Funktionen in Abfragen

Normale Funktionen

FunktionBeschreibung
CURDATE()Gibt das aktuelle Datum zurück
DATEDIFF(datum1, datum2)Berechnet die Datumsdifferenz in Tagen
YEAR(datum)Gibt das Jahr zurück
MONTH(datum)Gibt das Monat zurück
DAY(datum)Gibt den Tag zurück
DATE_ADD(datum, intervall)Addiert das Intervall zum Datum

Aggregatsfunktionen

Sie berechnen ein Ergebnis aus den Werten einer Spalte (mehrere Datensätze).

FunktionBeschreibung
COUNT(feld)Zählt alle nicht-null-Werte innerhalb einer Spalte
COUNT(*)Zählt die Datensätze/Zeilen
SUM(feld)Berechnet die Summe einer ganze Spalte
AVG(feld)Berechnet den Durchschnitt einer ganze Spalte (NULL-Werte zählen nicht mit)
MIN(feld)Sucht den kleinsten Wert einer ganzen Spalte.
MAX(feld)Sucht den größten Wert einer ganzen Spalte.

Gruppierungen

Beispiel

SELECT ort, COUNT(ort) FROM kunde GROUP BY ort;

SELECT ort, COUNT(ort) FROM kunde GROUP BY ort HAVING COUNT(ort) > 100;

Abfragen über mehrere Tabellen (Joins)

SQL Joins Wikipedia Commons

Inner Join

Ein Inner Join gibt die Schnittmenge der Tabellen zurück. Wenn zum Beispiel eine ID nur in einer Tabelle vorkommt wird sie nicht angezeigt.

Left Join

Ein Left Join gibt alle Daten von der linken Tabelle zurück und zusätzlich die passende Schnittmenge der zweiten.

Right Join

Gibt alle Daten der rechten Tabelle zurück und zusätzlich die Schnittmenge der linken.

Full Outer Join / Full Join

Gibt alle Daten aus beiden Tabellen zurück.

Index

Indexe werden in Relationalen Datenbanken dazu benutzt, Daten schneller abfragen zu können.

CREATE INDEX index_name
ON table_name (column1, column2, ...);

Mit dem Keyword UNIQUE können doppelte Werte ausgeschlossen werden.

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);

Erklärungsvideos 📹

MySQL - The Basics // Learn SQL in 23 Easy Steps

MySQL Tutorial for Beginners [Full Course]

SQL Joins: Difference Between Inner/Left/Right/Outer Joins

Links 🔗

Stefan Macke - Aufgaben in der schriftlichen Prüfung

Online Übungen

Einfaches interaktives Online-SQL-Training für Einsteiger

Technische Universität Kaiserslautern - Interaktives Spiel

Für fortgeschrittene in interaktives Spiel auf englisch