2010-12-02 5 views
3

Seit Jahren bin ich unter der Annahme, wenn ich eine neue Spalte des Typs Bigint (12) für eine MySQL-Tabelle erstellen, die das Feld auf ganze Zahlen mit bis zu 12 Ziffern beschränkt ist. Ich habe jedoch kürzlich festgestellt, dass Werte bis zu 16 Ziffern in eine Bigint (12) definierte Spalte ohne Warnungen oder Probleme geschrieben und daraus ausgewählt werden können.MySQL Int Definition Erklärung

Kann mir bitte jemand helfen, zu verstehen, warum das der Fall ist und was diese Spaltendefinition eigentlich bedeutet? Danke im Voraus!

Antwort

5

bigint (12) wird nicht abgeschnitten. Die 12 wird für Anzeigezwecke verwendet.

Nutzen Sie Numeric Types

Numeric Typattribute

MySQL eine Erweiterung optional die Anzeige Breite von Integer-Datentypen in Klammern nach dem Basis Schlüsselwort für die Angabe für unterstützt Art. Zum Beispiel gibt INT (4) eine INT mit einer Anzeigebreite von vier Ziffern an. Diese optionale Anzeige Breite kann von Anwendungen verwendet werden, um Anzeige ganzzahlige Werte mit einer Breite weniger als die Breite für die Spalte von links aufgefüllt mit Leerzeichen. (Das heißt, diese Breite ist in der Metadaten mit Ergebnismengen zurückgeführt. Ob es verwendet wird oder nicht liegt an der Anwendung.)

die Anzeigebreite begrenzen nicht den Bereich der Werte, die sein kann, gespeichert in der Spalte. Es verhindert auch nicht, dass Werte breiter als die Spaltenanzeige Breite richtig angezeigt werden.

+0

so was du mir erzählst, ist, dass die 12 durch die Angabe, ich bin nicht wirklich etwas in Bezug auf Ressourcen zu sparen und dass es nur ein optionaler Wert, Ein Anzeigeprogramm kann auswählen, ob es ignoriert werden soll oder nicht. Grundsätzlich, wenn ich bigint (X) verwende, dass es den vollen Bereich von Werten speichern kann, die ein bigint speichern kann, und wird dafür Plattenplatz angemessen zuweisen? –

+0

Ich glaube, das ist was die Dokumentation sagt. –

+0

Mind weht. Ich habe ein paar Leute gefragt, die mehr als 10 Jahre in Ops gearbeitet haben und sie konnten es nicht erklären. Danke für die Hilfe. –