|
|
-
---------------
-
-
-
-
---------------
-
-
-
---------------
-
-
-
-
-
-
-
-
-
-
---------------
-
-
-
-
---------------
-
-
-
-
|
|
|
|
|
|
|
| |
|
57974 Seitenaufrufe |
|
Feldtypen in MySQL
In MySQL kann man zwischen drei Kategorien von Feldtypen unterscheiden:
- Numerische Typen
- String-Typen
- Datum- und Zeit-Typen
Numerische-Typen
Bei den numerischen Typen in MySQL kann man zwischen Typen für Ganzzahlen und Typen für Fließkommazahlen unterscheiden.
Ganzzahlige Typen können mit negativem Vorzeichen und mit positiven Vorzeichen versehen sein (z.B. 1244, -3, -9808080).
Die Typen für Fließkommazahlen können auch Bruchteile von Zahlen darstellen (z.B. 1.46, -0.3125, 2132327878.132387).
Wenn beim Anlegen von Feldern vom Typ 'Ganzzahl' (z.B. 'BIGINT') die Option 'UNSIGNED' mit angegeben wurde so erweitert
sich der Bereich der möglichen positiven Zahlen für das Feld um fast 100%. Der Bereich für negative Zahlen dagegen entfällt.
Die Option 'UNSIGNED' kann beim Anlegen von Fließkommatypen nicht verwendet werden
Der verwendete Typ hat auch Einfluß auf den benötigten Speicherplatz (wie bei den meisten anderen Feldtypen auch).
Der Typ 'BIGINT' belegt zum Beispiel mehr Speicherplatz als der Typ 'INT'. Genaueres dazu und zum Wertebereich steht
in der Tabelle unter diesem Text.
Hinweis: Kommas werden in MySQL als Punkt dargestellt!
Übersicht über die Wertebereiche der numerischen Datentypen in MySQL:
| Datentyp |
Speicherplatz |
Wertebereich |
Wertebereich (unsigned) |
| TINYINT |
1 Byte |
-128 - 127 |
0 - 255. |
| SMALLINT |
2 Bytes |
-32768 - 32767 |
0 - 65535 |
| MEDIUMINT |
3 Bytes |
-8388608 - 8388607 |
0 - 16777215 |
| INT |
4 Bytes |
-2147483648 - 2147483647 |
0 - 4294967295 |
| BIGINT |
8 Bytes |
-9223372036854775808 - 9223372036854775807 |
0 - 18446744073709551615 |
| FLOAT |
4 Bytes |
-3.402823466E+38 bis -1.175494351E-38, 0, und 1.175494351E-38 bis 3.402823466E+38 |
Deklarierung nicht möglich |
DOUBLE (Syn. f. REAL) |
8 Bytes |
-1.7976931348623157E+308 bis -2.2250738585072014E-308, 0, und 2.2250738585072014E-308 bis 1.7976931348623157E+308 |
Deklarierung nicht möglich |
String-Typen
Bei den String-Typen in MySQL kann man zwischen fünf verschiedenen Untertypen unterscheiden. Wenn man will auch mehr oder weniger ;-).
- CHAR, VARCHAR
Dieser Typ eignet sich für kleinere Texte, die nicht mehr als 255 beinhalten. In einer Tabelle kann man immer nur
'VARCHAR' oder nur 'CHAR' verwenden. Eine Verwendung von beiden Typen innerhalb einer Tabelle ist nicht möglich. Nach
Möglichkeit sollte man CHAR verwenden. Dieses aber nur dann, wenn die gespeicherten Werte in dem Feld immer ungefähr
dieselbe Länge haben. Der Speicherbedarf für 'CHAR' ist etwas geringer da die Länge des enthaltenden Strings nicht
mitgespeichert werden muß.
- TINYTEXT, MEDIUMTEXT, TEXT, LONGTEXT
Der Typ TEXT in seinen vier Ausprägungen eignet sich zur Aufnahme von kleineren bis hin zu riesigen Textmengen (4294967296 Zeichen).
Bei einer Abfrage eines Feldes mit dem Typ TEXT (oder TINYTEXT, etc. ;-) ) wird zwischen Groß- und Kleinschreibung nicht
unterschieden. Die Groß- und Kleinschreibung bleibt gleichwohl beim Speichern von Werten in dem Feld erhalten.
- TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB
Die vier BLOB-Typen unterscheiden sich insofern vom Typ Text als dass sie Daten in binärer Form speichern.
Man kann z.B. außer normalem Text auch Bilder in einem BLOB-Feld speichern. Bei der Abfrage von BLOB-Feldern wird im Gegensatz
zu TEXT-Feldern zwischen Groß- und Kleinschreibung unterschieden!
- ENUM
Der Typ 'ENUM' kann - wie der Typ 'SET' auch - nur bestimmte Werte aufnehmen. Diese müssen beim
CREATE TABLE Statement bereits als
kommaseparierte Liste in Klammern mit angegeben werden. Es sind maximal 65535 Werte in der Liste möglich.
Ein ENUM-Feld kann - im Gegensatz zum SET-Feld immer nur einen einzigen Wert aufnehmen.
- SET
Der Typ 'SET' kann ebenfalls nur bestimmte Werte aufnehmen. Diese Werteliste muß beim Anlegen mit angegeben werden.
Nachträglich kann man diese Liste - wie beim ENUM-Typ auch - per
ALTER TABLE noch verändern.
Übersicht über den benötigten Speicherplatz der String-Datentypen in MySQL:
| Datentyp |
Speicherplatz |
| CHAR(M) |
M Bytes, 1 <= M <= 255 |
| VARCHAR(M) |
L+1 Bytes, wenn L <= M und 1 <= M <= 255 |
| TINYBLOB |
L+1 Bytes, wenn L < 2^8 |
| TINYTEXT |
L+1 Bytes, wenn L < 2^8 |
| BLOB |
L+2 Bytes, wenn L < 2^16 |
| TEXT |
L+2 Bytes, wenn L < 2^16 |
| MEDIUMBLOB |
L+3 Bytes, wenn L < 2^24 |
| MEDIUMTEXT |
L+3 Bytes, wenn L < 2^24 |
| LONGBLOB |
L+4 Bytes, wenn L < 2^32 |
| LONGTEXT |
L+4 Bytes, wenn L < 2^32 |
| ENUM('wert1','wert2',...) |
1 or 2 Bytes, abhängig von der Anzahl der Einträge (max. 65535) |
| SET('wert1','wert2',...) |
1, 2, 3, 4 oder 8 Bytes, abhängig von der Anzahl der Einträge (max. 64) |
Datum- und Zeit-Typen
MySQL kennt fünf verschiedene Datum- und Zeittypen. Mit diesen Typen sind auch Vergleiche möglich.
Dies ist auch u.a. der Grund dafür, warum man immer ein Datumsfeld einem String-Feld vorziehen
sollte wenn man es mit Datum- oder Zeitangaben zu tun hat.
Beispiel:
SELECT FROM tabelle WHERE datumsfeld < now()
|
Die Typen im einzelnen:
- DATE
Der Typ 'DATE' nimmt Werte im Format JJJJ-MM-TT auf. Das Jahr kann auch zweistellig angegeben werden.
Die Bindestriche können weggelassen werden. Kleinster Wert ist '1000-01-01'.
- TIME
Ein Feld vom Typ 'TIME' kann Werte im Format hh:mm:ss aufnehmen. Die Doppelpunkte können entfallen.
'TIME' kann auch negative Werte aufnehmen. Der Wert in einem TIME-Feld stellt im Ggs. zu 'DATETIME' immer einen Zeitraum dar!
- DATETIME
Der Typ 'DATETIME' ist eine Kombination aus 'DATE' und 'TIME'. Das Standardformat ist 'JJJJ-MM-TT hh:mm:ss.
Bindestriche und Punkte können weggelassen werden.
- TIMESTAMP
'TIMESTAMP' nimmt - wie der Name schon sagt - einen Zeitstempel auf. Der Typ ähnelt dem typ 'DATETIME'.
Die möglichen Formate sind mit denen von 'DATETIME' identisch. Nur das Standardformat kommt ohne
Leerzeichen, Bindestriche und Doppelpunkte aus. Der kleinste Wert ist 19700101000000 (Beginn der UNIX-Epoche im Jahr 1970).
Das letzte Jahr der UNIX-Epoche ist - momentan - das Jahr 2037...
-
YEAR
'YEAR' nimmt Jahreszahlen auf. Dies tut es sowohl zwei- als auch vierstellig.
Übersicht über den benötigten Speicherplatz der numerischen Typen für Datum und Zeit:
| Datentyp |
Speicherplatz |
| DATE |
3 Bytes |
| TIME |
3 Bytes |
| DATETIME |
8 Bytes |
| TIMESTAMP |
4 Bytes |
| YEAR |
1 Byte |
|