当前位置: 首页 > news >正文

数据库对象概述

数据库对象概述

数据库包含多种对象类型,每种都有特定的用途和功能。以下是主要的数据库对象:

1. 表(Tables)

概念:存储实际数据的基本结构,由行和列组成。

特点

  • 数据实际存储的位置
  • 包含列定义(字段名、数据类型、约束等)
  • 可以有索引提高查询性能
  • 支持增删改查(CRUD)操作

示例

CREATE TABLE employees (emp_id INT PRIMARY KEY,emp_name VARCHAR(100) NOT NULL,hire_date DATE,salary DECIMAL(10,2)
);

2. 视图(Views)

概念:基于一个或多个表的虚拟表,是存储的查询。

特点

  • 不实际存储数据(物化视图除外)
  • 可以简化复杂查询
  • 提供数据安全性(隐藏敏感列)
  • 可以像表一样查询

示例

CREATE VIEW emp_dept_view AS
SELECT e.emp_id, e.emp_name, d.dept_name
FROM employees e
JOIN departments d ON e.dept_id = d.dept_id;

3. 存储过程(Stored Procedures)

概念:预编译的SQL语句集合,可接受参数并执行复杂操作。

特点

  • 提高性能(预编译)
  • 减少网络流量
  • 增强安全性
  • 支持流程控制(IF、LOOP等)

示例

CREATE PROCEDURE increase_salary(IN emp_id INT, IN percent DECIMAL(5,2))
BEGINUPDATE employees SET salary = salary * (1 + percent/100)WHERE emp_id = emp_id;
END;

4. 函数(Functions)

概念:可重用的SQL代码块,接受参数并返回单个值。

特点

  • 必须返回一个值
  • 可以在SQL语句中调用
  • 可以是标量函数或表值函数
  • 与存储过程不同,主要用于计算

示例

CREATE FUNCTION calculate_bonus(salary DECIMAL(10,2), years INT)
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGINDECLARE bonus DECIMAL(10,2);SET bonus = salary * 0.1 * years;RETURN bonus;
END;

5. 触发器(Triggers)

概念:在特定数据库事件(INSERT/UPDATE/DELETE)发生时自动执行的代码。

特点

  • 自动触发,无法直接调用
  • 可以设置在操作前(BEFORE)或操作后(AFTER)执行
  • 常用于数据验证、审计跟踪、维护派生数据

示例

CREATE TRIGGER audit_employee_change
AFTER UPDATE ON employees
FOR EACH ROW
BEGININSERT INTO employee_audit(emp_id, changed_field, old_value, new_value, change_date)VALUES (OLD.emp_id, 'salary', OLD.salary, NEW.salary, NOW());
END;

6. 事件(Events)

概念:根据时间表自动执行的数据库操作(类似于操作系统中的定时任务)。

特点

  • 在特定时间或间隔执行
  • 需要事件调度器启用
  • 用于定期维护、数据归档等

示例

CREATE EVENT archive_old_records
ON SCHEDULE EVERY 1 MONTH
DO
BEGININSERT INTO employees_archiveSELECT * FROM employees WHERE hire_date < DATE_SUB(CURDATE(), INTERVAL 5 YEAR);DELETE FROM employees WHERE hire_date < DATE_SUB(CURDATE(), INTERVAL 5 YEAR);
END;

各对象比较

对象类型存储数据可执行代码自动触发返回值主要用途
表(Tables)数据存储
视图(Views)否*结果集简化查询/安全
存储过程(Procs)可选复杂业务逻辑
函数(Functions)必须计算/转换
触发器(Triggers)自动响应数据变更
事件(Events)定时任务

*物化视图除外

这些数据库对象共同构成了完整的数据库应用系统,各自扮演不同的角色,协同工作以实现数据存储、处理和管理的各种需求。

相关文章:

  • layui时间范围
  • AI时代下前端的未来发展与当下状况
  • 100%提升信号完整性:阻抗匹配在高速SerDes中的实践与影响
  • 论文阅读_Citrus_在医学语言模型中利用专家认知路径以支持高级医疗决策
  • 【Vue.js】组件数据通信——基于Props 实现父组件--> 子组件传递数据(最基础案例)
  • 【网络入侵检测】基于源码分析Suricata的统计模块
  • conda和bash主环境的清理
  • C#进阶学习(十六)C#中的迭代器
  • 昆明理工大学2025年891计算机专业核心考研真题解析
  • 【函数解析】腐蚀与膨胀操作 skimage.morphology.dilation / erosion
  • Python pip下载包及依赖到指定文件夹
  • MAC如何安装多版本jdk(以8,11,17为例)
  • SplitReason:在复杂步骤借助更大尺寸模型推理,1.5B+32B,实现准确率28%提升+8倍速度提升
  • 医院信息管理系统全解析
  • vue跨域问题总结笔记
  • Flinkcdc 实现 MySQL 写入 Doris
  • GoLand包的爆红问题解决
  • laravel中layui的table翻页不起作用问题的解决
  • Qt/C++面试【速通笔记五】—子线程与GUI线程安全交互
  • day004-习题
  • 非法收受财物逾1648万,湖南原副厅级干部康月林一审被判十年半
  • 民调显示特朗普执政百日支持率为80年来美历任总统最低
  • 伊朗爆炸港口已恢复货物进出口工作
  • 张译、惠英红分获第二十届中国电影华表奖优秀男、女演员奖
  • 首映|《人生开门红》:段子背后都是案子
  • 湖南小伙“朱雀玄武敕令”提交申请改名为“朱咸宁”