时间:2024-01-12
在MySQL中,无符号(UNSIGNED)是一个属性,你可以在创建或修改表时为整数类型的列指定它。无符号属性意味着该列只能存储非负整数(0和正整数),而不是默认的有符号整数,后者可以存储负数、零和正数。
当插入负值时会返回一个错误。
create table example ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, age TINYINT UNSIGNED NOT NULL);
insert into example (age) values(-18);//返回一个错误out of range value for column 'age' at row 1
mysql数值类型都有自己的存储范围,具有以下几点作用:
例如,如果定义一个列为 INT UNSIGNED,一个普通的 INT 类型的列(默认是有符号的)可以存储从 -2147483648 到 2147483647 的整数。而 INT UNSIGNED 类型的列可以存储从 0 到 4294967295 的整数。即存储数值范围是之前数值的2倍。
如上面的例子,id、age或者库存等确定不会是负数且只能为整数类型的字段可以加上无符号属性,这样可以确保某些情况下错误插入操作,但确保数据库的版本,确保能让数据库抛出错误,以让后端去处理这个错误。