第十四章_视图、第十五章 _存储过程与存储函数
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视图优点:
-
操作简单,简化了开发人员对数据库的操作
-
减少数据冗余
-
数据安全,视图具有
隔离性
-
适应灵活多变的需求
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 参数 | 支持 IN 、OUT 、INOUT 参数 |