2016-11-22 1 views
-1

Betrachten wir TINYINT. W3Schools sagt, dass es unterzeichnet Bereich von -128 bis 127 ist und dessen unsigned Bereich reicht von 0 bis 255.MySQL-Datentypen - Signed Unsigned

1) Warum es sagt, dass sein Bereich von -128 bis 127 ist und warum nicht, dass sein Bereich von ist - 128 bis 255.

2) Bedeutet dieser Bereich, dass ich einen Wert von -129 oder 256 nicht annehmen kann? (Lassen Sie uns sagen, ich fülle ein Formular, wo ich ein Textfeld habe)

+2

1. Weil 'sein Bereich von -128 bis 255 ist' ist nicht wahr. 2. Ja, Sie können nicht tinyint für 256 oder -129 verwenden. –

Antwort

0

Bereich von signierten und unsigned sind gleich, es geht um Optimierung. Vorzeichen ist nur für die obere Grenze bedeutet, dass keine negative Zahl zulässig ist. Wenn Sie also wissen, dass Sie nur eine positive Nummer benötigen, verwenden Sie immer unausgesprochen.

check it here

+0

Bitte lernen Sie die Bereiche. Sie sind anders. – Drew

+0

"Wenn Sie also wissen, dass Sie nur eine positive Nummer benötigen, verwenden Sie immer" ununsigned ". Dieser Teil half ... Danke. –

0

Tinyint Wert ist nicht von -128 bis 255, die ist, warum sie es nicht sagen.

Beim Erstellen einer Tabelle ist sie entweder signiert oder vorzeichenlos. Wenn Sie nicht angeben, dann wird von -128 bis 127. signiert Default Wenn Sie ohne Vorzeichen geben Sie bei der Erstellung einer Tabelle, ist ihr Wert von 0 bis 255.

CREATE TABLE `example_table` (
    `example_col` tinyint(3) unsigned NOT NULL 
); 

Die zweite Antwort ist „Ja“, können Sie nicht verwenden der Wert von -129 oder 256 in Tinyint. Überprüfen Sie diese link, um eine Vorstellung von oberen und unteren Grenze von jedem zu bekommen.

+0

Danke. Deine Antwort hat geholfen. Ich gen. benutze PHPMyAdmin. Also werde ich unsigned from Attributes Dropdown-Option erstellen. –

0

TINYINT wird über 8 Bits (1 Byte) dargestellt. Grundkenntnisse der Informationstheorie besagt, dass nur 256 verschiedene Werte (256 = 2^8) mit 8 Bits dargestellt werden können.

Die 8 Bits von "Tinyint" sind durch MySQL interpretiert in einer von zwei Möglichkeiten:

TINYINT UNSIGNED, wo die 256 Werte sind als 0..255 interpretiert oder

TINYINT SIGNED (alias TINYINT, da SIGNED der Standardwert ist), wobei die Interpretation einen Bereich von -128..127 hat.

Wenn das oberste Bit 0 ist, sind die 8 Bits gleich 0..127 zwischen SIGNED und UNSIGNED. Wenn das oberste Bit jedoch 1 ist, repräsentieren die 8 Bits entweder negative Zahlen oder größere positive Zahlen.

Wenn Sie wollten, könnten Sie die 256 Werte im Sinne von ‚rot‘, ‚gelb‘, ‚grün‘ interpretieren, etc. Dies ist genau das, was mit einem anderen Datentyp passiert:

ENUM('red', 'yellow', 'green') 

Eine weitere Interpretation von 8-Bit-Bytes gibt Ihnen Ascii-Zeichen. Siehe CHAR, VARCHAR, TEXT usw.

Da TINYINT muss entweder SIGNED oder UNSIGNED sein, Sie nicht hat eine TINYINT Spalte mit diesen beiden Werten: -111 und 222 (in verschiedenen Reihen). Wenn Sie das brauchen, dann verwenden Sie SMALLINT SIGNED.(Dies führt zu einer Diskussion von 16-Bit-Darstellungen der Zahl.)

+0

Danke Rick. –

Verwandte Themen