IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL:存储过程与存储引擎 -> 正文阅读

[大数据]MySQL:存储过程与存储引擎

目录

存储过程

函数与存储过程区别

定义

存储引擎


存储过程

存储过程是一个包括多条 SQL 语句的集合,专用于特定表的特定操作

函数与存储过程区别

函数是专用于进行数据处理,并将结果返回给调用者,它更多情况下是一条 SQL 语句的参与者,无法直接运行,并且不涉及某个特定表

存储过程是多条 SQL 语句的执行者,这是它们的本质区别

定义

定义存储过程与定义函数极为相似,它也可以包含参数,函数中使用的语句这里也能使用,但是它没有返回值

CREATE PROCEDURE test(`name` VARCHAR(20), pwd VARCHAR(20))

BEGIN

? INSERT INTO users(username, `password`) VALUES(`name`, pwd);

END

可以在存储过程中编写多条 SQL 语句,但是注意,MySQL 的存储过程不具有原子性,当出现错误时,并不会回滚之前的操作,因此需要自己来编写事务保证原子性

执行存储过程

通过使用`call`来执行一个存储过程,如果存储过程有参数,那么还需要填写参数

CALL test('zzp', '123456')

使用游标来遍历一个SELECT语句查询的结果

游标的使用步骤

* DECLARE 游标名称 CURSOR FOR 查询结果 ? - ?定义游标

* declare (continue/exit) handler for 异常名称(ID) 做点什么

* OPEN cur ? ? - ? 开启游标

* FETCH 游标名称 INTO 存储结果的变量 ? ?- ? ?从顶部开始,每执行一次,向下移动,如果已经在最底部,则触发异常

* CLOSE cur ? ?- ? 关闭游标

BEGIN

? ? DECLARE id INT;

? ? DECLARE `name` VARCHAR(10);

? ? DECLARE sex VARCHAR(5);

? ? DECLARE score INT;

? ? DECLARE a INT DEFAULT 0;

? ? DECLARE cur CURSOR FOR SELECT * FROM student;

? ? -- 必须在游标定义之后编写

? ? DECLARE CONTINUE HANDLER FOR 1329 SET a = 1;

? ? OPEN cur;

? ? WHILE a = 0 DO

? ? ? ? FETCH cur INTO id, `name`, sex, score;

? ? ? ? SELECT id, `name`, sex, score;

? ? END WHILE;

? ? CLOSE cur;

? ? SELECT 1;

END

限定存储过程的参数传递

比如希望用户给一个参数用于接收数据,而不是值传递,可以将其设定为 OUT 类型

CREATE PROCEDURE `lbwnb`(OUT a INT)

BEGIN

? ? SET a = 100;

END

所有的参数默认为`IN`类型,也就是只能作为传入参数,无法为其赋值,而这里把参数设定为`OUT`类型,那么参数无法将值传入,而只能被赋值。如果既希望参数可以传入也可以被重新赋值,可以将其修改为`INOUT`类型。

存储引擎

存储引擎就像我们电脑中的 CPU,整个 MySQL 最核心的部分,数据库中的数据如何存储,数据库能够支持哪些功能,我们的增删改查请求如何执行,都是由存储引擎来决定的

- MyISAM:MySQL5.5 之前的默认存储引擎,在插入和查询的情况下性能很高,但是它不支持事务,只能添加表级锁。

- InnoDB:MySQL5.5 之后的默认存储引擎,它支持 ACID 事务、行级锁、外键,但是性能比不过 MyISAM,更加消耗资源。

- Memory:数据都存放在内存中,数据库重启或发生崩溃,表中的数据都将消失。

查看 MySQL 支持的存储引擎

show engines;

在创建表时,也可以为表指定其存储引擎?,还可以在配置文件中修改默认的存储引擎

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:04:09  更:2022-10-31 12:06:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:49:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码