MySQL中的数值型数据类型主要包括整数类型和浮点数类型。这些数据类型用于存储数学上的数值,包括整数和小数。
TINYINT
:存储范围为-128到127(有符号),或0到255(无符号)。SMALLINT
:存储范围为-32768到32767(有符号),或0到65535(无符号)。MEDIUMINT
:存储范围为-8388608到8388607(有符号),或0到16777215(无符号)。INT
或 INTEGER
:存储范围为-2147483648到2147483647(有符号),或0到4294967295(无符号)。BIGINT
:存储范围为-9223372036854775808到9223372036854775807(有符号),或0到18446744073709551615(无符号)。FLOAT
:单精度浮点数,存储范围大约为±3.40282347E+38F。DOUBLE
或 DOUBLE PRECISION
:双精度浮点数,存储范围大约为±1.79769313486231570E+308。DECIMAL
或 NUMERIC
:用于存储精确的小数值,可以指定精度和小数位数。原因:浮点数在计算机内部是以二进制形式存储的,而某些十进制小数无法精确表示为二进制小数,导致计算时出现精度损失。
解决方法:
DECIMAL
)来存储和计算需要精确值的数据。-- 示例:使用DECIMAL类型存储精确值
CREATE TABLE prices (
id INT AUTO_INCREMENT PRIMARY KEY,
price DECIMAL(10, 2)
);
INSERT INTO prices (price) VALUES (123.45);
SELECT * FROM prices;
原因:这通常是因为选择了无符号整数类型,无符号整数只能存储非负数。
解决方法:
INT
)来存储可能为负数的数据。-- 示例:选择有符号整数类型
CREATE TABLE temperatures (
id INT AUTO_INCREMENT PRIMARY KEY,
temp INT
);
INSERT INTO temperatures (temp) VALUES (-10);
SELECT * FROM temperatures;
通过以上信息,您可以更好地理解MySQL中的数值型数据类型及其应用场景,并解决常见的相关问题。
领取专属 10元无门槛券
手把手带您无忧上云