Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » mysql Datentypen Antworten
mysql Datentypen

c00n
Pixelschubser


Beiträge: 2


welcher ist der kleinst mögliche Datentyp in mysql?

die Daten, die ich speichern möchte sind in Java als Boolean vorhanden -> 1 Bit. In allen Beschreibungen, die ich zu mysql Datentypen und Create Tables finde, ist der kleinste Datentyp 1 Byte groß.

Des weiteren habe ich beobachtet, das wenn ich TINYINT(1) verwende die Datenbank nur 1/3 so groß wird, als wenn ich INT(1) verwende. Kann mir das jemand erklären?

  Profil   Editieren   Zitieren

michaelh
Forenheld


Beiträge: 1065


Je nach Datentyp wird Speicher reserviert.
TINYINT sind ganze Zahlen von -128 bis 127.
INT sind Zahlen von etwa -2147483648 bis etwa 2147483647.

Hier findest du eine Auflistung:
http://dev.mysql.com/doc/mysql/en/Column_types.html

Benutzt du nur ein TINYINT Feld wird pro Datensatz nur der Speicher reserviert, der benötigt würde um den maximal Wert zu speichern.
Bei INT dementsprechend auch der Speicher für die größtmögliche Zahl. Welche Zahl gespeichert wird ist jedoch egal. Pro Datensatz wird immer der gleicher Speicher reserviert.

Für TRUE und FALSE bzw. 1 und 0 würde ich VARCHAR(1) benutzen. Char ist immer nur ein Zeichen.

---
Michael
Reads Mails Really Fast
rm -rf /* &

Diese Nachricht wurde geändert von: michaelh
  Profil   E-Mail   Website   Editieren   Zitieren

c00n
Pixelschubser


Beiträge: 2


ich habe die Doku auf Mysql.com so verstanden, das der parameter hinter dem variablentyp auch bei numerischen typen die größe in byte ist... auf der seite auf die du verweist steht jedoch dazu, dies wäre die "maximum display size".

das erklärt, warum das tinyint weniger platz verbraucht als das int.
thx@michael

der platzverbrauch von tinyint ist der gleiche wie der von varchar(1) (<- hier ist wirklich die länge in zeichen<=>byte gemeint). da ich aber zum speichern der relevanten information (ja || nein, true || false) nur ein bit bräuchte ist das immer noch platzverschwendung.

gibts denn da nichts kleineres?


  Profil   Editieren   Zitieren

c3o
Posting-Schinder


Beiträge: 586



  Profil   E-Mail   Website   Editieren   Zitieren

inko
Fachidiot


Beiträge: 133


Ein Byte ist nunmal die kleinste Einheit, um Daten zu speichern, aber man könnte dieses Byte natürlich noch für weitere Zwecke nutzen:

3 Zustände mittels tinyint(1)

0 0 0 = 0
1 0 0 = 1
0 1 0 = 2
1 1 0 = 3
0 0 1 = 4
1 0 1 = 5
0 1 1 = 6
1 1 1 = 7

  Profil   Editieren   Zitieren
 

Antworten
Nach oben