Datentypen
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
TINYINT
1 Byte
-128
127
SMALLINT
2 Bytes
-32'768
32'767
MEDIUMINT
3 Bytes
-8'388'608
8'388'607
INTEGER
4 Bytes
-2'147'483'648
2'147'483'647
BIGINT
8 Bytes
-263
263-1
Zudem gibt es noch den Zusatz UNSIGNED
, also Zahlen ohne Vorzeichen.
Fliesskommazahlen
DOUBLE
8 Bytes
15 Stellen
DECIMAL(M, D)
Je nach dem
M
Stellen, D
Nachkommastellen
Textformate
CHAR(m)
Eine Zeichenkette fester Länge mit max. 255 Zeichen
VARCHAR(m)
Eine Zeichenkette variabler Länge mit max. 65'535 Zeichen
TEXT
Längere Texte, variabler Länge, extern gespeichert, etwas langsamer
LONGTEXT
Ein 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
DATE
YYYY-MM-DD
'1000-01-01
' bis '9999-12-31
'
TIME
[h]hh:mm:ss
'-838:59:59
' bis '838:59:59
'
DATETIME
YYYY-MM-DD hh:mm:ss
'1000-01-01 00:00:00
' bis '9999-12-31 23:59:59
'
TIMESTAMP
YYYY-MM-DD hh:mm:ss
'1970-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
BOOL
Wahr oder falsch
ENUM
Liste von möglichen Werten
BLOB
Dateien (z.B. Bilder)
Zuletzt aktualisiert
War das hilfreich?