首页 > 数据库 >MySQL数据库进阶 自定义函数

MySQL数据库进阶 自定义函数

时间:2023-09-10 19:55:39浏览次数:40  
标签:进阶 name 自定义 创建 视图 MySQL view 函数

自定义函数

在MySQL中,您可以使用自定义函数来扩展数据库管理系统的功能。自定义函数允许您封装一段可重用的代码,并在查询和其他操作中调用它。以下是在MySQL中创建和使用自定义函数的一般步骤:

1、创建自定义函数语法:

CREATE FUNCTION function_name(parameters) 
RETURNS return_type
BEGIN
  -- 函数逻辑
END;

在上述语法中,您需要提供函数的名称、参数和返回类型。您还可以在BEGINEND之间编写函数的逻辑。
2、调用自定义函数:

SELECT function_name(parameters);

通过在SELECT语句中使用函数名称和参数,您可以调用自定义函数并获取返回结果。

下面是一个简单的示例,演示如何创建一个自定义函数,该函数将两个整数相加并返回结果:

-- 创建自定义函数  
CREATE FUNCTION add_numbers(a INT, b INT)  
RETURNS INT  
BEGIN  
    DECLARE result INT;  
    SET result = a + b;  
    RETURN result;  
END;  
  
-- 调用自定义函数  
SELECT add_numbers(5, 10); -- 输出结果为 15

在上述示例中,我们创建了一个名为add_numbers的自定义函数,它接受两个整数参数ab,并返回它们的和。然后,我们通过在SELECT语句中调用该函数,并传递参数(5, 10),获得了结果 15

函数与存储过程区别

  • 函数与存储过程最大的区别是函数必须有返回值,否则会报错

函数特点

  1. 创建函数使用create function 函数名(参数) returns 返回类型;
  2. 函数体放在begin和end之间;
  3. returns 指定函数的返回值;
  4. 函数调用使用select 函数名称();
  5. reads sql data,可读取SQL,但不可修改 SQL 数据

视图

MySQL视图是一种虚拟表,它是基于一个或多个基本表(或其他视图)的查询结果集创建的。视图并不实际存储数据,而是根据查询定义动态生成结果集。您可以像操作基本表一样使用视图,例如查询、插入、更新和删除数据。

创建视图的好处包括:

  1. 简化复杂的查询:您可以将复杂的查询定义为视图,然后简单地引用该视图,而不需要每次都编写复杂的查询语句。
  2. 安全性:您可以使用视图来限制用户对数据的访问。例如,您可以创建一个只显示某些列的视图,或者只显示某个用户的数据,而不暴露整个表的数据。
  3. 灵活性:您可以根据需要创建多个视图,以便以不同的方式查看和操作数据。

语法:

CREATE VIEW view_name AS  
SELECT column1, column2, ...  
FROM table_name  
WHERE condition;

其中,view_name 是您想要为视图指定的名称,column1, column2, ... 是您想要从基本表中选择的列,table_name 是基本表的名称,condition 是一个可选的筛选条件,用于指定从基本表中选择哪些行。

创建了视图之后,您可以像操作基本表一样使用它,例如:

SELECT * FROM view_name;

要更新视图中的数据,请使用以下语法:

UPDATE view_name  
SET column1 = value1, column2 = value2, ...  
WHERE condition;

要删除视图,请使用以下语法:

DROP VIEW view_name;

视图的优缺点

  • 优点:

    1. 简单性,视图能简化用户的操作
    2. 安全性,视图使用户能以多种角度看待同一数据,能够对机密数据提供安全保护
    3. 逻辑独立性,视图对重构数据库提供了一定程度的逻辑独立性
  • 缺点:

    1. 性能相对较差,简单的查询也会因为牵扯多表而复杂
    2. 修改不方便,回因为表间约束而使一些数据视图无法修改

举例

-- 创建视图
create view view_student
as
select * from student;

-- 使用视图
select * from view_student where age <= 21;

-- 视图的修改
ALTER view view_student as select * from student where sex = '男';

-- 使用视图
select * from view_student where age <= 21;

-- 删除视图
drop view view_student;

 

标签:进阶,name,自定义,创建,视图,MySQL,view,函数
From: https://www.cnblogs.com/yund/p/17691762.html

