PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CHAR vs VARCHAR


flobee
01.10.2003, 00:23:49
Hallo!

hat jemand für mich einen tip warum oftmals anstelle von CHAR automatisch ein VARCHAR wird wenn ich eine neue tabelle anlege?

beispiel:


CREATE TABLE `xxxx` (
`id` int(11) NULL auto_increment,
`blabla` int(11) default NULL,
`usergroup` CHAR(50) default NULL,
`kurz` CHAR(50) default NULL,
`name` varchar(50) default NULL,

PRIMARY KEY (`id`),
) TYPE=MyISAM;

ergebniss: alle CHARS werden zu VARCHAR
gruss flobee

diver-network
01.10.2003, 08:47:12
Hi flobee,

im MySQL Handbuch steht folgendes (Umlaute fehlen auch im Original PDF):


In einigen Fllen ndert MySQL lautlos eine Spaltenspezi kation von der, die in einem CREATE
TABLE-Statement angegeben wurde. (Das kann auch bei ALTER TABLE passieren.):
 VARCHAR-Spalten mit einer Lnge kleiner 4 werden in CHAR gendert.
 Wenn irgend eine Spalte in einer Tabelle eine variable Lnge hat, hat im Ergebnis jede
Zeile eine variable Lnge. Wenn daher eine Tabelle irgend welche Spalten variabler Lnge
enthlt (VARCHAR, TEXT oder BLOB), werden alle CHAR-Spalten, die lnger als drei Zeichen
sind, in VARCHAR-Spalten umgewandelt. Das beein
usst die Benutzung dieser Spalten
in keiner Weise, denn in MySQL ist VARCHAR nur eine andere Art, Zeichen zu speichern.
MySQL fhrt diese Umwandlung durch, weil sie Platz spart und Tabellenoperationen
schneller macht.



Schau auch mal im Handbuch bei den entsprechenden Spaltentypen nach.

HTH,

Andy

flobee
01.10.2003, 09:49:37
upps! ich hätte mal erst die deutsch version lesen sollen! im engl. hab ich es genau anders rum verstanden :-D

http://www.mysql.com/doc/de/CHAR.html
http://www.mysql.com/doc/de/Silent_column_changes.html