int(11) 和 int(11) UNSIGNED 有什么区别

mysql

1个回答

写回答

z13971391234

2025-07-05 10:45

+ 关注

MySQL
MySQL

在MySQL中,int(11)和int(11) UNSIGNED是两种常见的整数数据类型。尽管它们的外观非常相似,但它们之间存在一些重要的区别。本文将详细介绍int(11)和int(11) UNSIGNED的区别,并通过案例代码来解释它们的使用。

int(11)和int(11) UNSIGNED的定义

在MySQL中,int(11)是用于存储带符号整数的数据类型。它可以存储从-2147483648到2147483647的整数值。而int(11) UNSIGNED是用于存储无符号整数的数据类型。它可以存储从0到4294967295的整数值。

区别一:存储范围

int(11)的存储范围是从-2147483648到2147483647,它包括了正数、负数和零。而int(11) UNSIGNED的存储范围是从0到4294967295,它只包括了正数和零,不包括负数。

区别二:默认值

对于int(11),默认值为0。也就是说,如果在插入新记录时未指定该字段的值,将自动将其设置为0。而对于int(11) UNSIGNED,默认值也是0,但是由于它不能存储负数,因此在插入负数时会导致错误。

区别三:插入和更新

当向int(11)字段插入一个超出范围的值时,MySQL会自动将其截断为最接近的边界值。例如,如果我们尝试插入一个大于2147483647的值,它将自动被截断为2147483647。对于int(11) UNSIGNED,如果我们尝试插入一个负数,MySQL将会报错。

案例代码

以下是一个简单的案例代码,演示了int(11)和int(11) UNSIGNED的使用。

sql

CREATE TABLE example (

id INT(11) NOT NULL AUTO_INCREMENT,

quantity INT(11) NOT NULL,

price INT(11) UNSIGNED NOT NULL,

PRIMARY KEY (id)

);

INSERT INTO example (quantity, price) VALUES (10, 100);

INSERT INTO example (quantity, price) VALUES (-5, 200); -- 这将导致错误

SELECT * FROM example;

在上面的案例中,我们创建了一个名为example的表,其中包含id、quantity和price字段。id字段使用int(11)类型,quantity字段使用int(11)类型,price字段使用int(11) UNSIGNED类型。我们尝试插入一条记录,其中quantity为10,price为100,成功插入。然后,我们尝试插入一条记录,其中quantity为-5,price为200,这将导致错误。

在本文中,我们学习了int(11)和int(11) UNSIGNED的区别。int(11)用于存储带符号整数,而int(11) UNSIGNED用于存储无符号整数。int(11)的范围包括正数、负数和零,而int(11) UNSIGNED的范围只包括正数和零。此外,int(11)默认为0,而int(11) UNSIGNED也是0,但不能存储负数。在插入和更新时,如果超出范围,int(11)会将值截断为最接近的边界值,而int(11) UNSIGNED不允许插入负数。

通过这些区别,我们可以根据实际需求选择适合的整数数据类型来存储数据,并避免可能的错误。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号