赞
踩
SQL(Structured Query Language)是一种用于管理关系型数据库的标准化语言,它用于定义、操作和管理数据库中的数据。SQL是一种通用的语言,可以用于多种关系型数据库管理系统(RDBMS),如MySQL、Oracle、SQL Server等。
MySQL是一种开源的关系型数据库管理系统,它使用SQL作为其查询语言。MySQL是最流行的开源数据库之一,它具有高性能、可靠性和可扩展性。MySQL支持多用户、多线程和多表操作,可以在各种操作系统上运行。
因此,SQL是一种语言,而MySQL是一种关系型数据库管理系统,它使用SQL作为其查询语言。SQL可以用于其他关系型数据库管理系统,而MySQL是其中的一种。
MySQL最为最流行的开源数据库,其重要性不言而喻,也是大多数程序员接触的第一款数据库,深入认识和理解MySQL也比较重要。
本篇博客介绍存储过程 (store procedure),分析其应用领域,在Navicat中使用MySQL的存储过程,并结合Mybatis-Plus使用存储过程。
其他相关的MySQL博客文章列表如下
SQL学习(1)——数据库概念+单表SQL查询+多表SQL查询
SQL进阶(2)——SQL语句类型 & 增删改查CRUD & 事务初步 & 表关联关系 & 视图 +索引
MySQL持久化数据——主从分离 & Linux下创建2个MySQL的Docker容器 & 挂载方式启动 & 配置主从
redis漏洞回顾 & MySQL数据安全解决 搭建主从集群MySQL & 相关设置
1.介绍存储过程 (store procedure);
2.分析其应用领域;
3.Navicat中使用MySQL的存储过程;
结合Mybatis-Plus使用存储过程;
数据库存储过程是一组预定义的SQL语句集合,它们被存储在数据库中并可以被多次调用。存储过程通常用于执行一系列的数据库操作,如查询、插入、更新和删除等。存储过程可以接受参数,并且可以包含条件判断、循环和异常处理等逻辑。存储过程可以在数据库服务器上执行,减少了网络传输的开销,提高了数据库的性能和安全性。
存储过程的优点包括:
在金融领域用的多,互联网领域用的少,阿里甚至禁止使用存储过程,阿里禁止使用存储过程的原因主要有以下几点:
基于以上原因,阿里等一些公司更倾向于将业务逻辑放在应用程序中,而不是使用存储过程。这样可以提高应用程序的可移植性、可维护性和性能,并更好地控制安全性和扩展性。然而,是否使用存储过程还是应该根据具体的业务需求和数据库管理系统的特性来决定。
从业务角度来看,存储过程更容易保持业务的规范性、一致性,而互联网不用存储过程主要是因为业务的随意性、一次性。
上个世纪90年代后期。IBM的并行计算机+DB2数据库/Oracle数据库软件是当时选择不多的解决方案。当时的存储和网络的性能都很差,对于银行来说,实在是没有必要和可能把数据从数据库读出来,交由应用服务器处理,系统[吞吐量](TPS指标)太低。相反地,还会导致一系列的分布式处理的问题。
相比银行的财大气粗,当年互联网可是草根,没钱又没人(后来也是一样,大多数公司没钱没人)。当年互联网建站的标配是Apache+PHP+MySQL。MySQL对于[数据库应用 的发展,贡献甚大。虽然MySQL在2003年提供了存储过程,但是在90年代[计算机专业 的教学中,数据库算是小众
https://www.zhihu.com/question/597801920/answer/3003905227?utm_id=0
指定名字和类型,注意varchar需要指定长度
不然会报错
加入长度后成功
CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_param`(
IN `name` VARCHAR ( 20 ),
OUT auth VARCHAR ( 20 ))
BEGIN
-- SELECT * FROM book_tab WHERE book_title LIKE name;
SELECT
SUBSTRING_INDEX( book_author, ',', 1 ) INTO auth
FROM
book_tab
WHERE
book_title LIKE NAME;
END
作用,取到第一作者
CALL proc_param('%中国人的性格%',@auth);
SELECT @auth
CREATE DEFINER=`root`@`localhost` PROCEDURE `findBookProc`()
BEGIN
SELECT
*
FROM
book_tab;
END
package com.tianju.bm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.tianju.bm.domain.entity.Book; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Options; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.mapping.StatementType; import java.util.List; import java.util.Map; @Mapper public interface BookMapper extends BaseMapper<Book> { /** * 存储过程全查询 * @param map * @return */ @Select({"call book_db.findBookProc()"}) @Options(statementType = StatementType.CALLABLE) List<Book> findAllProc(Map<String,Book> map); }
1.介绍存储过程 (store procedure);
2.分析其应用领域;
3.Navicat中使用MySQL的存储过程;
结合Mybatis-Plus使用存储过程;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。