MySQL 视图 存储过程与存储函数

devtools/2025/1/12 11:05:22/

第十四章_视图、第十五章 _存储过程与存储函数

1.常见的数据库对象

1. 表(Table)

用于存储结构化数据的基本对象,由行(记录)和列(字段)组成。

2. 视图(View)

基于一个或多个表的虚拟表,用于简化查询或提供特定数据的视图,不存储实际数据

3. 索引(Index)

用于加速查询和数据检索的数据库对象,常用于优化性能

4. 主键(Primary Key)

唯一标识表中每一行记录的约束,值必须唯一且非空。

5. 外键(Foreign Key)

用于建立表与表之间的关系,引用另一个表的主键。

6. 触发器(Trigger)

在特定事件(如插入、更新或删除)发生时自动执行的存储过程。

7. 存储过程(Stored Procedure)

一组预编译的SQL语句,用于执行复杂的业务逻辑。

8. 函数(Function)

类似于存储过程,但必须返回一个值,通常用于计算或转换。

9. 序列(Sequence)

用于生成唯一的数值,通常用于主键的自动生成。

10. 模式(Schema)

数据库对象的逻辑分组,用于组织和管理表、视图、索引等对象。

11. 同义词(Synonym)

数据库对象的别名,用于简化引用。

12. 用户(User)

数据库的账户,用于管理权限和访问控制。

13. 角色(Role)

权限的集合,用于简化权限管理。

14. 事务(Transaction)

一组SQL语句的逻辑单元,用于保证数据的一致性和完整性。

15. 日志(Log)

记录数据库操作历史的系统对象,用于恢复和审计。

2.视图

2.1 为什么要使用视图

视图可以控制用户访问的数据范围。防止用户看到不该看到的敏感信息

某些数据库支持 物化视图(Materialized View),它会将视图的数据物理存储在磁盘上,从而提高查询性能。

2.2视图的本质

  • 一个存储好的select语句

  • 本身是一个虚拟表,不存储数据

  • 对视图中select语句中涉及到的表,称为基表

  • 针对视图做DML操作,会影响对应的基表中的数据,反之亦然

  • 试图本身的删除,不会导致基表中数据的删除

  • 视图的应用场景: 针对于小型项目,不推荐使用视图.针对于大型项目,可以考虑使用视图

3.总结

3.1视图优点:

  1. 操作简单,简化了开发人员对数据库的操作

  2. 减少数据冗余

  3. 数据安全,视图具有隔离性

  4. 适应灵活多变的需求

3.2视图不足

如果实际数据表变更,我们就需要对相应的视图进行相应的 维护


1.存储过程概述

1.1理解

自定义函数(没有返回值)

1.2 创建存储过程

create procedure how_mgr_name2(in emp_name varchar(20),out mgr_name varchar(20))
begin
select emps.last_name into mgr_name
from emps
where emps.employee_id = (select manager_id from emps where last_name = emp_name);
end ;

1.3调用存储过程

call show_mgr_name2('Abel',@mgr_name);
select @mgr_name;

1.4删除存储过程

drop procedure show_mgr_name2;

2.存储函数的使用

2.1语法规则

CREATE FUNCTION 函数名(参数名 参数类型,...)
RETURN 返回值类型
[characteristics ...]
BEGIN   函数体 #函数体中肯定有RETURN语句
END;

说明:

  • 参数列表: 指定参数为IN,OUT只对procedure是合法的,存储函数只允许传入数据

  • RETURN type语句表示函数返回值数据的类型

  • 如果函数体只有一行SQL语句,则可以省略begin end

2.2代码举例

3.区别

是否必须返回值必须返回一个值可以返回多个值,也可以不返回值
调用方式嵌套在 SQL 语句中调用(select)独立调用,使用 CALL
用途数据处理、计算事务管理、复杂逻辑
参数支持仅支持 IN 参数支持 INOUTINOUT 参数

http://www.ppmy.cn/devtools/149855.html

相关文章

通过Apache、Nginx限制直接访问public下的静态文件

一、Apache 在public目录下的.htaccess文件中添加如下规则&#xff0c;来拒绝除了指定文件类型之外的所有请求 <FilesMatch "\.(?!(jpg|jpeg|png|gif|css|js|ico)$)[^.]$">Order Allow,DenyDeny from all </FilesMatch> 上述配置表示仅允许访问.jpg …

科大讯飞前端面试题及参考答案 (下)

除了 echarts 还了解其它画图工具吗? 除了 Echarts,还有不少优秀的画图工具可供选择使用。 Highcharts:它是一款功能强大且应用广泛的图表绘制工具,支持多种常见的图表类型,像柱状图、折线图、饼图、散点图等,同时也能创建较为复杂的图表,比如仪表盘图表、极坐标图等。H…

Rust 1.84.0 发布

Cargo 依赖版本选择改进 稳定了最小支持 Rust 版本&#xff08;MSRV&#xff09;感知的解析器&#xff0c;该解析器会优先选择与项目声明的 MSRV 兼容的依赖版本&#xff0c;减少了维护者支持旧工具链的工作量&#xff0c;无需手动为每个依赖选择旧版本。可以通过.cargo/config…

用Python写个待办事项网页应用

来源&#xff1a;Python大数据分析 费弗里 大家好我是费老师&#xff0c;今天要给大家分享的项目是完全基于Python编写的「待办事项」应用&#xff0c; 之所以可以完全基于Python轻松开发出这个应用&#xff0c;要归功于Python生态中非常强大的网页应用开发框架Dash&#xff…

新时期下k8s 网络插件calico 安装

1、k8s master节点初始化完毕以后一直处于notreadey状态&#xff0c;一直怀疑是安装有问题或者是初始化有问题&#xff08;当然&#xff0c;如果真有问题要先解决这些问题&#xff09;&#xff0c;经过不断探索才发现是网络插件没有安装导致的&#xff0c;根据建议安装calico插…

LLM - Llama 3 的 Pre/Post Training 阶段 Loss 以及 logits 和 logps 概念

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145056912 Llama 3 是 Meta 公司发布的开源大型语言模型&#xff0c;包括具有 80 亿和 700 亿参数的预训练和指令微调的语言模型&#xff0c;支持…

Linux 下信号的保存和处理

信号的几个状态 信号抵达: 当接收到的信号被处理时, 此时就成为信号的抵达信号的未决: 从信号的产生到信号抵达这个时间段之间, 称为信号未决信号阻塞: 当进程设置了某个信号为阻塞后, 这个进程就不会在接收到这个信号信号忽略: 将信号设置为忽略后, 接收到这个信号, 对这个信…

K-Means 聚类算法:用生活场景讲解机器学习的“分组”方法

一、K-Means 算法概述 K-Means 是一种经典的无监督学习聚类算法&#xff0c;目的是将数据集中 n 个样本划分成 K 个簇&#xff08;cluster&#xff09;&#xff0c;每个样本根据其特征被归入与之最接近的簇。简单来说&#xff0c;这就像在超市购物时&#xff0c;顾客会被根据购…