Jede Spalte in einer Datenbanktabelle muss einen Namen und einen Datentyp haben.
Ein SQL Entwickler muss beim Erstellen einer Tabelle entscheiden, welche Art von Daten in jeder Spalte gespeichert werden. Der Datentyp ist eine Richtlinie für SQL, um zu verstehen, welche Art von Daten in jeder Spalte erwartet wird, und er gibt auch an, wie SQL mit den gespeicherten Daten interagiert.
Hinweis: Datentypen können in verschiedenen Datenbanken unterschiedliche Namen haben. Und selbst wenn der Name gleich ist, können die Größe und andere Details unterschiedlich sein! Lesen Sie immer die Dokumentation!
MySQL Datentypen (Version 8.0)
In MySQL gibt es drei Hauptdatentypen: Zeichenfolge, numerisch sowie Datum und Uhrzeit.
Zeichenfolgendatentypen
Datentyp
Beschreibung
CHAR(size)
Eine Zeichenfolge mit FESTER Länge (kann Buchstaben, Zahlen und Sonderzeichen enthalten). Der Parameter size gibt die Spaltenlänge in Zeichen an – kann zwischen 0 und 255 liegen. Der Standardwert ist 1.
VARCHAR(size)
Eine Zeichenfolge mit VARIABLER Länge (kann Buchstaben, Zahlen und Sonderzeichen enthalten). Der Parameter size gibt die maximale Zeichenfolgenlänge in Zeichen an – kann zwischen 0 und 65535 liegen.
BINARY(size)
Gleich CHAR(), speichert aber binäre Byte-Strings. Der Parameter size gibt die Spaltenlänge in Bytes an. Der Standardwert ist 1.
VARBINARY(size)
Gleich VARCHAR(), speichert aber binäre Bytefolgen. Der Größenparameter gibt die maximale Spaltenlänge in Bytes an.
TINYBLOB
Für BLOBs (Binary Large Objects). Maximale Länge: 255 Bytes
TINYTEXT
Enthält eine Zeichenfolge mit einer maximalen Länge von 255 Zeichen
TEXT(size)
Enthält einen String mit einer maximalen Länge von 65.535 Bytes
BLOB(size)
Für BLOBs (Binary Large Objects). Bietet Platz für bis zu 65.535 Byte Daten
MEDIUMTEXT
Enthält eine Zeichenfolge mit einer maximalen Länge von 16.777.215 Zeichen
MEDIUMBLOB
Für BLOBs (Binary Large Objects). Bietet Platz für bis zu 16.777.215 Byte Daten
LONGTEXT
Enthält eine Zeichenfolge mit einer maximalen Länge von 4.294.967.295 Zeichen
LONGBLOB
Für BLOBs (Binary Large Objects). Bietet Platz für bis zu 4.294.967.295 Byte Daten
ENUM(val1, val2, val3, …)
Ein String-Objekt, das nur einen Wert haben kann, der aus einer Liste möglicher Werte ausgewählt wird. Sie können bis zu 65535 Werte in einer ENUM-Liste auflisten. Wenn ein Wert eingefügt wird, der nicht in der Liste enthalten ist, wird ein leerer Wert eingefügt. Die Werte werden in der Reihenfolge sortiert, in der Sie sie eingeben.
SET(val1, val2, val3, …)
Ein String-Objekt, das 0 oder mehr Werte haben kann, die aus einer Liste möglicher Werte ausgewählt werden. Sie können bis zu 64 Werte in einer SET Liste auflisten.
Numerische Datentypen
Datentyp
Beschreibung
BIT(size)
Ein Bit-Werttyp. Die Anzahl der Bits pro Wert wird in der Größe angegeben. Der Größenparameter kann einen Wert zwischen 1 und 64 enthalten. Der Standardwert für die Größe ist 1.
TINYINT(size)
Eine sehr kleine Ganzzahl. Der vorzeichenbehaftete Bereich reicht von -128 bis 127. Der vorzeichenlose Bereich reicht von 0 bis 255. Der Größenparameter gibt die maximale Anzeigebreite an (255).
BOOL
Null wird als falsch betrachtet, Werte ungleich Null werden als wahr betrachtet.
BOOLEAN
Gleich BOOL
SMALLINT(size)
Eine kleine Ganzzahl. Der vorzeichenbehaftete Bereich reicht von -32768 bis 32767. Der vorzeichenlose Bereich reicht von 0 bis 65535. Der Größenparameter gibt die maximale Anzeigebreite an (255).
MEDIUMINT(size)
Eine mittlere Ganzzahl. Der vorzeichenbehaftete Bereich reicht von -8388608 bis 8388607. Der vorzeichenlose Bereich reicht von 0 bis 16777215. Der Größenparameter gibt die maximale Anzeigebreite an (255).
INT(size)
Eine mittlere Ganzzahl. Der vorzeichenbehaftete Bereich reicht von -2147483648 bis 2147483647. Der vorzeichenlose Bereich reicht von 0 bis 4294967295. Der Größenparameter gibt die maximale Anzeigebreite an (255).
INTEGER(size)
Gleich INT(Größe)
BIGINT(size)
Eine große Ganzzahl. Der vorzeichenbehaftete Bereich reicht von -9223372036854775808 bis 9223372036854775807. Der vorzeichenlose Bereich reicht von 0 bis 18446744073709551615. Der Größenparameter gibt die maximale Anzeigebreite an (255).
FLOAT(size, d)
Eine Gleitkommazahl. Die Gesamtzahl der Ziffern wird in size angegeben. Die Anzahl der Ziffern nach dem Dezimalpunkt wird im Parameter d angegeben. Diese Syntax ist in MySQL 8.0.17 veraltet und wird in zukünftigen MySQL-Versionen entfernt.
FLOAT(p)
Eine Gleitkommazahl. MySQL verwendet den p-Wert, um zu bestimmen, ob für den resultierenden Datentyp FLOAT oder DOUBLE verwendet werden soll. Wenn p zwischen 0 und 24 liegt, wird der Datentyp zu FLOAT(). Wenn p zwischen 25 und 53 liegt, wird der Datentyp zu DOUBLE().
DOUBLE(size, d)
Eine Gleitkommazahl in normaler Größe. Die Gesamtzahl der Ziffern wird in size angegeben. Die Anzahl der Ziffern nach dem Dezimalpunkt wird im Parameter d angegeben.
DOUBLE PRECISION(size, d)
DECIMAL(size, d)
Eine exakte Festkommazahl. Die Gesamtzahl der Ziffern wird in size angegeben. Die Anzahl der Ziffern nach dem Dezimalpunkt wird im Parameter d angegeben. Die maximale Zahl für size ist 65. Die maximale Zahl für d ist 30. Der Standardwert für size ist 10. Der Standardwert für d ist 0.
DEC(size, d)
Gleich DECIMAL(size,d)
Hinweis: Alle numerischen Datentypen können eine zusätzliche Option haben: UNSIGNED oder ZEROFILL. Wenn Sie die Option UNSIGNED hinzufügen, lässt MySQL keine negativen Werte für die Spalte zu. Wenn Sie die Option ZEROFILL hinzufügen, fügt MySQL der Spalte automatisch auch das Attribut UNSIGNED hinzu.
Datums- und Uhrzeitdatentypen
Datentyp
Beschreibung
DATE
Ein Date. Format: YYYY-MM-DD. Der unterstützte Bereich reicht von „1000-01-01“ bis „9999-12-31“.
DATETIME(fsp)
Eine Datums- und Uhrzeitkombination. Format: YYYY-MM-DD hh:mm:ss. Der unterstützte Bereich reicht von „1000-01-01 00:00:00“ bis „9999-12-31 23:59:59“. Durch Hinzufügen von DEFAULT und ON UPDATE in der Spaltendefinition wird eine automatische Initialisierung und Aktualisierung auf das aktuelle Datum und die aktuelle Uhrzeit erreicht.
TIMESTAMP(fsp)
Ein Zeitstempel. TIMESTAMP-Werte werden als Anzahl der Sekunden seit der Unix-Epoche (‚1970-01-01 00:00:00‘ UTC) gespeichert. Format: YYYY-MM-DD hh:mm:ss. Der unterstützte Bereich reicht von ‚1970-01-01 00:00:01‘ UTC bis ‚2038-01-09 03:14:07‘ UTC. Die automatische Initialisierung und Aktualisierung auf das aktuelle Datum und die aktuelle Uhrzeit kann mit DEFAULT CURRENT_TIMESTAMP und ON UPDATE CURRENT_TIMESTAMP in der Spaltendefinition angegeben werden.
TIME(fsp)
Eine Zeit. Format: hh:mm:ss. Der unterstützte Bereich reicht von „-838:59:59“ bis „838:59:59“.
YEAR
Ein Jahr im vierstelligen Format. Zulässige Werte im vierstelligen Format: 1901 bis 2155 und 0000. MySQL 8.0 unterstützt kein Jahr im zweistelligen Format.
SQL Server Datentypen
Zeichenfolgendatentypen
Datentyp
Beschreibung
Maximale Größe
Lagerung
char(n)
Zeichenfolge mit fester Breite
8.000 Zeichen
Definierte Breite
varchar(n)
Zeichenfolge mit variabler Breite
8.000 Zeichen
2 Bytes + Anzahl der Zeichen
varchar(max)
Zeichenfolge mit variabler Breite
1.073.741.824 Zeichen
2 Bytes + Anzahl der Zeichen
text
Zeichenfolge mit variabler Breite
2 GB Textdaten
4 Bytes + Anzahl der Zeichen
nchar
Unicode-Zeichenfolge mit fester Breite
4.000 Zeichen
Definierte Breite x 2
nvarchar
Unicode-Zeichenfolge mit variabler Breite
4.000 Zeichen
nvarchar(max)
Unicode-Zeichenfolge mit variabler Breite
536.870.912 Zeichen
ntext
Unicode-Zeichenfolge mit variabler Breite
2 GB Textdaten
binary(n)
Binärer String mit fester Breite
8.000 Byte
varbinary
Binärer String mit variabler Breite
8.000 Byte
varbinary(max)
Binärer String mit variabler Breite
2GB
image
Binärer String mit variabler Breite
2GB
Numerische Datentypen
Datentyp
Beschreibung
Lagerung
bit
Ganzzahl, die 0, 1 oder NULL sein kann
tinyint
Erlaubt ganze Zahlen von 0 bis 255
1 Byte
smallint
Erlaubt ganze Zahlen zwischen -32.768 und 32.767
2 Byte
int
Erlaubt ganze Zahlen zwischen -2.147.483.648 und 2.147.483.647
4 Byte
bigint
Erlaubt ganze Zahlen zwischen -9.223.372.036.854.775.808 und 9.223.372.036.854.775.807
8 Byte
decimal(p,s)
Zahlen mit fester Genauigkeit und Skalierung. Erlaubt Zahlen von -10^38 +1 bis 10^38 –1. Der Parameter p gibt die maximale Gesamtzahl der Ziffern an, die gespeichert werden können (sowohl links als auch rechts vom Dezimalpunkt). p muss ein Wert zwischen 1 und 38 sein. Der Standardwert ist 18. Der Parameter s gibt die maximale Anzahl der Ziffern an, die rechts vom Dezimalpunkt gespeichert werden können. s muss ein Wert zwischen 0 und p sein. Der Standardwert ist 0.
5-17 Byte
numeric(p,s)
Zahlen mit fester Genauigkeit und Skalierung. Erlaubt Zahlen von -10^38 +1 bis 10^38 –1. Der Parameter p gibt die maximale Gesamtzahl der Ziffern an, die gespeichert werden können (sowohl links als auch rechts vom Dezimalpunkt). p muss ein Wert zwischen 1 und 38 sein. Der Standardwert ist 18. Der Parameter s gibt die maximale Anzahl der Ziffern an, die rechts vom Dezimalpunkt gespeichert werden können. s muss ein Wert zwischen 0 und p sein. Der Standardwert ist 0.
5-17 Byte
smallmoney
Währungsdaten von -214.748,3648 bis 214.748,3647
4 Byte
money
Währungsdaten von -922.337.203.685.477,5808 bis 922.337.203.685.477,5807
8 Byte
float(n)
Gleitkommazahlen von -1,79E + 308 bis 1,79E + 308. Der Parameter n gibt an, ob das Feld 4 oder 8 Bytes enthalten soll. float(24) enthält ein 4-Byte-Feld und float(53) enthält ein 8-Byte-Feld. Der Standardwert von n ist 53.
4 oder 8 Bytes
real
Gleitkommazahlendaten von -3,40E + 38 bis 3,40E + 38
4 Byte
Datums und Uhrzeitdatentypen
Datentyp
Beschreibung
Lagerung
datetime
Vom 1. Januar 1753 bis 31. Dezember 9999 mit einer Genauigkeit von 3,33 Millisekunden
8 Byte
datetime2
Vom 1. Januar 0001 bis 31. Dezember 9999 mit einer Genauigkeit von 100 Nanosekunden
6-8 Bytes
smalldatetime
Vom 1. Januar 1900 bis zum 6. Juni 2079 mit einer Genauigkeit von 1 Minute
4 Byte
date
Nur ein Datum speichern. Vom 1. Januar 0001 bis zum 31. Dezember 9999
3 Byte
time
Speichern Sie eine Zeit nur mit einer Genauigkeit von 100 Nanosekunden
3-5 Bytes
datetimeoffset
Dasselbe wie datetime2 mit dem Zusatz einer Zeitzonenverschiebung
8-10 Byte
timestamp
Speichert eine eindeutige Nummer, die jedes Mal aktualisiert wird, wenn eine Zeile erstellt oder geändert wird. Der Zeitstempelwert basiert auf einer internen Uhr und entspricht nicht der Echtzeit. Jede Tabelle kann nur eine Zeitstempelvariable haben.
Andere Datentypen
Datentyp
Beschreibung
sql_variant
Speichert bis zu 8.000 Byte Daten verschiedener Datentypen, außer Text, NText und Zeitstempel
uniqueidentifier
Speichert eine global eindeutige Kennung (GUID)
xml
Speichert XML-formatierte Daten. Maximal 2 GB
cursor
Speichert einen Verweis auf einen Cursor, der für Datenbankoperationen verwendet wird
table
Speichert einen Ergebnissatz zur späteren Verarbeitung
MS Access Datentypen
Datentyp
Beschreibung
Lagerung
Text
Für Text oder Kombinationen aus Text und Zahlen verwenden. Maximal 255 Zeichen.
Memo
Memo wird für größere Textmengen verwendet. Speichert bis zu 65.536 Zeichen. Hinweis: Memofelder können nicht sortiert werden. Sie sind jedoch durchsuchbar.
Byte
Erlaubt ganze Zahlen von 0 bis 255
1 Byte
Integer
Erlaubt ganze Zahlen zwischen -32.768 und 32.767
2 Byte
Long
Erlaubt ganze Zahlen zwischen -2.147.483.648 und 2.147.483.647
4 Byte
Single
Gleitkommazahlen mit einfacher Genauigkeit. Kann die meisten Dezimalzahlen verarbeiten
4 Byte
Double
Gleitkommazahlen mit doppelter Genauigkeit. Kann die meisten Dezimalzahlen verarbeiten
8 Byte
Currency
Für Währungen verwenden. Bietet Platz für bis zu 15 Ziffern in Dollar plus 4 Dezimalstellen. Tipp: Sie können auswählen, welche Landeswährung verwendet werden soll.
8 Byte
AutoNumber
AutoWert-Felder geben jedem Datensatz automatisch eine eigene Nummer, normalerweise beginnend bei 1
4 Byte
Date/Time
Für Datum und Uhrzeit verwenden
8 Byte
Yes/No
Ein logisches Feld kann als Ja/Nein, Wahr/Falsch oder Ein/Aus angezeigt werden. Verwenden Sie im Code die Konstanten Wahr und Falsch (entspricht -1 und 0). Hinweis: Nullwerte sind in Ja/Nein-Feldern nicht zulässig.
1 Bit
Ole Object
Kann Bilder, Audio, Video oder andere BLOBs (Binary Large Objects) speichern
Bis zu 1 GB
Hyperlink
Enthält Links zu anderen Dateien, einschließlich Webseiten
Lookup Wizard
Ermöglicht Ihnen die Eingabe einer Liste von Optionen, die dann aus einer Dropdown-Liste ausgewählt werden können