[MySQL] Spaltentyp für Textstring



  • Hallo zusammen!

    Ich baue mir eine Datenbank und brauche ín einer Tabelle eine Spalte, die Text beinhaltet. Leider weiss ich nicht welchen Datentyp ich dafür definieren soll.

    Die Spalte sollte Texte fassen, die in etwa die Länge eines Liedtextes umfassen, ruhig etwas länger. Auf http://www.mysql.de/doc/de/Storage_requirements.html habe ich folgendes gefunden:

    Spaltentyp Speicherbedarf
    CHAR(M) M Bytes, 1 <= M <= 255
    VARCHAR(M) L+1 Bytes, wobei L <= M und 1 <= M <= 255
    TINYBLOB, TINYTEXT L+1 Bytes, wobei L < 2^8
    BLOB, TEXT L+2 Bytes, wobei L < 2^16
    MEDIUMBLOB, MEDIUMTEXT L+3 Bytes, wobei L < 2^24
    LONGBLOB, LONGTEXT L+4 Bytes, wobei L < 2^32
    ENUM('wert1','wert2',...) 1 oder 2 Bytes, abhängig von der Anzahl der Aufzählungswerte (65535 Werte maximal)
    SET('wert1','wert2',...) 1, 2, 3, 4 oder 8 Bytes, abhängig von der Anzahl von SET-Elementen (64 Elemente maximal)

    leider weiss ich nicht wie ich daraus schlau werden soll..
    am liebsten würde ich ja eine varchar(10000) oder so nehmen aber varchar geht ja nur bis 255 oder 256... kann mir da jemand weiterhelfen? 😕


  • Mod

    nimm TEXT

    das ist ideal wenn du keine ahnung hast wieviel text du reingeben willst.

    denn da passen 65k zeichen rein. das sollte reichen und ist auch nicht zu verschwenderisch



  • aber kaum ein liedtext geht über 6000 Zeichen drüber.
    Sagen wir die längsten liegen bei 11000 (Pi*Daum).
    Belege ich dann nicht trotdem den Speicherplatz der vollen 65K Zeichen?



  • Nein

    BLOB, TEXT L+2 Bytes, wobei L < 2^16

    Es wird also immer nur 2 Byte mehr, als der Text lang ist belegt



  • flenders schrieb:

    Nein

    BLOB, TEXT L+2 Bytes, wobei L < 2^16

    Es wird also immer nur 2 Byte mehr, als der Text lang ist belegt

    Soll heissen ich kann den hier festlegen -> "songtext text(11000)"
    und wenn ich einen String "Hallo" reinschreibe, werden trotzdem die vollen 11000+2 Byte belegt oder werden 5+2 Byte belegt??



  • 7 byte



  • sauber...! 🙂
    Ok, vielen Dank Jungs! 🙂 😉


Anmelden zum Antworten