MySQLでUNSIGNEDおよびSIGNED INTを使用する必要があるのはいつですか?何を使うのが良いですか、これは個人的な好みですか?私がそれがこのように使われるのを見たので;
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
そして
id INT(11) NOT NULL AUTO_INCREMENT
MySQLでUNSIGNEDおよびSIGNED INTを使用する必要があるのはいつですか?何を使うのが良いですか、これは個人的な好みですか?私がそれがこのように使われるのを見たので;
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_INCREMENTID列があるため、ネガティブはありません。したがって、を使用しますUNSIGNED。列に使用しない場合UNSIGNED、AUTO_INCREMENT可能な最大値は半分になります(値の範囲の負の半分は使用されません)。
UNSIGNEDはMySQL固有であり、標準のSQL機能ではないことに注意してください。つまり、を使用UNSIGNEDすると、別のRDBMSへの将来の移行がより複雑になったり、SQLAlchemyなどの標準SQLをターゲットとするソフトウェアライブラリを使用するときに問題が発生する可能性があります。これは答えの一部になると思います。
UNSIGNED負でない整数に使用します。
負の整数値にSIGNEDはが使用され、負でない整数値にUNSIGNEDはが使用されます。常にUNSIGNEDidを主キーとして使用することをお勧めします。