MySQL数据库中的数字字段主要用于存储数值类型的数据,包括整数和浮点数。这些字段类型提供了不同的精度和范围,以适应不同的数据需求。
TINYINT
:占用1个字节,范围是-128到127(有符号),或0到255(无符号)。SMALLINT
:占用2个字节,范围是-32768到32767(有符号),或0到65535(无符号)。MEDIUMINT
:占用3个字节,范围是-8388608到8388607(有符号),或0到16777215(无符号)。INT
或 INTEGER
:占用4个字节,范围是-2147483648到2147483647(有符号),或0到4294967295(无符号)。BIGINT
:占用8个字节,范围是-9223372036854775808到9223372036854775807(有符号),或0到18446744073709551615(无符号)。FLOAT
:单精度浮点数,占用4个字节。DOUBLE
或 DOUBLE PRECISION
:双精度浮点数,占用8个字节。DECIMAL
或 NUMERIC
:用于存储精确的小数值,可以指定精度和小数位数。原因:当插入的值超出了字段定义的范围时,会发生溢出。
解决方法:
INT
改为BIGINT
。原因:当插入的值超出了浮点数类型的精度时,可能会发生精度丢失。
解决方法:
DECIMAL
或NUMERIC
类型来存储需要精确小数的值。原因:如果数字字段的值分布不均匀,可能会导致索引效率低下。
解决方法:
-- 创建表时定义数字字段
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
price DECIMAL(10, 2) NOT NULL,
stock INT NOT NULL
);
-- 插入数据
INSERT INTO products (name, price, stock) VALUES ('Laptop', 999.99, 100);
-- 查询数据
SELECT * FROM products WHERE price > 500;
领取专属 10元无门槛券
手把手带您无忧上云