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

Typ Beschreibung
INT, INTEGER Ganze Zahlen, 32 Bit, -2 Mrd. bis +2 Mrd.
SMALLINT Ganze Zahlen, 16 Bit, -32768 bis 32767
BIGINT 64 Bit, -263 bis 263-1 (falls vorhanden)
DECIMAL(p,s) Festkommatyp (p Dezimalstellen insgesamt, s Dezimalstellen hinter dem Komma)
FLOAT Gleitkommatyp, 32 Bit
DOUBLE Gleitkommatyp, 64 Bit
BOOLEAN False, True (0 oder 1)
BLOB, (LONG BLOB, MEDIUM BLOB) Binary large object, Für binäre Dateien (z.B. Bilder)
DATE Datum (mögliche Schreibweise: YYYY-MM-DD, z.B.: 2021-12-31)
DATETIME Datum + Uhrzeit
TIMESTAMP Datum + 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
TEXT Sehr 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>];
Option Beschreibung
NOT NULL Pflichtfeld, Wert darf nicht NULL sein
PRIMARY KEY Feld ist der Primärschlüssel
AUTO_INCREMENT Zahlenfelder werden automatisch erhöht
DEFAULT Der 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

Funktion Beschreibung
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).

Funktion Beschreibung
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