什么是响应式的网站,企业电商网站商城建设,网络销售适合什么人做,网站开发形式选择MySQL学习#xff08;六#xff09;#xff1a;视图和存储过程以及函数 文章目录 MySQL学习#xff08;六#xff09;#xff1a;视图和存储过程以及函数1. 视图1.1 视图的作用与特性1.2 视图的创建1.3 视图的查看与维护1.4 视图的修改与删除 2. 存储过程与函数2.1 存储过…MySQL学习六视图和存储过程以及函数 文章目录 MySQL学习六视图和存储过程以及函数1. 视图1.1 视图的作用与特性1.2 视图的创建1.3 视图的查看与维护1.4 视图的修改与删除 2. 存储过程与函数2.1 存储过程创建2.2 存储函数2.3 查看修改和删除 1. 视图 1.1 视图的作用与特性 视图是数据库中的一种特殊类型的虚拟表它允许用户以不同的方式组织和查看数据。通过使用视图数据库管理员可以提供一种更为安全和灵活的数据访问方式 精细的权限控制视图允许管理员创建只包含所需数据的视图从而限制用户对敏感信息的访问提升数据的安全性。数据抽象与简化视图将复杂的查询逻辑封装起来为用户提供了一个简化的数据访问接口使得用户可以更加直观地操作数据。DML操作的映射通过视图对数据进行DML操作这些变更会直接反映到底层数据表中实现了数据操作的透明化。然而删除操作通常不会影响底层数据表除非视图的创建语句中包含了特定的删除逻辑。
1.2 视图的创建
创建视图的语法简洁明了
CREATE VIEW 视图名 AS 查询语句;更丰富的语法允许指定算法和选项
CREATE [OR REPLACE]
[ALGORITHM {undefined | merge | temptable}]
VIEW 视图名 [(字段列表)]
AS 查询语句
[WITH [CASCADING] CHECK OPTION];ALGORITHM定义视图的存储算法undefined表示由数据库系统决定merge表示视图可以像普通表一样进行操作temptable表示视图在每次查询时都会重新创建。CHECK OPTION确保视图中的数据不会违反查询语句中的任何条件提供了一种数据完整性保障。
1.3 视图的查看与维护
查看所有表和视图
SHOW TABLES;查看视图属性信息
SHOW TABLE STATUS LIKE 视图名;查看视图的完整定义
SHOW CREATE VIEW 视图名;1.4 视图的修改与删除
修改视图需要使用CREATE OR REPLACE语句以确保视图定义的正确性
CREATE OR REPLACE VIEW 视图名 AS 查询语句;删除视图
DROP VIEW [IF EXISTS] 视图名;需要注意的是删除视图本身不会删除其底层数据表但如果删除了底层数据表视图将变为无效。
2. 存储过程与函数 2.1 存储过程创建
存储过程是数据库编程中的一种高级特性它允许开发者将一系列SQL语句封装成一个单元以便重复使用。
定义存储过程
创建存储过程时需要使用特殊的定界符来标识存储过程的开始和结束。
DELIMITER //
CREATE PROCEDURE 存储过程名()
BEGIN-- 存储过程内的SQL语句DECLARE ...; -- 声明变量-- SQL操作逻辑
END //
DELIMITER ;调用存储过程
存储过程通过CALL语句进行调用调用时可以传递参数如果有的话
CALL 存储过程名(参数1, 参数2, ...);参数类型 IN参数用于传递数据到存储过程中但不返回任何值。OUT参数用于从存储过程返回数据。INOUT参数既可以传递数据到存储过程也可以从存储过程返回数据。
例如一个输出参数的存储过程用于计算员工最低薪资
CREATE PROCEDURE show_min_salary(OUT ms DOUBLE)
BEGINSELECT MIN(salary) INTO ms FROM employees;
END ;调用此存储过程并获取最低薪资
CALL show_min_salary(ms);
SELECT ms;2.2 存储函数
存储函数与存储过程类似但它们的设计目的是返回一个值。
CREATE FUNCTION 函数名(参数 参数类型)
RETURNS 返回值类型
BEGIN-- 函数体-- 返回计算结果RETURN 返回值;
END ;调用存储函数的方式与调用存储过程类似
SELECT 函数名(参数值);2.3 查看修改和删除
查看存储过程或函数
可以通过SHOW CREATE命令来查看存储过程或函数的详细定义
SHOW CREATE PROCEDURE 存储过程名;
SHOW CREATE FUNCTION 函数名;查看存储过程或函数状态
SHOW PROCEDURE STATUS和SHOW FUNCTION STATUS命令可以用来查看存储过程或函数的当前状态包括创建时间、修改时间和定义信息
SHOW PROCEDURE STATUS LIKE 存储过程名;
SHOW FUNCTION STATUS LIKE 函数名;查看系统表
information_schema.Routines表提供了关于存储过程和函数的详细信息包括名称、类型、定义等
SELECT * FROM information_schema.Routines
WHERE routine_name 存储过程名 OR function_name 函数名
AND routine_type PROCEDURE OR function_type FUNCTION;删除存储过程或函数
当不再需要存储过程或函数时可以使用DROP命令将其从数据库中删除
DROP PROCEDURE 存储过程名;
DROP FUNCTION 函数名;