我什么时候应该在 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范围从0to n,而有符号的范围从 about -n/2to n/2。
在这种情况下,您有一个AUTO_INCREMENTID 列,因此您不会有底片。因此,使用UNSIGNED. 如果您不使用UNSIGNED该AUTO_INCREMENT列,则您的最大可能值将是原来的一半(并且值范围的负半部分将未被使用)。
用于UNSIGNED非负整数。
基本上UNSIGNED,您为整数提供了两倍的空间,因为您明确指定不需要负数(通常是因为您存储的值永远不会是负数)。
我不同意vipin cp。
确实是第一位用于表示符号。但是1表示负值,0表示正值。更多的负值以不同的方式编码(二进制补码)。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使用。它总是建议使用UNSIGNEDid 作为主键。
我认为,以分钟或小时或秒格式UNSIGNED存储time_duration(例如:)resolved_call_time = resolved_time(DateTime)-creation_time(DateTime)值之类的值肯定是非负数的最佳选择
如果您知道要存储的号码类型,则可以进行相应选择。在这种情况下,您的“id”永远不会是负数。所以你可以使用无符号整数。有符号整数的范围:-n/2 到 +n/2 无符号整数的范围:0 到 n 所以你有两倍的可用正数。相应地选择。
我想在 a 中添加的一件事signed int,即default value in mysql,1 bit将用于表示sign。-1 for negative and 0 for positive.
因此,如果您的应用程序仅插入正值,则最好指定无符号。