相关文章

  • Vue进阶(幺陆柒):Vue 项目调试技能
    (文章目录)一、前言在Vue项目开发过程中,当遇到应用逻辑出现错误,但又无法准确定位的时候,知晓Vue项目调试技巧至关重要。同后台项目开发一样,可以在JS实现的应用逻辑中设置断点,并进行单步、进入方法内、跳出方法等调试,从而准确定位问题根源。本文主要讲解针对JetBrains系列WebStor......
  • Navicat连接Docker创建的MySQL运行实例
    一步步教你在Docker中安装MySQL(qq.com)Docker部署MySql应用-魔鬼YU天使-博客园(cnblogs.com)拉取MySQL镜像我们可以通过Docker提供的命令,直接从DockerHub上拉取MySQL的官方镜像。打开终端,输入如下命令:dockerpullmysql:8.0其中,:8.0表示我们需要下载的MySQL版本,你也......
  • linux7.X二进制方式安装MySQL5.7.X
    概述系统环境服务器型号VMwareVirtualPlatform操作系统版本RHEL7.6x86_64主机名linuxpg51PubIP192.168.115.51数据库安装版本mysqlVer14.14Distrib5.7.30,forlinux-glibc2.12(x86_64)usingEditLinewrapper安装路径规划[mysql@linuxpg51/]$tree-L1/mysql/mysq......
  • MySQL基础
    要学习数据库首先要先搞清楚三个概念数据库(DB):是存储数据的仓库数据库管理系统(DBMS):管理数据库的大型软件SQL:通过SQL操作数据库管理系统操作数据库,对数据库进行增删改查等由此我们可以知道数据库就是安装在操作系统之上的数据仓库,用于存储数据。我们也先认识一个概念->关系型数据......
  • 【k8s】k8s构建mysql双主集群
    背景当前很多开源系统都是基于k8s,而部署时会遇到组件包含mysql的情况。理想的情况下,是将mysql迁移到云上托管。但实际情况可能比较复杂,比如这个开源框架需要mysql的DML权限,但是公司DBA不提供;而基于k8s部署mysql的问题是,这个mysql集群往往是单点的。一般mysql会依赖于一个本地挂......
  • Windows安装MySQL Community Server 8.1.0 Innovation
    检查是否安装按win+r打开运行,输入services.msc回车在服务列表中查找mysql服务,如果存在mysql服务,说明已经安装mysql。反之,则说明没有安装了mysql服务。下载并安装下载链接:https://dev.mysql.com/downloads/mysql/MySQLCommunityServer8.1.0Innovation有msi版本......
  • 【高级】MySQL主从复制
    【一】引入之前做过redis的主从,很简单mysql稍微复杂一些,搭建mysql主从的目的是?读写分离单个实例并发量低,提高并发量只在主库写,读数据都去从库----》读多写少读写分离通过将读操作分发到从库,可以分摊主库的读负载,提高整体的并发处理能力。主库只需处理写操作,从库......
  • MySQL面试问题集锦
    1、请简要说明一条SQL语句的执行过程。参照:深度好文:MySQL架构(baidu.com)一文读懂MySQL查询语句的执行过程(taodudu.cc)MySQLServer架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。2、mysql有关权限的表都有哪几个MySQL服务器通过权限表来控制用户对......
  • Flink 1.17教程:输出算子之输出到MySQL(JDBC)
    输出到MySQL(JDBC)写入数据的MySQL的测试步骤如下。(1)添加依赖添加MySQL驱动:mysqlmysql-connector-java8.0.27官方还未提供flink-connector-jdbc的1.17.0的正式依赖,暂时从apachesnapshot仓库下载,pom文件中指定仓库路径:apache-snapshotsapachesnapshotshttps://repository.a......
  • nacos配置mysql链接
    因为是Linux安装,所以下载的是tar.gz的 下载完之后直接用的MobXtrem上传到任意文件夹中,然后用下面的命令解压到当前文件夹:tar-zxvfnacos-server-1.4.2.tar.gz然后进入到bin文件夹下面,执行单机命令启动:./startup.sh-mstandalone这个时候就已经可以访问页面域名/ip:8848/......