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

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

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 创建存储过程

sql 复制代码
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调用存储过程

sql 复制代码
call show_mgr_name2('Abel',@mgr_name);
select @mgr_name;

1.4删除存储过程

复制代码
drop procedure show_mgr_name2;

2.存储函数的使用

2.1语法规则

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

说明:

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

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

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

2.2代码举例

3.区别

|-------------|---------|-----------------|
| 是否必须返回值 | 必须返回一个值 | 可以返回多个值,也可以不返回值 |

|----------|-----------------------|----------------|
| 调用方式 | 嵌套在 SQL 语句中调用(select) | 独立调用,使用 CALL |

|--------|---------|-----------|
| 用途 | 数据处理、计算 | 事务管理、复杂逻辑 |

|----------|-------------|--------------------------|
| 参数支持 | 仅支持 IN 参数 | 支持 INOUTINOUT 参数 |

相关推荐
廋到被风吹走3 小时前
【数据库】【MySQL】InnoDB外键解析:约束机制、性能影响与最佳实践
android·数据库·mysql
掘根3 小时前
【消息队列】交换机数据管理实现
网络·数据库
Logic1013 小时前
《Mysql数据库应用》 第2版 郭文明 实验6 数据库系统维护核心操作与思路解析
数据库·sql·mysql·学习笔记·计算机网络技术·形考作业·国家开放大学
AI Echoes4 小时前
构建一个LangChain RAG应用
数据库·python·langchain·prompt·agent
@nengdoudou4 小时前
KingbaseES支持 mysql 的find_in_set函数
数据库·mysql
摇滚侠4 小时前
面试实战 问题三十三 Spring 事务常用注解
数据库·spring·面试
梁萌4 小时前
保姆级的MySQL执行计划(Explain)解读
数据库·mysql·explain·执行计划
JIngJaneIL4 小时前
基于Java+ vue智慧医药系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
+VX:Fegn08955 小时前
计算机毕业设计|基于springboot + vue图书管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
cq林志炫5 小时前
MySQL 英文逗号隔开的数据如何模糊精确查询
mysql