当前位置:首页 > 问答 > 正文

DB2 数据库 必须掌握的DB2常用语句汇总,五

🔥 DB2数据库 | 必须掌握的DB2常用语句汇总(五)

📢 最新消息(2025-08)
IBM近期发布了DB2 13.5版本,优化了AI驱动的查询优化引擎,并增强了JSON处理能力,让DB2在混合云环境下表现更出色!如果你还没升级,可以考虑试试看~


DB2作为IBM旗下的企业级数据库,在金融、电信等行业广泛应用,掌握常用SQL语句能让你在数据管理、性能调优时事半功倍!今天继续分享第五弹实用语句,涵盖 索引管理、存储过程、触发器 等进阶操作。


🚀 1. 索引管理(优化查询必备)

🔹 创建索引

CREATE INDEX idx_employee_name ON employees(last_name, first_name);

适用场景:频繁按姓名查询员工信息时,加速检索。

🔹 查看索引

SELECT indname, tabname, colnames 
FROM syscat.indexes 
WHERE tabname = 'EMPLOYEES';

作用:快速检查某张表的索引情况。

🔹 删除索引

DROP INDEX idx_employee_name;

注意:删除前确认是否影响查询性能!

DB2 数据库 必须掌握的DB2常用语句汇总,五


🛠️ 2. 存储过程(自动化复杂操作)

🔹 创建简单存储过程

CREATE OR REPLACE PROCEDURE update_salary(IN emp_id INT, IN raise_amount DECIMAL(10,2))
LANGUAGE SQL
BEGIN
  UPDATE employees SET salary = salary + raise_amount WHERE employee_id = emp_id;
END;

调用方式

CALL update_salary(101, 5000.00);  -- 给ID 101的员工加薪5000

🔹 带输出参数的存储过程

CREATE PROCEDURE get_employee_count(OUT total INT)
LANGUAGE SQL
BEGIN
  SELECT COUNT(*) INTO total FROM employees;
END;

调用示例

CALL get_employee_count(?);  -- 输出员工总数

⚡ 3. 触发器(自动响应数据变更)

🔹 创建审计触发器(记录工资变更)

CREATE TRIGGER log_salary_change
AFTER UPDATE OF salary ON employees
REFERENCING OLD AS old NEW AS new
FOR EACH ROW
INSERT INTO salary_audit(employee_id, old_salary, new_salary, change_time)
VALUES (old.employee_id, old.salary, new.salary, CURRENT TIMESTAMP);

效果:每次工资更新时自动记录变更历史。

🔹 禁用/启用触发器

ALTER TRIGGER log_salary_change DISABLE;  -- 临时关闭
ALTER TRIGGER log_salary_change ENABLE;   -- 重新启用

📊 4. 高级查询技巧

🔹 递归查询(处理层级数据)

WITH RECURSIVE emp_hierarchy AS (
  SELECT employee_id, manager_id, 1 AS level 
  FROM employees WHERE manager_id IS NULL
  UNION ALL
  SELECT e.employee_id, e.manager_id, h.level + 1
  FROM employees e JOIN emp_hierarchy h ON e.manager_id = h.employee_id
)
SELECT * FROM emp_hierarchy ORDER BY level;

适用场景:组织架构、菜单树等层级数据查询。

🔹 分页查询(优化大数据量)

SELECT * FROM employees 
ORDER BY employee_id
FETCH FIRST 10 ROWS ONLY;          -- DB2 12+ 简洁语法
-- 或传统写法
SELECT * FROM employees 
ORDER BY employee_id
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

💡 5. 实用小贴士

  1. 性能监控

    DB2 数据库 必须掌握的DB2常用语句汇总,五

    SELECT * FROM SYSIBMADM.SNAPDB;  -- 查看数据库快照信息
  2. 快速备份单表

    CREATE TABLE employees_backup AS (SELECT * FROM employees) WITH DATA;
  3. 查看锁等待

    SELECT * FROM SYSIBMADM.SNAPLOCK WAIT;

DB2的强大功能远不止这些,但掌握这些语句已经能应对80%的日常需求!建议收藏本文,随用随查~ 下次我们会介绍 DB2与JSON数据处理 的技巧,敬请期待!

💬 互动:你平时最常用的DB2语句是什么?欢迎评论区分享!

发表评论