Skip to main content

案例:算术运算符查询

今日作业(算数运算符查询)

  1. 复习算数运算符
  2. 基础查询训练:建表+数据+算数运算符查询(5道)

以下是 5 道结合了 建表、插入数据、以及使用算术运算符进行查询 的 MySQL 练习题,涵盖了基本的表结构设计、数据插入以及使用 +-*/% 等算术运算符进行计算查询的场景。


题目 1:商品价格与折扣计算

题目描述:

创建一个名为 products 的表,包含以下字段:

  • id:商品编号(INT,主键)
  • name:商品名称(VARCHAR(100))
  • price:商品原价(DECIMAL(10,2))
  • discount:折扣率(DECIMAL(3,2),如 0.1 表示 10% 折扣)

插入至少 3 条商品数据。

查询要求:
查询所有商品信息,并计算折后价格(原价 * (1 - 折扣)),显示商品名称、原价、折扣率、折后价格。


题目 2:员工加班工资计算

题目描述:

创建一个名为 employees 的表,包含以下字段:

  • id:员工编号(INT,主键)
  • name:员工姓名(VARCHAR(50))
  • hourly_wage:每小时工资(DECIMAL(8,2))
  • hours_worked:本月工作小时数(INT)
  • overtime_hours:加班小时数(INT)

插入至少 3 条员工数据。

查询要求:
查询所有员工信息,并计算:

  • 正常工资 = hourly_wage * hours_worked
  • 加班工资 = overtime_hours * hourly_wage * 1.5 (加班费按 1.5 倍计算)
  • 总工资 = 正常工资 + 加班工资

显示员工姓名、正常工资、加班工资、总工资。


题目 3:学生成绩与总分计算

题目描述:

创建一个名为 students 的表,包含以下字段:

  • id:学生编号(INT,主键)
  • name:学生姓名(VARCHAR(50))
  • chinese:语文成绩(INT)
  • math:数学成绩(INT)
  • english:英语成绩(INT)

插入至少 3 条学生数据。

查询要求:
查询所有学生信息,并计算总分(三科之和)平均分(总分 / 3,保留两位小数)


题目 4:商品库存与补货计算

题目描述:

创建一个名为 inventory 的表,包含以下字段:

  • id:商品ID(INT,主键)
  • product_name:商品名称(VARCHAR(100))
  • current_stock:当前库存数量(INT)
  • min_stock:最低库存要求(INT)
  • unit_price:单价(DECIMAL(10,2))

插入至少 3 条商品数据。

查询要求:

查询所有商品,并计算:

  • 库存缺口 = max(0, min_stock - current_stock) (如果当前库存够则不补货)
  • 补货金额 = 库存缺口 × 单价

显示商品名称、当前库存、最低库存、库存缺口、补货金额。


题目 5:银行账户利息计算

题目描述:

创建一个名为 accounts 的表,包含以下字段:

  • id:账户ID(INT,主键)
  • account_name:账户名(VARCHAR(50))
  • balance:账户余额(DECIMAL(12,2))
  • interest_rate:年利率(DECIMAL(5,2),如 0.02 表示 2%)

插入至少 3 条账户数据。

查询要求:
查询所有账户信息,并计算:

  • 年利息 = balance * interest_rate
  • 月利息 = 年利息 / 12

显示账户名、余额、年利率、年利息、月利息。


总结

题号主题使用的算术运算符核心计算目标
1商品折扣* (乘法), - (减法)折后价格 = 原价 × (1 - 折扣)
2员工工资* (乘法), + (加法)正常工资、加班工资、总工资
3学生成绩+ (加法), / (除法), ROUND()总分、平均分
4库存补货- (减法), * (乘法), GREATEST()库存缺口、补货金额
5银行利息* (乘法), / (除法)年利息、月利息

D3:建表+数据+算数运算符查询(答案)

题目 1:商品价格与折扣计算

参考答案:

-- 建表
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10, 2),
discount DECIMAL(3, 2)
);

-- 插入数据
INSERT INTO products (id, name, price, discount) VALUES
(1, '笔记本电脑', 5999.00, 0.10),
(2, '无线鼠标', 199.00, 0.15),
(3, '机械键盘', 899.00, 0.05);

-- 查询:计算折后价格
SELECT
name,
price AS 原价,
discount AS 折扣率,
price * (1 - discount) AS 折后价格
FROM
products;

题目 2:员工加班工资计算

参考答案:

-- 建表
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
hourly_wage DECIMAL(8, 2),
hours_worked INT,
overtime_hours INT
);

-- 插入数据
INSERT INTO employees (id, name, hourly_wage, hours_worked, overtime_hours) VALUES
(1, '张三', 100.00, 160, 10),
(2, '李四', 120.00, 170, 5),
(3, '王五', 90.00, 150, 20);

-- 查询:计算工资
SELECT
name,
(hourly_wage * hours_worked) AS 正常工资,
(overtime_hours * hourly_wage * 1.5) AS 加班工资,
(hourly_wage * hours_worked) + (overtime_hours * hourly_wage * 1.5) AS 总工资
FROM
employees;

题目 3:学生成绩与总分计算

参考答案:

-- 建表
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
chinese INT,
math INT,
english INT
);

-- 插入数据
INSERT INTO students (id, name, chinese, math, english) VALUES
(1, '小明', 85, 90, 88),
(2, '小红', 92, 87, 91),
(3, '小刚', 78, 85, 80);

-- 查询:计算总分和平均分
SELECT
name,
chinese,
math,
english,
(chinese + math + english) AS 总分,
ROUND((chinese + math + english) / 3, 2) AS 平均分
FROM
students;

题目 4:商品库存与补货计算

参考答案:

-- 建表
CREATE TABLE inventory (
id INT PRIMARY KEY,
product_name VARCHAR(100),
current_stock INT,
min_stock INT,
unit_price DECIMAL(10, 2)
);

-- 插入数据
INSERT INTO inventory (id, product_name, current_stock, min_stock, unit_price) VALUES
(1, '笔记本', 50, 100, 2.50),
(2, '签字笔', 200, 150, 0.50),
(3, '订书机', 3, 10, 15.00);

-- 查询:计算补货需求
SELECT
product_name,
current_stock,
min_stock,
GREATEST(0, min_stock - current_stock) AS 库存缺口,
GREATEST(0, min_stock - current_stock) * unit_price AS 补货金额
FROM
inventory;

🎯 说明:使用 GREATEST(0, ...)IF(...) 也可以避免负数库存缺口


题目 5:银行账户利息计算

参考答案:

-- 建表
CREATE TABLE accounts (
id INT PRIMARY KEY,
account_name VARCHAR(50),
balance DECIMAL(12, 2),
interest_rate DECIMAL(5, 2)
);

-- 插入数据
INSERT INTO accounts (id, account_name, balance, interest_rate) VALUES
(1, '张三储蓄账户', 10000.00, 0.02),
(2, '李四理财账户', 50000.00, 0.035),
(3, '王五活期账户', 2000.00, 0.005);

-- 查询:计算利息
SELECT
account_name,
balance,
interest_rate,
balance * interest_rate AS 年利息,
(balance * interest_rate) / 12 AS 月利息
FROM
accounts;