Skip to main content
Wie auch bei Programmiersprachen wie C oder Java gibt es in Datenbanken Datentypen. Es ist wichtig das wir unsere Daten mit einem passenden Datentyp in der Datenbank ablegen, da dies Einfluss auf Speicherbedarf und Performance der Datenbank, sowie die Integrität der Daten hat. Den Grossteil unserer Daten können wir entweder Ganzzahlen, Kommazahlen, Zeichenketten oder Datum/Zeit zuordnen. Für diese Art von Daten gibt es auch entsprechend diverse Datentypen in unterschiedlichen Grössen.

Ganzzahlen

DatentypSpeicherverbrauchMinimaler WertMaximaler Wert
TINYINT1 Byte-128127
SMALLINT2 Bytes-32’76832’767
MEDIUMINT3 Bytes-8’388’6088’388’607
INTEGER4 Bytes-2’147’483’6482’147’483’647
BIGINT8 Bytes-263263-1
Zudem gibt es noch den Zusatz UNSIGNED, also Zahlen ohne Vorzeichen.

Fliesskommazahlen

DatentypSpeicherverbrauchGenauigkeit
DOUBLE8 Bytes15 Stellen
DECIMAL(M, D)Je nach demM Stellen, D Nachkommastellen

Textformate

DatentypEigenschaft
CHAR(m)Eine Zeichenkette fester Länge mit max. 255 Zeichen
VARCHAR(m)Eine Zeichenkette variabler Länge mit max. 65’535 Zeichen
TEXTLängere Texte, variabler Länge, extern gespeichert, etwas langsamer
LONGTEXTEin Text mit variabler Länge, max. 4.2GB

Verschlüsselung

In SQL ist es möglich Daten mit dem SHA256 bzw. SHA512 Algorithmus zu verschlüsseln. Das sieht so aus:
INSERT INTO Users (Name, Password) 
VALUES
    ('Marco',  sha2('Passwort123', 512)),
    ('Martin', sha1('Hallo0987'));
Der Wert sieht im Feld dann beispielsweise so aus: 5bf77a370c08f5f5b20fab75849116...

Datum/Zeit

DatentypFormatGültigkeitsbereich
DATEYYYY-MM-DD1000-01-01’ bis ‘9999-12-31
TIME[h]hh:mm:ss-838:59:59’ bis ‘838:59:59
DATETIMEYYYY-MM-DD hh:mm:ss1000-01-01 00:00:00’ bis ‘9999-12-31 23:59:59
TIMESTAMPYYYY-MM-DD hh:mm:ss1970-01-01 00:00:00’ bis ‘2038-01-19 03:14:07’ UTC

CURRENT_DATE

In SQL gibt es noch die Variable CURRENT_DATE diese gibt uns das aktuelle Datum zurück im TIMESTAMP-Format. Das ist beispielsweise für Abfragen praktisch:
SELECT * FROM Persons 
WHERE BirthDate < CURRENT_DATE;

TIMESTAMP

Ein Timestamp ist beispielsweise praktisch für solche Tabellen:
CREATE TABLE Users (
	Id INT PRIMARY KEY AUTO_INCREMENT,
	Name VARCHAR(40) NOT NULL,
	Password VARCHAR(256) NOT NULL,
	CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
	UpdatedAt TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

Weitere Datentypen

BOOLWahr oder falsch
ENUMListe von möglichen Werten
BLOBDateien (z.B. Bilder)