案例:算术运算符查询
今日作业(算数运算符查询)
- 复习算数运算符
- 基础查询训练:建表+数据+算数运算符查询(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;