[My(SQL)] TINYINT+Co = statisches oder dynamisches Tabellenformat

g0blin2k

Grünschnabel
Nabend!

Zuerst einmal, da dies mein 1. mal hier im Forum ist, bitte ich nicht gleich über mich herzufallen. *g*

Nun zu meiner eigentlichen Frage:
Mich würde es sehr interessieren ob TINYINT und die restlichen INTs ein dynamisches oder statisches Tabellenformat ergeben. Habe beim Manual nichts hilfreiches gefunden, nur was CHAR, VARCHAR, TEXT, BLOB und DECIMAL betrifft.
Und zum anderen: kann ich das wo einsehen welches Format die Tabelle hat?

Bin für Antworten immer dankbar.

mls Alex
 
Da ich nicht genau weiss, worauf Du hinaus willst, kann ich nur vermuten, dass es Dir um den Speicherbedarf der Felder mit einem bestimmten Spaltentyp geht.Unter dem Link findest Du Tabellen, in denen der Speicherbedarf der einzelnen MySQL-Datentypen genannt ist. Danach haben alle INT-Typen einen festen (vielleicht meinst Du das mit statisch) Speicherbedarf, egal, wie groß die Zahl ist, die Du dort einträgst.

Gruß hpvw
 
Hallo!

Also was ich minte ist zB:
CHAR = feste Breite > mehr Speicherbedarf > schnellere Abfrage möglich
VARCHAR = dynamische Breite > verbraucht weniger Platz > dadurch langsamer

Aber offenbar hast du mich schon richtig verstanden. :)

Was mich jetz noch interessieren würde ist der Unterschied zwischen INT und DECIMAL.

Das was ich brauche sind Ganzzahlen, mit denen ich Einstellungen vornehmen kann (0 Feature inaktiv, 1 Feature aktiv; oder ein Counter, ...)

Habe bisher für alles TINYINT verwendet. Ist das sinnvoll?

mls Alex
 
Ein decimal hat eine feste Anzahl von Nachkommastellen, ähnelt also mehr dem float bzw. double, als dem int, welches nur Ganzzahlen speichert.

Dein Vorgehen ist schon richtig. Wenn Du Dir sicher bist, dass Du auf Dauer mit einem TINYINT auskommst, ist das die richtige Wahl. Gegebenfalls solltest Du ihn UNSIGNED, also Vorzeichenlos, machen.

Ich lege bei sowas immer gleich eine zusätzliche Tabelle an, z.B. FeatureStatus mit den Felden ID (Dein TINYINT, der in anderen Tabellen auftaucht) und description. So steht auch in der Datenbank, was die Werte bedeuten und es ist nicht erst durch das Programm/Skript klar.

Gruß hpvw
 
Nabend!

Hm, verstehe, danke sehr. Aber Die Tabellen- und Spaltennamen sind ansich bereits selbsterklärend.

Und was das auskommen mit TINYINT angeht, ... ich verstehe es so das TINYINT einen Maximalwert von 255 Stellen hat und wenn ich bedenke das eine Milliarde 10 Stellen hat, dann sollte TINYINT schon ausreichen.

Beispiel: TINYINT(10) UNSIGNED = 1000000000
oder
Beispiel: VARCHAR(15) = abcde@abcde.org

Oder habe ich dabei etwas falsch verstanden?

mls Alex
 
Nein, ein TINYINT belegt 1 Byte und kann damit als UNSIGNED die Zahlen 0 bis 255 abbilden.
 
Ein VARCHAR kann soviele Zeichen abspeichern, wie Du in der Klammer angibst. Du liegst also richtig, den String kannst Du in dem definierten VARCHAR ablegen.
 
Zurück