mysql学习手记

1.视图

简单一句:将需要重复使用的mysql语句放到视图中去

视图优点:1.简化查询 2.减少数据库改动的成本 3.限制访问

-- 创建视图
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;-- 使用视图
SELECT * FROM view_name;

2.存储过程

简单一句:将sql代码与后端代码分开

在这里我们会正式接触sql变量,参数这个概念

SQL 变量

SQL 变量是在 SQL 语句中使用的一个命名存储位置,用于存储一个值。变量的值可以在执行期间更改。

在 MySQL 中,可以使用 SET 语句来声明和设置变量,也可以在存储过程、函数和触发器中声明和使用变量。以下是一个简单的示例:

-- 声明并赋值给变量
SET @variable_name = value;-- 使用变量
SELECT * FROM table_name WHERE column_name = @variable_name;

mysql的变量包括了用户变量与本地变量,上面的是用户变量的设置与声明方法,下面是本地变量

-- 定义并初始化本地变量
DECLARE local_variable INT;
SET local_variable = 10;-- 使用本地变量
SELECT * FROM table_name WHERE column_name = local_variable;

在这个例子中,local_variable 是一个整数类型的本地变量,它被赋予了值 10,并在查询中使用。

本地变量的作用域仅限于定义它们的存储过程、函数或触发器内部。这意味着你可以在同一数据库中使用相同的变量名来定义不同的本地变量,而不会发生冲突。

使用本地变量可以使代码更加模块化和可维护,因为它们将相关逻辑组织在一起,并将变量的作用范围限制在必要的范围内,从而减少了命名冲突和意外修改的风险。

SQL 参数

SQL 参数是在 SQL 查询或存储过程、函数、触发器定义中声明的特殊变量,用于接收外部传递的值。参数可以在查询或存储过程、函数、触发器调用时提供。

在存储过程、函数和触发器中,参数可以作为输入参数(IN)、输出参数(OUT)或者输入输出参数(INOUT)。

以下是一个简单的存储过程示例,其中包含输入参数:

-- 创建存储过程
DELIMITER $$
CREATE PROCEDURE procedure_name(IN parameter_name datatype)
BEGIN-- 使用参数SELECT * FROM table_name WHERE column_name = parameter_name;
END$$
DELIMITER ;-- 调用存储过程并传递参数值
CALL procedure_name('parameter_value');
-- 创建存储过程
DELIMITER $$
CREATE PROCEDURE procedure_name()
BEGIN-- SQL代码
END$$
DELIMITER ;-- 调用存储过程
CALL procedure_name();

3.函数

简单一句:创建类似于max,min这些mysql自带的函数

-- 创建函数
CREATE FUNCTION function_name(parameter1 datatype, parameter2 datatype, ...)
RETURNS datatype
BEGIN-- 函数逻辑
END;-- 调用函数
SELECT function_name(argument1, argument2, ...);

可以通过return返回处理后的数据 

4.触发器

简单一句:在mysql进行插入、更新、删除语句前后执行的一堆mysql代码

-- 创建触发器
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE ON table_name
FOR EACH ROW
BEGIN-- 触发器逻辑
END;-- 触发器自动执行,无需手动调用

5.事件

简单一句:根据计划执行的任务或一堆sql代码,可以设定什么时候执行,执行的频率

-- 创建事件
CREATE EVENT event_name
ON SCHEDULE EVERY 1 HOUR
DO
BEGIN-- 事件逻辑
END;-- 启用事件调度器
SET GLOBAL event_scheduler = ON;

6.事务

简单一句:代表单个工作单元的一组sql语句

例如:一个转账操作,在sql中就是先减去你的数额,再加到你想要转的账户上,相当于是两个sql update构成了一个转账操作,这个转账操作就是一个工作单元

-- 开始事务
START TRANSACTION;-- SQL语句
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
UPDATE table_name SET column1 = value1 WHERE condition;
DELETE FROM table_name WHERE condition;-- 提交事务
COMMIT;-- 或者回滚事务
ROLLBACK;

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

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

相关文章

怎样扫描二维码后看图片?图片二维码的制作方式

二维码是一种可以用来存储大量内容,通过扫描二维码的方式来向其他人提供内容,比较常见的展示内容有视频、图片、文件、文本、音频等。那么图片生成二维码的方法是什么样的呢?通过扫码查看图片,可以不下载的图片的同时快速预览内容…

护眼台灯品牌排行前十名有哪些?最新护眼台灯品牌排行前十名分享

在近几年,一个引人关注的健康现象是青少年近视问题的日益加剧。统计数字显示,近视的发病率不断攀升,令人忧心地发现,许多才刚步入小学一年级的孩子们,便已佩戴起了厚重的眼镜。其中最主要的原因就在于学习过程对数码设…

当AI遇见现实:数智化时代的人类社会新图景

文章目录 一、数智化时代的机遇二、数智化时代的挑战三、如何适应数智化时代《图解数据智能》内容简介作者简介精彩书评目录精彩书摘强化学习什么是强化学习强化学习与监督学习的区别强化学习与无监督学习的区别 前言/序言 随着科技的日新月异,我们步入了一个前所未…

电镀回用水除镍树脂的一种设备方法

【除镍树脂CH-90】是一种专门设计用于去除溶液中镍离子的高效吸附材料。随着工业发展和环境保护要求的提高,除镍树脂CH-90在废水处理、金属回收和环境保护等领域的应用越来越广泛。 除镍树脂CH-90的特点在于其高效的吸附性能和选择性。该树脂能够快速、准确地去除溶…

Dijkstra求最短路径

