欢迎来到 SQL 训练营的第二十一章!在这一章中,我们将深入学习 游标(Cursor) 的技巧。如果你觉得前几章的事务处理已经让你得心应手,那么这一章将会带你进入更加“魔法般”的世界——如何使用游标逐行处理数据。准备好了吗?让我们开始吧!
第一节:准备相关基础表和数据
为了方便我们练习游标的使用,我们将创建几个新的表格,并插入一些与前几章不同的数据。假设我们有一个员工绩效管理系统,需要记录员工的基本信息、绩效评估和奖金发放情况。我们将创建三个表格:employees
(员工表)、performance_reviews
(绩效评估表)和 bonuses
(奖金表),并插入一些初始数据。
1. 创建表格
employees
表格(员工信息)
-- 创建 "employees" 表格,包含员工的基本信息
CREATE TABLE employees (
employee_id INT PRIMARY KEY AUTO_INCREMENT, -- 员工编号,自动递增
first_name VARCHAR(50), -- 员工名
last_name VARCHAR(50), -- 员工姓
department VARCHAR(50), -- 部门
salary DECIMAL(10, 2) -- 薪资
);
performance_reviews
表格(绩效评估信息)
-- 创建 "performance_reviews" 表格,包含绩效评估的基本信息
CREATE TABLE performance_reviews (
review_id INT PRIMARY KEY AUTO_INCREMENT, -- 评估编号,自动递增
employee_id INT, -- 员工编号
review_date DATE, -- 评估日期
rating INT CHECK (rating >= 1 AND rating <= 5) -- 评估分数(1-5)
);
bonuses
表格(奖金信息)
-- 创建 "bonuses" 表格,包含奖金的基本信息
CREATE TABLE bonuses (
bonus_id INT PRIMARY KEY AUTO_INCREMENT, -- 奖金编号,自动递增
employee_id INT, -- 员工编号
bonus_amount DECIMAL(10, 2), -- 奖金金额
bonus_date DATE -- 发放日期
);
2. 插入数据
employees
表格数据
-- 插入五条员工记录
INSERT INTO employees (first_name, last_name, department, salary)
VALUES ('Alice', 'Smith', 'Sales', 60000.00);
INSERT INTO employees (first_name, last_name, department, salary)
VALUES ('Bob', 'Johnson', 'Engineering', 80000.00);
INSERT INTO employees (first_name, last_name, department, salary)
VALUES ('Charlie', 'Brown', 'Marketing', 70000.00);
INSERT INTO employees (first_name, last_name, department, salary)
VALUES ('Diana', 'Prince', 'HR', 90000.00);
INSERT INTO employees (first_name, last_name, department, salary)
VALUES ('Eve', 'Adams', 'Finance', 100000.00);
performance_reviews
表格数据
-- 插入五条绩效评估记录
INSERT INTO performance_reviews (employee_id, review_date, rating)
VALUES (1, '2023-01-15', 4);
INSERT INTO performance_reviews (employee_id, review_date, rating)
VALUES (2, '2023-02-10', 5);
INSERT INTO performance_reviews (employee_id, review_date, rating)
VALUES (3, '2023-03-05', 3);
INSERT INTO performance_reviews (employee_id, review_date, rating)
VALUES (4, '2023-04-20', 5);
INSERT INTO performance_reviews (employee_id, review_date, rating)
VALUES (5, '2023-05-12', 4);
bonuses
表格数据
-- 插入五条奖金记录
INSERT INTO bonuses (employee_id, bonus_amount, bonus_date)
VALUES (1, 2000.00, '2023-01-15');
INSERT INTO bonuses (employee_id, bonus_amount, bonus_date)
VALUES (2, 3000.00, '2023-02-10');
INSERT INTO bonuses (employee_id, bonus_amount, bonus_date)
VALUES (3, 1000.00, '2023-03-05');
INSERT INTO bonuses (employee_id, bonus_amount, bonus_date)
VALUES (4, 4000.00, '2023-04-20');
INSERT INTO bonuses (employee_id, bonus_amount, bonus_date)
VALUES (5, 2500.00, '2023-05-12');
现在,我们的 employees
、performance_reviews
和 bonuses
表格已经准备好了,里面有一些员工、绩效评估和奖金的信息。接下来,我们将学习如何使用游标来逐行处理这些数据。
幽默小贴士:
游标就像是给数据库“装上了一对翅膀”,它可以帮助你逐行处理数据,就像一个“数据精灵”一样,帮你完成复杂的任务。别担心,SQL 会帮你搞定这一切!
标签:--,训练营,游标,DECLARE,bonus,SQL,employee,id From: https://blog.csdn.net/caifox/article/details/144863929