MySQLでUNSIGNEDとSIGNEDINTを使用する必要があるのはいつですか?何を使用するのが良いですか、それともこれは個人的な好みですか?私はそれがこのように使われているのを見たので;
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
と
id INT(11) NOT NULL AUTO_INCREMENT
MySQLでUNSIGNEDとSIGNEDINTを使用する必要があるのはいつですか?何を使用するのが良いですか、それともこれは個人的な好みですか?私はそれがこのように使われているのを見たので;
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
と
id INT(11) NOT NULL AUTO_INCREMENT
UNSIGNED
正の数(またはゼロ)のみを格納します。一方、signedは負の数を格納できます(つまり、負の符号を持つ場合があります)。
INTEGER
各タイプが格納できる値の範囲の表は次のとおりです。
ソース:http ://dev.mysql.com/doc/refman/5.6/en/integer-types.html
UNSIGNED
の範囲は0
〜n
で、符号付きの範囲は約-n/2
〜n/2
です。
この場合、AUTO_INCREMENT
ID列があるので、ネガはありません。したがって、を使用しますUNSIGNED
。UNSIGNED
列に使用しない場合AUTO_INCREMENT
、可能な最大値は半分になります(値の範囲の負の半分は未使用になります)。
UNSIGNED
非負の整数に使用します。
基本的にUNSIGNED
、を使用すると、負の数は必要ないことを明示的に指定するため、整数のスペースが2倍になります(通常、格納する値が負になることはないため)。
私はvipincpに同意しません。
本当は、最初のビットが符号を表すために使用されるということです。ただし、1は負の値、0は正の値です。さらに負の値は、異なる方法でコード化されます(2の補数)。TINYINTの例:
The sign bit
|
1000 0000b = -128d
...
1111 1101b = -3d
1111 1110b = -2d
1111 1111b = -1d
0000 0000b = 0d
0000 0001b = 1d
0000 0010b = 2d
...
0111 1111b = 127d
負の整数値の場合SIGNED
はが使用され、非負の整数値の場合UNSIGNED
はが使用されます。UNSIGNED
idには主キーとして使用することを常にお勧めします。
(例:)値のUNSIGNED
ようなものを分または時間または秒の形式で保存するのに最適なオプションだと思います。これは間違いなく非負の数になりますtime_duration
resolved_call_time = resolved_time(DateTime)-creation_time(DateTime)
私が追加したいものの1つsigned int
、つまり、は、default value in mysql
を1 bit
表すために使用されsign
ます。-1 for negative and 0 for positive.
したがって、アプリケーションが正の値のみを挿入する場合は、unsignedを指定する方が適切です。
保存する番号の種類がわかっている場合は、それに応じて選択できます。この場合、負になることのない「id」があります。したがって、unsignedintを使用できます。符号付き整数の範囲:-n/2から+n/ 2符号なし整数の範囲:0からnしたがって、使用可能な正の数の2倍の数があります。それに応じて選択してください。