Home
SQL / MySQL
Datenbanken?
  ---------------
Select
Insert
Update
Delete
  ---------------
Where
Order By
Group By
  ---------------
Create Table
Alter Table
Rename Table
Drop Table
Optimize Table
Repair Table
Backup Table
Restore Table
Show Tables
Describe Table
  ---------------
Use DB
Create DB
Drop DB
Show DBs
  ---------------
Funktionen
Indizes
Fulltext
Feldtypen
Gästebuch
Download
Kontakt
 
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
 
Letzte Änderung: 17. Mai 2002, 22:26 Uhr


© 2002, Klaus Becker, becker-k@web.de