MySQL中的数值型数据类型主要包括整数型(如INT, SMALLINT, TINYINT等)、浮点型(如FLOAT, DOUBLE)和定点型(如DECIMAL)。这些数据类型用于存储数学上的数值。
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: 8字节,双精度浮点数。DECIMAL 或 NUMERIC: 可变长度,用于需要高精度的数值。INT 常用于存储用户ID、订单号等。FLOAT 或 DOUBLE 常用于存储科学计算、统计分析中的数值。DECIMAL 常用于存储货币金额、精确度要求高的计算结果。CREATE TABLE example_table (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
price DECIMAL(10, 2) NOT NULL,
rating FLOAT
);在这个例子中,id 是一个自增的主键,user_id 是一个整数类型的字段,price 是一个精度为10位,其中小数点后有2位的定点数,rating 是一个浮点数类型的字段。
原因:使用浮点型(FLOAT, DOUBLE)存储需要高精度的数值时,可能会因为精度限制而导致数据不准确。
解决方法:对于需要高精度的数值,应该使用DECIMAL类型来存储数据。
-- 错误的示例
CREATE TABLE wrong_price (
id INT AUTO_INCREMENT PRIMARY KEY,
price FLOAT NOT NULL
);
-- 正确的示例
CREATE TABLE correct_price (
id INT AUTO_INCREMENT PRIMARY KEY,
price DECIMAL(10, 2) NOT NULL
);原因:尝试插入的数值超出了所选数据类型的范围。
解决方法:检查并确保插入的数值在数据类型允许的范围内,或者选择更大范围的数据类型。
-- 错误的示例
CREATE TABLE wrong_int (
id TINYINT AUTO_INCREMENT PRIMARY KEY,
number INT NOT NULL
);
-- 正确的示例
CREATE TABLE correct_int (
id INT AUTO_INCREMENT PRIMARY KEY,
number INT NOT NULL
);以上信息涵盖了MySQL创建表时数值型数据类型的基础概念、优势、类型、应用场景以及可能遇到的问题和解决方法。
没有搜到相关的沙龙