什么是MySQL中的“unsigned”,何时使用它?
MySQL中的“unsigned”是一种数据类型。每当我们将无符号数据写入任何列时,这意味着您无法插入负数。假设对于一个非常大的数字,您可以使用无符号类型。
无符号int的最大范围为4294967295。
注意:如果您插入负值,将会出现MySQL错误。
以下是无符号类型演示的示例。让我们首先创建一个带有“unsigned”列的表。以下是创建表的查询:
mysql> create table UnsignedDemoWithPositiveValue
-> (
-> Distance int unsigned
-> );
Query OK, 0 rows affected (0.86 sec)
如果您尝试使用无符号4294967295插入上限值,则将生成错误,因为该值超出了范围。
插入超出范围的值。
mysql> insert into UnsignedDemoWithPositiveValue values(4294967296);
ERROR 1264 (22003): Out of range value for column 'Distance' at row 1
在上面的例子中,我插入了超出范围的4294967296,因此会生成错误。
现在我将另一个值4294967295插入表中。
mysql> insert into UnsignedDemoWithPositiveValue values(4294967295);
Query OK, 1 row affected (0.30 sec)
上面,您可以看到查询成功执行。
现在,让我们看另一个例子。如果您插入负记录,则可能会看到以下错误 –
mysql> insert into UnsignedDemoWithPositiveValue values(-124);
ERROR 1264 (22003): Out of range value for column 'Distance' at row 1
现在我只插入值为124的正值。查询如下 –
mysql> insert into UnsignedDemoWithPositiveValue values(124);
Query OK, 1 row affected (0.86 sec)
如上所述,查询成功执行。
让我们使用select语句显示记录。查询如下 –
mysql> select *from UnsignedDemoWithPositiveValue;
以下是输出 –
+------------+
| Distance |
+------------+
| 4294967295 |
| 124 |
+------------+
2 rows in set (0.00 sec)
阅读更多:MySQL 教程