MySQL学习(六):视图和存储过程以及函数

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 STATUSSHOW 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 '函数名';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/881860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 添加右键以管理员身份运行 PowerShell

在 Windows 系统中添加一个右键菜单选项,以便可以使用管理员权限打开 PowerShell,可以通过编辑注册表来实现。 打开注册表编辑器: 按 Win R 打开运行对话框。输入 regedit 并按回车,这将打开注册表编辑器。 导航到文件夹背景键&…

计算机毕业设计Django+Vue.js豆瓣图书推荐系统 图书评论情感分析 豆瓣图书可视化大屏 豆瓣图书爬虫 数据分析 图书大数据 大数据毕业设计 机器学习

《DjangoVue.js豆瓣图书推荐系统》开题报告 一、研究背景与意义 1. 研究背景 随着数字化时代的来临,图书资源日益丰富,用户面临着信息过载的问题。如何在海量图书中快速找到符合个人兴趣和需求的书籍成为了亟待解决的问题。传统的图书检索方式往往基于…

javaweb以html方式集成富文本编辑器TinyMce

前言: 单一的批量图片上传按钮,禁用tinymce编辑器,但是还可以操作图片编辑; 多元化格式的富文本编辑要求; 采用tinymce实现。 附: tinymce中文手册网站: http://tinymce.ax-z.cn/download-all.…

空间解析几何 3:空间点到线段和平面的距离【附MATLAB代码】

目录 空间中点到线段的距离 空间中点到平面的投影和距离 matlab代码 空间中点到线段的距离 空间中点到平面的投影和距离 matlab代码 function [dis,P2,t] point2Line (A1,B1,C1) %求空间一点到一线段的最短距离 %[dis,P2,Q2]pointSegmentDistance(A,B,C) %A B为线段首末端…

使用LlamaFactory进行模型微调

使用LlamaFactory进行模型微调 简介 论文地址:https://arxiv.org/pdf/2403.13372 仓库地址:https://github.com/hiyouga/LLaMA-Factory/tree/main 名词解释 1. 预训练 (Pre-training, PT) 预训练是指模型在大规模无监督数据集上进行初步训练的过程…

最强 OpenAI o1 逻辑推理正确率仅 50%!清华、智谱推出「大模型逻辑推理新基准」

9.11 和 9.9 哪个大? 这一连人类幼儿园儿童都能回答的问题,曾经(至今)难倒了众多大语言模型(LLM)。 然而,要想达到通用人工智能(AGI)的水平,LLM 不仅要完成“…

居民小区的有序充电策略及解决方案

0引言 全球经济增长导致化石能源过度消耗,加剧环境污染。电动汽车因其环保优势迅速崛起,预计到2030年中国电动汽车保有量将达到6000万辆。这有助于减少化石能源依赖,推广绿色出行,但也对电网稳定性构成挑战。因此,研究…

2.1 HTML5 - Canvas标签

文章目录 引言Canvas标签概述定义实例:创建画布 理解Canvas坐标系概述实例:获取Canvas坐标 获取Canvas环境上下文概述实例:获取Canvas上下文设置渐变色效果 结语 引言 大家好,今天我们要一起探索HTML5中一个非常有趣且强大的特性…

001 Hadoop安装、Spring整合测试

Hadoop安装、整合测试 文章目录 Hadoop安装、整合测试1.简介1.优点2.组成 2.安装1.安装jdk(如已安装可跳过)2.安装hadoop1.安装2. 修改配置文件core-site.xml3. 修改配置文件hdfs-site.xml4.启动hadoop5.启动yarn6.执行jps查看7.相关端口及配置位置8.访问…

Python数学难题:科拉兹猜想(又称为 3x+1 猜想、角谷猜想、哈塞猜想、冰雹猜想、乌拉姆猜想或叙拉古猜想)

Python数学难题:科拉兹猜想(又称为 3x1 猜想、角谷猜想、哈塞猜想、冰雹猜想、乌拉姆猜想或叙拉古猜想) 科拉兹猜想,又称为 3x1 猜想、角谷猜想、哈塞猜想、冰雹猜想、乌拉姆猜想或叙拉古猜想,是一个与自然数相关的猜…

查找占用特定端口程序,并杀死

windows 在 Windows 上查找和结束占用特定端口(如 9003)的程序,你可以使用以下步骤: 步骤 1:找到占用端口的进程 ID (PID) 打开命令提示符(按 Win R,输入 cmd,然后按回车&#x…

技术框架官方写法

知识背景: 在做汇报工作或者撰写简历的时候需要用到,希望对大家有帮助 总体介绍: Java: 始终保持 "Java" 的"J"大写,因为这是Oracle Corporation注册的商标。Spring Framework: 通常称其为 "Spring&q…

【React】事件绑定的方式

1. 内联函数绑定 这是最简单直接的方式&#xff0c;即在 JSX 语法中直接传递一个内联函数。这种方式每次渲染时都会创建新的函数实例&#xff0c;可能会导致不必要的性能开销。 class MyComponent extends React.Component {render() {return (<button onClick{() > th…

python中不变的数据类型有哪些

在Python中&#xff0c;不可变&#xff08;immutable&#xff09;数据类型是指一旦创建了这些类型的对象后&#xff0c;就不能改变其值。Python中的不可变数据类型包括以下几种&#xff1a; 数字 (int, float, complex): 这些类型的数值一旦创建就不能更改。例如&#xff0c;如…

速盾:高防服务器防火墙的特性是什么?

高防服务器防火墙是一种专业的网络安全设备&#xff0c;用于保护服务器免受各种网络攻击的侵害。它具有许多特性&#xff0c;以确保服务器的安全性和可靠性。 第一个特性是入侵检测系统&#xff08;IDS&#xff09;。高防服务器防火墙可以监视服务器上的网络流量&#xff0c;并…

使用Python实现深度学习模型:智能产品设计与开发

在智能产品设计与开发领域,深度学习模型的应用越来越广泛。本文将介绍如何使用Python构建一个简单的深度学习模型,并将其应用于智能产品的设计与开发。为了使内容尽可能通俗易懂,我们将以图像分类为例,详细讲解每一步骤。 1. 深度学习基础 深度学习是一种基于人工神经网络…

Spring Boot中使用MyBatis-Plus和MyBatis拦截器来实现对带有特定注解的字段进行AES加密。

1. 添加依赖 首先&#xff0c;在pom.xml文件中添加必要的依赖项&#xff1a; xml 深色版本 <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifac…

三级等保对postgresql的安全要求配置

密码策略 select * from pg_user select * from pg_settings; show password_encryption; show shared_preload_libraries; alter username postgres valid until 2024-05-11;日志审计 select name,setting from pg_settings where namelogging_collector or namelog_line_pr…

无人机航拍视频帧处理与图像拼接算法

无人机航拍视频帧处理与图像拼接算法 1. 视频帧截取与缩放 在图像预处理阶段,算法首先逐帧地从视频中提取出各个帧。 对于每一帧图像,算法会执行缩放操作,以确保所有帧都具有一致的尺寸,便于后续处理。 2. 图像配准 在图像配准阶段,算法采用SIFT(尺度不变特征变换)算…

Flutter 与 React Native - 详细深入对比分析(2024 年)

超长内容预警&#xff0c;建议收藏后阅。 Flutter 和 React Native 是跨平台应用程序开发的两个领先工具。了解它们的差异以及各自的最佳用例。 什么是Flutter&#xff1f; Flutter 是 Google 于 2018 年发布的用户界面 (UI) 软件开发套件。Flutter 可让您为多种平台和操作系统…