123

MySQLでUNSIGNEDとSIGNEDINTを使用する必要があるのはいつですか?何を使用するのが良いですか、それともこれは個人的な好みですか?私はそれがこのように使われているのを見たので;

id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT

id INT(11) NOT NULL AUTO_INCREMENT
4

8 に答える 8

196

UNSIGNED正の数(またはゼロ)のみを格納します。一方、signedは負の数を格納できます(つまり、負の符号を持つ場合があります)。

INTEGER各タイプが格納できる値の範囲の表は次のとおりです。

MySQLINTEGERのタイプと長さ
ソース:http ://dev.mysql.com/doc/refman/5.6/en/integer-types.html

UNSIGNEDの範囲は0nで、符号付きの範囲は約-n/2n/2です。

この場合、AUTO_INCREMENTID列があるので、ネガはありません。したがって、を使用しますUNSIGNEDUNSIGNED列に使用しない場合AUTO_INCREMENT、可能な最大値は半分になります(値の範囲の負の半分は未使用になります)。

于 2012-07-17T03:25:59.827 に答える
8

UNSIGNED非負の整数に使用します。

于 2012-07-17T03:25:55.730 に答える
5

基本的にUNSIGNED、を使用すると、負の数は必要ないことを明示的に指定するため、整数のスペースが2倍になります(通常、格納する値が負になることはないため)。

于 2015-11-21T16:14:44.043 に答える
1

私は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  
于 2017-07-18T12:29:06.290 に答える
1

負の整数値の場合SIGNEDはが使用され、非負の整数値の場合UNSIGNEDはが使用されます。UNSIGNEDidには主キーとして使用することを常にお勧めします。

于 2019-10-14T05:11:20.513 に答える
0

(例:)値のUNSIGNEDようなものを分または時間または秒の形式で保存するのに最適なオプションだと思います。これは間違いなく非負の数になりますtime_durationresolved_call_time = resolved_time(DateTime)-creation_time(DateTime)

于 2016-01-15T16:55:32.680 に答える
0

私が追加したいものの1つsigned int、つまり、は、default value in mysql1 bit表すために使用されsignます。-1 for negative and 0 for positive. したがって、アプリケーションが正の値のみを挿入する場合は、unsignedを指定する方が適切です。

于 2016-08-17T05:55:31.947 に答える
0

保存する番号の種類がわかっている場合は、それに応じて選択できます。この場合、負になることのない「id」があります。したがって、unsignedintを使用できます。符号付き整数の範囲:-n/2から+n/ 2符号なし整数の範囲:0からnしたがって、使用可能な正の数の2倍の数があります。それに応じて選択してください。

于 2017-07-18T12:36:58.023 に答える