SQL

Geschätzte Lektüre: 5 Minuten 110 Ansichten

Was ist SQL?

SQL (Structured Query Language) ist die standardisierte Sprache zur Kommunikation mit relationalen Datenbanksystemen. Sie wurde in den 1970er Jahren von IBM entwickelt und ist seit 1986 als ISO/ANSI-Standard definiert. Alle gängigen RDBMS (MySQL, PostgreSQL, MariaDB, Oracle, Microsoft SQL Server) unterstützen SQL — mit geringen systemspezifischen Abweichungen.

SQL ist in mehrere Unterbereiche gegliedert:

  • DDL (Data Definition Language): Befehle zur Strukturdefinition — CREATE, ALTER, DROP.
  • DML (Data Manipulation Language): Befehle zur Datenmanipulation — INSERT, UPDATE, DELETE.
  • DQL (Data Query Language): Abfragebefehle — SELECT.
  • DCL (Data Control Language): Rechteverwaltung — GRANT, REVOKE.
  • TCL (Transaction Control Language): Transaktionskontrolle — COMMIT, ROLLBACK, SAVEPOINT.

6.2 Datentypen in SQL

Jede Spalte in einer Tabelle muss einen Datentyp haben, der den möglichen Wertebereich festlegt. Die wichtigsten SQL-Datentypen:

Ganzzahlige Typen

  • INT / INTEGER — Standardganzzahl (typischerweise 4 Byte, Bereich ca. ±2,1 Milliarden)
  • TINYINT — Kleine Ganzzahl (1 Byte, 0–255 ohne Vorzeichen)
  • BIGINT — Große Ganzzahl (8 Byte, für sehr große Zahlen)

Dezimalzahlen

  • DECIMAL(p, s) — Exakte Dezimalzahl mit p Gesamtstellen und s Nachkommastellen. Ideal für Geldbeträge.
  • FLOAT / DOUBLE — Gleitkommazahlen; ungenau bei Berechnungen, daher nicht für Geldbeträge geeignet.

Zeichenketten

  • CHAR(n) — Feste Zeichenkettenlänge von n Zeichen. Nicht genutzter Platz wird mit Leerzeichen aufgefüllt.
  • VARCHAR(n) — Variable Zeichenkette, maximal n Zeichen. Speichert nur den tatsächlichen Inhalt.
  • TEXT — Lange Textinhalte ohne feste Längenbegrenzung.

Datums- und Zeittypen

  • DATE — Datum im Format JJJJ-MM-TT (z. B. 2024-03-15).
  • TIME — Uhrzeit im Format HH:MM:SS.
  • DATETIME / TIMESTAMP — Kombination aus Datum und Uhrzeit.

Weitere Typen

  • BOOLEAN — Wahrheitswert (TRUE / FALSE). In MySQL als TINYINT(1) implementiert.
  • BLOB — Binary Large Object, für Binärdaten (Bilder, Dateien).
DatentypVerwendungBeispielwert
INTGanzzahlen, IDs42, 1001, -5
DECIMAL(10,2)Geldbeträge1999.99
VARCHAR(100)Namen, E-Mails‚Hans Müller‘
DATEGeburtsdaten, Termine‚2024-03-15‘
BOOLEANJa/Nein-FelderTRUE / FALSE
TEXTLange Beschreibungen‚Lorem ipsum…‘

NULL in SQL

NULL ist ein besonderer Wert in SQL, der das Fehlen eines bekannten Wertes kennzeichnet — nicht zu verwechseln mit dem Wert 0 oder einer leeren Zeichenkette. NULL bedeutet: der Wert ist unbekannt oder nicht anwendbar.

  • NULL ist nicht gleich NULL: In SQL gilt: NULL = NULL ergibt nicht TRUE, sondern UNKNOWN. Vergleiche mit NULL müssen mit IS NULL oder IS NOT NULL durchgeführt werden.
  • Arithmetik mit NULL: Jede Rechenoperation mit NULL ergibt NULL. 5 + NULL = NULL.

Empfehlung: Spalten, die konzeptuell immer einen Wert haben müssen (z. B. der Name einer Person), sollten mit NOT NULL definiert werden.

Datenbank erstellen

Eine neue Datenbank wird mit dem Befehl CREATE DATABASE erstellt:

CREATE DATABASE meine_datenbank
    CHARACTER SET utf8mb4
    COLLATE utf8mb4_unicode_ci;

Der Zeichensatz utf8mb4 unterstützt alle Unicode-Zeichen inklusive Emojis und ist für mehrsprachige Anwendungen empfohlen. Die Collation bestimmt die Sortier- und Vergleichsregeln.

Um auf die Datenbank zu wechseln:

USE meine_datenbank;

Tabellen erstellen

Tabellen werden mit CREATE TABLE erstellt. Dabei werden alle Spalten mit ihren Datentypen und Constraints definiert:

CREATE TABLE Kunden (
    KundenID    INT             NOT NULL AUTO_INCREMENT,
    Vorname     VARCHAR(50)     NOT NULL,
    Nachname    VARCHAR(50)     NOT NULL,
    Email       VARCHAR(100)    UNIQUE,
    Geburtsdatum DATE,
    Aktiv       BOOLEAN         NOT NULL DEFAULT TRUE,
    PRIMARY KEY (KundenID)
);

AUTO_INCREMENT

AUTO_INCREMENT (MySQL/MariaDB-spezifisch; in PostgreSQL: SERIAL oder GENERATED ALWAYS AS IDENTITY) weist dem Primärschlüssel automatisch einen eindeutigen, aufsteigenden Wert zu. So muss beim Einfügen neuer Datensätze kein Wert für die ID angegeben werden — das DBMS übernimmt die Vergabe.

Tabelle mit Fremdschlüssel erstellen:

CREATE TABLE Bestellungen (
    BestellID   INT             NOT NULL AUTO_INCREMENT,
    Bestelldatum DATE           NOT NULL,
    KundenID    INT             NOT NULL,
    PRIMARY KEY (BestellID),
    FOREIGN KEY (KundenID) REFERENCES Kunden(KundenID)
        ON DELETE RESTRICT
        ON UPDATE CASCADE
);

Constraints erstellen und ändern

Constraints können beim Erstellen einer Tabelle definiert oder nachträglich hinzugefügt werden:

-- Constraint nachträglich hinzufügen:
ALTER TABLE Kunden
    ADD CONSTRAINT chk_geburtsdatum
    CHECK (Geburtsdatum < CURDATE());

-- Constraint entfernen:
ALTER TABLE Kunden DROP CONSTRAINT chk_geburtsdatum;
Dieses Dokument teilen

SQL

Oder Link kopieren

INHALT

Abonnieren

×
Cancel