Es folgt eine Übersicht über die String-Datentypen. Weitere Informationen finden Sie unter Abschnitt 11.4, „String-Typen“. Die Speicheranforderungen für die Typen sind in Abschnitt 11.5, „Speicherbedarf von Spaltentypen“, beschrieben.
Seit MySQL 4.1 weisen die String-Typen eine Reihe von Funktionen auf, die Sie, wenn Sie bislang nur mit älteren MySQL-Versionen (vor 4.1) gearbeitet haben, unter Umständen nicht kennen:
Spaltendefinitionen für viele String-Datentypen können ein
Attribut CHARACTER SET
enthalten, mit dem
der Zeichensatz angegeben wird. (CHARSET
ist ein Synonym für CHARACTER SET
.) Das
Attribut COLLATE
gibt die Sortierung für
den Zeichensatz an. Diese Attribute gelten für
CHAR
, VARCHAR
, die
TEXT
-Typen, ENUM
und
SET
. Zum Beispiel:
CREATE TABLE t ( c1 VARCHAR(20) CHARACTER SET utf8, c2 TEXT CHARACTER SET latin1 COLLATE latin1_general_cs );
Diese Tabellendefinition erstellt zwei Spalten namens
c1
und c2
. Für die
erste Spalte sind der Zeichensatz utf8
und die Standardsortierung für diesen Zeichensatz
festgelegt, für die zweite latin1
und
eine Sortierung mit Unterscheidung der
Groß-/Kleinschreibung.
MySQL 5.1 interpretiert Längenangaben in Zeichenspaltendefinitionen als Anzahl von Zeichen. (Früher wurde als Grundlage die Einheit Byte verwendet.)
Bei CHAR
, VARCHAR
und
den TEXT
-Typen wird, wenn das Attribut
BINARY
angegeben ist, der Spalte die
binäre Sortierung des spaltenspezifischen Zeichensatzes
zugewiesen. (In älteren Versionen konnte eine Spalte bei
Angabe von BINARY
binäre Strings
speichern.)
Sortierung und Vergleiche basieren bei Zeichenspalten auf
dem Zeichensatz, der der Spalte zugewiesen ist. (Früher
basierten Sortierung und Vergleich auf der Sortierung des
Serverzeichensatzes.) Bei CHAR
-und
VARCHAR
-Spalten können Sie eine binäre
Sortierung oder aber das Attribut BINARY
angeben, damit für Sortierung und Vergleiche statt der
lexikalen Reihenfolge die zugrunde liegenden
Zeichencodewerte benutzt werden.
Kapitel 10, Zeichensatz-Unterstützung, enthält weitere Informationen zur Verwendung von Zeichensätzen in MySQL.
[NATIONAL] CHAR(
M
)
[BINARY | ASCII | UNICODE]
Ein String fester Länge, der bei der Speicherung mit
Leerzeichen auf die angegebene Länge aufgefüllt wird.
M
steht für die Spaltenlänge.
M
liegt in einem Bereich zwischen
0 und 255 Zeichen.
Hinweis: Am Ende stehende
Leerzeichen werden beim Abrufen von
CHAR
-Werten entfernt.
Wenn Sie versuchen, die Länge einer
CHAR
-Spalte auf einen Wert größer 255
zu setzen, dann schlägt die CREATE
TABLE
- oder ALTER
TABLE
-Anweisung, mit der Sie dies tun, fehl und
gibt eine Fehlermeldung aus:
mysql>CREATE TABLE c1 (col1 INT, col2 CHAR(500));
ERROR 1074 (42000): Column length too big for column 'col' (max = 255); use BLOB or TEXT instead mysql>SHOW CREATE TABLE c1;
ERROR 1146 (42S02): Table 'test.c1' doesn't exist
CHAR
ist eine Abkürzung für
CHARACTER
. NATIONAL
CHAR
(und die äquivalente Kurzform
NCHAR
) ist bei SQL die Standardmethode,
um festzulegen, dass eine CHAR
-Spalte
einen bestimmten vordefinierten Zeichensatz verwendet. Seit
Version 4.1 ist utf8
bei MySQL dieser
vordefinierte Zeichensatz. Siehe
Abschnitt 10.3.6, „Nationaler Zeichensatz“.
Das Attribut BINARY
ist eine Kurzform zur
Festlegung der binären Sortierung des Spaltenzeichensatzes.
In diesem Fall basieren Sortierung und Vergleich auf
numerischen Zeichenwerten.
Das Attribut ASCII
ist eine Abkürzung
für CHARACTER SET latin1
.
Das Attribut UNICODE
ist eine Abkürzung
für CHARACTER SET ucs2
.
Der Datentyp CHAR BYTE
ist ein Alias für
den Typ BINARY
. Grund hierfür sind
Kompatibilitätsaspekte.
MySQL gestattet Ihnen die Erstellung einer Spalte des Typs
CHAR(0)
. Dies ist in erster Linie
praktisch, wenn eine Kompatibilität mit alten Anwendungen
erforderlich ist, die auf das Vorhandensein einer Spalte
angewiesen sind, aber deren Wert überhaupt nicht nutzen.
CHAR(0)
ist ferner recht praktisch, wenn
Sie eine Spalte benötigen, die nur zwei Werte annehmen
kann: Eine CHAR(0)
-Spalte, die nicht als
NOT NULL
definiert ist, besetzt genau ein
Bit und kann nur die Werte NULL
und
''
(Leer-String) aufnehmen.
CHAR
Dieser Typ ist synonym zu CHAR(1)
.
[NATIONAL] VARCHAR(
M
)
[BINARY]
Ein String variabler Länge. M
gibt die maximale Spaltenlänge an. Für
M
liegt der zulässige Bereich
zwischen 0 und 65.535. (Die tatsächliche Maximallänge
einer VARCHAR
-Spalte wird durch die
maximale Datensatzlänge und den von Ihnen verwendeten
Zeichensatz bestimmt. Die effektive
Maximallänge beträgt 65.532 Byte.)
Hinweis: MySQL
5.1 beachtet die Spezifikation des
SQL-Standards und entfernt am Anfang stehende Leerzeichen
aus VARCHAR
-Werten
nicht.
VARCHAR
ist eine Abkürzung für
CHARACTER VARYING
.
Das Attribut BINARY
ist eine Kurzform zur
Festlegung der binären Sortierung des Spaltenzeichensatzes.
In diesem Fall basieren Sortierung und Vergleich auf
numerischen Zeichenwerten.
VARCHAR
wird mit einem Präfix von 1 oder
2 Byte Länge und den Daten gespeichert. 2 Byte beträgt die
Länge des Präfixes, wenn die
VARCHAR
-Spalte mit einer Länge größer
255 deklariert wurde.
Der Typ BINARY
ähnelt
CHAR
, speichert aber Strings aus binären
Bytes statt nichtbinärer Zeichen-Strings.
Der Typ VARBINARY
ähnelt
VARCHAR
, speichert aber Strings aus
binären Bytes statt nichtbinärer Zeichen-Strings.
Eine BLOB
-Spalte mit einer Maximallänge
von 255 (28 – 1) Byte.
Eine TEXT
-Spalte mit einer Maximallänge
von 255 (28 – 1) Zeichen.
Eine BLOB
-Spalte mit einer Maximallänge
von 65.535 (216 – 1) Byte.
Für diesen Typ kann optional die Länge
M
angegeben werden. In diesem
Fall erstellt MySQL die Spalte mit dem kleinsten
BLOB
-Typ, der groß genug zur Aufnahme
von Werten mit einer Länge von M
Bytes ist.
Eine TEXT
-Spalte mit einer Maximallänge
von 65.535 (216 – 1)
Zeichen.
Für diesen Typ kann optional die Länge
M
angegeben werden. In diesem
Fall erstellt MySQL die Spalte mit dem kleinsten
TEXT
-Typ, der groß genug zur Aufnahme
von Werten mit einer Länge von M
Zeichen ist.
Eine BLOB
-Spalte mit einer Maximallänge
von 16.777.215 (224 – 1)
Byte.
Eine TEXT
-Spalte mit einer Maximallänge
von 16.777.215 (224 – 1)
Zeichen.
Eine BLOB
-Spalte mit einer Maximallänge
von 4.294.967.295 (232 – 1)
Byte (4 Gbyte). Die maximale effektive
(d. h. zulässige) Länge von
LONGBLOB
-Spalten hängt von der maximalen
Paketgröße im Client/Server-Protokoll und dem verfügbaren
Speicher ab.
Eine TEXT
-Spalte mit einer Maximallänge
von 4.294.967.295 (232 – 1)
Zeichen. Die maximale effektive (d. h.
zulässige) Länge von LONGTEXT
-Spalten
hängt von der maximalen Paketgröße im
Client/Server-Protokoll und dem verfügbaren Speicher ab.
Eine Auflistung. Es handelt sich dabei um ein String-Objekt,
das aus der Liste der Werte
'
,
value1
''
,
value2
'...
, NULL
und einem
speziellen Fehlerwert ''
genau einen Wert
auswählt. Eine ENUM
-Spalte kann maximal
65.535 verschiedene Werte aufweisen.
ENUM
-Werte werden intern als Integers
dargestellt.
Eine Menge. Es handelt sich um ein String-Objekt, dass null
oder mehr Werte haben kann, die jeweils aus der Werteliste
'
,
value1
''
,
value2
'...
stammen. Eine
SET
-Spalte kann maximal 64 Mitglieder
haben. SET
-Werte werden intern als
Integers dargestellt.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.