Philipp Hasenfratz: MySQL Spaltendefinitionen

Beitrag lesen

Halihallo

ich weiß definitiv die Länger ALLER Felder. Hatte nur die Befüchtung, das bei anderen Feldern wie Ort, dann teilweise die Fehlenden ZZeichnen mit Leerzeichen oder wie auch immer ausgefüllt werden. Dann müßte ich hinterher immer die Ergebnisse aus der DB bearbeiten, könnte so auch nicht direkt suchen mit SELECT!!

Doch, du könntest mit SELECT auch danach suchen. Dann ging's etwa so:

SELECT col FROM tbl WHERE City LIKE "<choice>%"

Damit liesse sich sogar einen Index über City legen, der hiermit auch verwendet werden würde (bei "%...%" LIKE Abfragen nimmer) => Performance... Aber das nur nebenbei.

Wie ist das wenn ich jetzt alle mit CHAR angebe, aber nicht immer alle Felder 100% ausgefüllt sind?

Kein Problem, es kommen trotzdem nur die Zeichen, welche vom Kunden/dir eingegeben wurden. Der Unterschied zwischen CHAR und VARCHAR ist lediglich der, dass beim letzteren die Daten nicht im eigentlichen Record, sondern wo anders gespeichert werden und derjenige Platz im Record ist dann der Pointer auf die Nutzdaten. Was aber beide gemein haben, ist ein Byte bzw. mehrere bei grossen Datenbeständen (TEXT, BLOB u.d.g), um die aktuelle Anzahl Bytes zu speichern, die auch wirklich gespeichert wurden. CHAR hat zwar eine fixe mögliche Anzahl an Bytes, welche gespeichert werden können, aber es dürfen selbstverständlich auch weniger sein; was du von der Datenbank aber gelifert bekommst, sind auch nur die Daten, welche du eingegeben hast. Es gibt auch keine Füllzeichen, die restlichen Bytes werden einfach ignoriert.

Viele Grüsse

Philipp