首页 > 数据库 >SQL训练营:第二十一章 游标的应用

SQL训练营:第二十一章 游标的应用

时间:2025-01-01 13:28:21浏览次数:12  
标签:-- 训练营 游标 DECLARE bonus SQL employee id

欢迎来到 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');

现在,我们的 employeesperformance_reviewsbonuses 表格已经准备好了,里面有一些员工、绩效评估和奖金的信息。接下来,我们将学习如何使用游标来逐行处理这些数据。

幽默小贴士:

游标就像是给数据库“装上了一对翅膀”,它可以帮助你逐行处理数据,就像一个“数据精灵”一样,帮你完成复杂的任务。别担心,SQL 会帮你搞定这一切!

标签:--,训练营,游标,DECLARE,bonus,SQL,employee,id
From: https://blog.csdn.net/caifox/article/details/144863929

相关文章

  • SQL训练营:第十八章 视图View —— 数据界的“魔术镜”!
    嘿,各位数据界的小伙伴们,欢迎来到SQL训练营的第十八章!这一章,咱们要玩转一个超级有用的工具——视图View。视图就像是数据界的“魔术镜”,能让你看到数据的不同面貌,还能简化、格式化、过滤数据,甚至计算新字段!是不是听起来就像变魔术一样?那就跟着我一起来探索这个“魔术镜”吧!准备......
  • Python PySide + SQLite3 开发的 《️ POS点销管理系统》可用初型
    图:   目录:开发说明书:POS点销管理系统开发说明1.系统概述本系统是一个基于PythonPySide6开发的现代化POS点销管理系统,集成了商品管理、库存管理、会员管理、订单管理等核心功能。2.技术栈开发语言:Python3.8+GUI框架:PySide6数据库:SQLite3......
  • MySQL日志体系的深度解析:功能与差异
    优质博文:IT-BLOG-CN一、binlogbinlog记录数据库表结构和表数据变更,比如update/delete/insert/truncate/create,它不会记录select。存储着每条变更的SQL语句和XID事务Id等等。binlog日志文件如下:[root@192.168.10.11]#mysqlbinlogmysql-binlog.0000012..........#at......
  • MySQL DBA需要掌握的 7 个问题
    1. MySQL适用的场景是什么?数据量建议单实例T级或以内,不依赖存储过程、函数、触发器的传统oltp场景都适用,因为是一个相对轻量级的数据库灾备使用MySQL各类的高可用方案即可,比如主从、mha、mgr等。2. MySQL巡检应该怎么做?优先关注哪些参数?可以从以下几个方面去做:服务器配......
  • SQL进阶技巧:如何生成一个员工及其有效门禁卡的列表?
    目录0需求描述1数据准备2问题分析方法1:使用窗口函数row_number()方法2:采用casewhen 3小结往期精彩0需求描述目标:生成一个员工及其有效门禁卡的列表。规则员工可能有多个门禁卡。每个员工在同一时间只能有一个有效的门禁卡。默认最新的门禁卡是有效的(因为......
  • Linux 虚拟机环境安装(jdk/mysql/redis/tomcat/nginx/挂载)
    =================================================================准备工作=================================================================yuminstallwgetyuminstall-ygcc-c++pcrepcre-develzlibzlib-developensslopenssl-develyuminstallchkconfi......
  • commsqlplus 数据库dba开发工具(二)
    帮助和连接信息(日后支持多种数据库,通用命令管理不同数据库) 查看参数:收集统计信息,查看表信息查看数据: 执行计划直接输出 帮忙在信息和status ......
  • commsqlplus 数据库dba开发工具(一)
    PG数据库,输出oracle格式的执行计划: 继续输出分析计划必要信息:执行过程中的活动监控:sqltext有三个pid  PG自有工具格式输出 ......
  • sql server 存储过程
    SQLServer存储过程笔记什么是存储过程(StoredProcedure)存储过程是预编译的SQL语句集合,存储在SQLServer数据库中,可以通过名称调用。它们通常用于执行复杂的操作、数据验证、错误处理或批量数据操作。存储过程可以接受输入参数,执行一系列的SQL操作,并返回结果或状态......
  • JAVA开源毕业设计 大学生竞赛管理系统 Vue.JS+SpringBoot+MySQL
    本文项目编号T101,文末自助获取源码\color{red}{T101,文末自助获取源码}......