利用了广度优先搜索,使用贪心思想,不断扫描各点距离源点的距离,然后将最短距离保存,直到所有点扫描完毕。 详见青大王卓课程:https://www.bilibili.com/video/BV1nJ411V7bd?p132,该p一步一步的推导迪杰斯…

Deeplab的复现(pytorch实现)

DeepLab复现的pytorch实现 本文复现的主要是deeplabv3。使用的数据集和之前发的文章FCN一样,没有了解的可以移步到之前发的文章中去查看一下。 1.该模型的主要结构 对于代码部分,主要只写了模型部分的,其他部分内容基本和FCN的一致&#xf…

AIGC能给人类社会带来哪些变革?

随着人工智能技术的飞速发展,AIGC(人工智能生成内容)正在成为推动社会变革的重要力量。本文将从技术角度出发,探讨AIGC技术如何影响和改变人类生活的各个方面。 一、AIGC技术概述 AIGC,即人工智能生成内容&#xff0…

Anaconda删除虚拟环境目录pkgs和envs|conda瘦身

这个文件夹里面是专门放不同环境中的包的,只是没有区分环境,都混在一起了, 一般在想要删除一个虚拟环境,除了在命令行中输入conda remove -n your_env_name(虚拟环境名称) --all 然后在envs中删除虚拟环境的文件夹, 还…

密码学《图解密码技术》 记录学习 第十三章

目录 第十三章 13.1 本章学习的内容 13.2 PGP 简介 13.2.1 什么是 PGP 13.2.2 关于 OpenPGP 13.2.3关于GNU Privacy Guard 13.2.4 PGP 的功能 公钥密码 数字签名 单向散列函数 证书 压缩 文本数据 大文件的拆分和拼合 13.3 生成密钥对 13.4 加密与解密 13.4.1 加密 生成…

《ESP8266通信指南》12-Lua 固件烧录

往期 《ESP8266通信指南》11-Lua开发环境配置-CSDN博客 《ESP8266通信指南》10-MQTT通信(Arduino开发)-CSDN博客 《ESP8266通信指南》9-TCP通信(Arudino开发)-CSDN博客 《ESP8266通信指南》8-连接WIFI(Arduino开发…

three.js实现三维爆炸效果

主要是split函数 <template><div class"app"><div class"btns"><button click"split">{{ isSplit ? "组合" : "分解" }}</button></div><div ref"canvesRef" class&quo…

牛客周赛 Round 41 C-F

C 小红的循环移位 思路&#xff1a; 一个数是不是四的倍数&#xff0c;只用看最后两位是否能够整除4即可。 #include <bits/stdc.h>using namespace std; const int N 1e6 5; typedef long long ll; typedef pair<ll, ll> pll; typedef array<ll, 3> p3;…

ALSE 2024 Workshop报告分享┆机器人的场景理解与任务运动规划

2024年视觉与学习青年学者研讨会&#xff08;VALSE 2024&#xff09;于5月5日到7日在重庆悦来国际会议中心举行。本公众号将全方位地对会议的热点进行报道&#xff0c;方便广大读者跟踪和了解人工智能的前沿理论和技术。欢迎广大读者对文章进行关注、阅读和转发。文章是对报告人…

分布式与一致性协议之ZAB协议(五)

ZAB协议 ZAB集群如何从故障中恢复 如果我们想把ZAB集群恢复到正常状态&#xff0c;那么新领导者就必须确立自己的领导关系&#xff0c;成为唯一有效的领导者&#xff0c;然后作为主节点"领导"各备份节点一起处理读写请求 如何确立领导关系 前面提到&#xff0c;选…

全排列 - LeetCode 热题 55

大家好&#xff01;我是曾续缘&#x1f606; 今天是《LeetCode 热题 100》系列 发车第 55 天 回溯第 1 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案…

VISO流程图之子流程的使用

子流程的作用 整个流程图的框图多而且大&#xff0c;进行分块&#xff1b;让流程图简洁对于重复使用的流程&#xff0c;可以归结为一个子流程图&#xff0c;方便使用&#xff0c;避免大量的重复性工作&#xff1b; 新建子流程 方法1&#xff1a; 随便布局 框选3 和4 &#…

【busybox记录】【shell指令】sort

目录 内容来源&#xff1a; 【GUN】【sort】指令介绍 【busybox】【sort】指令介绍 【linux】【sort】指令介绍 使用示例&#xff1a; 排序 - 默认排序 排序 - 检查所给文件是否已经排序 排序 - 输出已经排序过的文件&#xff0c;不会重新排序 排序 - 忽略每行前面的空…

【区块链】智能合约简介

智能合约起源 智能合约这个术语至少可以追溯到1995年&#xff0c;是由多产的跨领域法律学者尼克萨博&#xff08;NickSzabo&#xff09;提出来的。他在发表在自己的网站的几篇文章中提到了智能合约的理念。他的定义如下&#xff1a;“一个智能合约是一套以数字形式定义的承诺&a…

人工智能|推荐系统——工业界的推荐系统之交叉

Factorized Machine 线性模型预测是特征的加权和。&#xff08;只有加&#xff0c;没有乘。&#xff09; 二阶特征交叉 可以通过矩阵分解减少模型参数量 深度交叉网络&#xff08;DCN&#xff09; 之前提到过的召回、排序模型中的神经网络可以用任意网络结构&#xff1b;常见的…

数组折半法查找数据(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> //定义数据&#xff1b; #define N 15int main() {//初始化变量值&#xff1b;int a[N], i, top, bott, loca, flag 1, sign, numb…