【技术点】用SQL语言操作关系型数据库Mysql中的数据(有练习资料)

用SQL语言操作关系型数据库Mysql中的数据

  • 一、增删改查
    • 增数据
    • 删数据
    • 改数据
    • 查数据
  • 二、触发器
  • 三、视图

练习题目链接

前言:
之前操作的时候大多时候都是用GPT生成的sql语句(有一说一真的实用),但是缺少自己完整独立完成sql语句书写的能力,直到学校课程上到了数据库原理才意识到好像真的需要认真学一下这些sql语句了😎,另外为了方便各位练习达到学习效果😉,如果想要答案可以私我单独发。

一、增删改查

增删改查,也称CRUD(Create, Remove, Update, Delete),是数据库中最常用的几个命令。

增数据

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

删数据

DELETE FROM table_name
WHERE condition;

改数据

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

查数据

SELECT column1, column2, ...
FROM table_name1
JOIN_TYPE table_name2 ON join_condition
WHERE condition
GROUP BY column1, column2, ...
HAVING condition
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...
LIMIT number;

在这里插入图片描述
上述图片展示了GROUP语句的效果:可以将检索到的数据按照某一个主键组合在一起。

在数据查询中涉及到了很多的关键词:

  • SELECT:用于指定要从数据库中检索的列。

column1, column2, …:代表要从表中检索的列名。这些列可以是任何有效的列名或表达式。

  • FROM table_name:指定查询将从哪个表中检索数据。

  • JOIN_TYPE:

    • INNER JOIN:返回两个表中匹配的行。

    • LEFT JOIN 或 LEFT OUTER JOIN:返回左表的所有行,即使右表中没有匹配的行。

    • RIGHT JOIN 或 RIGHT OUTER JOIN:返回右表的所有行,即使左表中没有匹配的行。

    • FULL OUTER JOIN:返回两个表中的所有行,无论它们是否匹配。

    • CROSS JOIN:返回两个表的笛卡尔积,即所有可能的行组合。
      table_name1, table_name2:代表参与查询的表的名称。

    • ON join_condition:指定如何连接两个表的条件。通常涉及两个表的关联字段。

  • WHERE condition:用于过滤结果集,只返回满足特定条件的行。

  • GROUP BY column1, column2, …:将结果集按指定的列分组,以便可以对每个组应用聚合函数。

  • HAVING condition:用于过滤分组后的结果集,与 WHERE 类似,但用于聚合函数。

  • ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], …:对结果集进行排序。ASC 表示升序,DESC 表示降序。

  • LIMIT number:限制结果集中返回的行数。

  • AND, OR:逻辑运算符,用于组合多个条件。

  • 聚合函数:

    • COUNT():计算行数。
    • SUM():计算总和。
    • AVG():计算平均值。
    • MAX():找出最大值。
    • MIN():找出最小值。

二、触发器

触发器(Trigger)是数据库管理系统中的一种特殊的存储过程,它会自动执行(触发)在关联表上执行 INSERT、UPDATE 或 DELETE 操作之前或之后。触发器的主要功能包括:

  • 数据完整性:确保数据库中的数据满足特定的完整性约束。
  • 自动更新:自动更新表中的数据或相关表中的数据。
  • 审核和日志记录:记录数据变更的历史,用于审计和跟踪。
  • 复杂业务逻辑:实现复杂的业务规则,这些规则难以通过简单的 INSERT、UPDATE 或 DELETE 操作实现。
  • 级联操作:在多个表之间执行级联的 INSERT、UPDATE 或 DELETE 操作。

触发器标准语法:

DELIMITER $$CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name
FOR EACH ROW
BEGIN-- 触发器逻辑-- 可以包含多个 SQL 语句
END$$DELIMITER ;

下面结合上面的资料链接给出一个删除触发器代码,在检测到SC表中有删除操作的时候对student表进行操作:

-- 定义删除操作触发器
CREATE TRIGGER sc_delete_trg
AFTER DELETE ON SC
FOR EACH ROW
BEGIN-- 更新 student 表中对应学生的平均成绩UPDATE studentSET avgGrade = (SELECT AVG(Grade) FROM SC WHERE SC.Sno = OLD.Sno)WHERE sno = OLD.Sno;-- 如果学生没有更多成绩记录,则从 student 表中删除该学生的 avgGrade 记录DELETE FROM studentWHERE sno = OLD.Sno AND NOT EXISTS (SELECT 1 FROM SC WHERE SC.Sno = OLD.Sno);
END;

三、视图

视图(View)是数据库中一种虚拟的表,其内容由 SQL 查询定义。视图的作用包括:

  • 简化复杂的查询:通过创建视图,可以将复杂的 SQL 查询封装起来,使得用户可以用简单的方式访问复杂的数据集。

  • 提高数据安全性:视图可以限制用户对特定数据的访问,只显示他们需要看到的数据,从而保护数据的敏感信息。

  • 逻辑数据独立性:视图可以提供逻辑上的抽象,使得应用程序代码可以独立于底层表结构的变化。

  • 重用SQL代码:视图可以被看作是可重用的SQL代码,可以在多个地方使用而不需要重复编写相同的查询。

  • 优化查询性能:在某些情况下,数据库系统可以对视图的查询进行优化,尤其是在视图被频繁访问时。
    **注意!:**视图本身不存储数据,存储数据还是依托表结构,视图仅仅是相当于提供一个观察数据的“窗口”。

视图示例代码:

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

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

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

相关文章

ELK之路第四步——整合!打通任督二脉

ELK之路第四步——整合!打通任督二脉 前言1.架构2.下载资源3.整合开始1.分别启动三个es2.启动kibana3.新建filebeat_logstash.yml配置文件4.修改logstash的启动配置文件5.启动logstash6.启动filebeat7.Kibana查看 4.结语 前言 在开始本篇之前,你需要用到…

从CAB到PAB Oracle的AI 23.6(之一)

Oracle的CAB和PAB 这是甲骨文的客户大会Oracle China Customer Advisory Board Metting CAB缩写。和Oracle China Partner Advisory Board Metting PAB缩写。 这已经不是我第一次参加了。虽然现在有信创,但是技术人讨论技术还是要纯粹一点。所为纯粹就像精武英雄中…

electron知识整理和问题汇总

知识整理 1.electron进程间通讯 快速通道 electron进程间通讯 2.关于electron-vue里的app.asar 快速通道 关于electron-vue里的app.asar 3.获取版本号等信息 remote.app.getVersion(); //加载应用程序的版本号。 如果应用程序的 package. json 文件中找不到版本号, 则返回…

ROS(快速初步入门)

目录 一、节点与节点管理器 二、通信方式 三、参数 四、文件系统 五、ROS命令行工具 六、创建工作空间与功能包 1)工作空间 2)创建功能包 七、发布者Publisher的代码实现 八、订阅者Subscriber的编程实现 九、自定义话题并使用 十、Client客户…

leetcode-62-不同路径

题解: 1、设dp[i][j]代表到达(i,j)点最多的路径;题目要求机器人每次只能向右或向下走一步,所以到达(i,j)点的最多路径为到达(i-1,j)的最多路径与到达(i,j-1)的最多路径之和。即dp[i][j]dp[i-1][j]dp[i][j-1]。 2、初始化一个M*N的矩阵dp,将…

【问题解决】pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

今天配置完poetry环境变量之后pnpm不能用了 具体报错 pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1pnpm run dev~~~~ Ca…

【设计模式】如何用C++实现依赖倒置

【设计模式】如何用C实现依赖倒置 一、什么是依赖倒置? 依赖倒置原则(Dependency Inversion Principle,DIP)是SOLID面向对象设计原则中的一项。它的核心思想是: 高层模块不应该依赖于低层模块,两者都应该…

达梦数据迁移工具DTS使用实践

1、环境描述 2、DTS概述 1.支持视图、存储过程/函数、包、类、同义词、触发器等对象迁移; 2.支持数据类型的自动映射,编码转换; 3.支持根据条件自定义迁移部分数据; 4.向导式迁移步骤,上手简单; 5.支持 we…

瑞格智慧心理服务平台 NPreenSMSList.asmx sql注入漏洞复现

0x01 产品描述: ‌ 瑞格智慧心理服务平台‌是一个集心理测评、心理咨询、心理危机干预、心理放松训练等功能于一体的综合性心理健康服务平台。该平台由北京瑞格心灵科技有限公司开发,旨在为用户提供全方位的心理健康服务。0x02 漏洞描述:…

【经典论文阅读11】ESMM模型——基于贝叶斯公式的CVR预估

传统的CVR模型(也就是直接对conversion rate建模的模型)在实际应用中面临两个问题(样本选择偏差与数据稀疏性问题)。为了解决这两个问题,本文提出ESMM模型。该模型巧妙地利用用户行为序列去建模这个问题,从…

OpenCV基础01

目录 一、环境安装 二、显示窗口 三、创建图片 四、图片保存 五、图像裁剪 六、调整图片大小 七、图像绘制 1、绘制圆形 2、绘制矩形 3、绘制文本 4、绘制直线 5、中文文本 八、控制鼠标 九、鼠标事件 十、视频处理 OpenCV作为C和C语言的源代码文件,…

git:将多个提交合并为一个

如何将第一至第五次提交合并为一个? 1. 使用 git log -n 命令查看spring boot admin的commit-id,本例n6,命令如下: PS E:\liguogang\spring-cloud> git log -62. 使用 git reset --soft commit-id 命令将前五次提交重置到工作…

Leetcode 二叉树中的最大路径和

算法思想 这道题要求在一棵二叉树中找到路径和最大的路径。路径可以从树中任意一个节点开始,到任意一个节点结束,但路径上的节点必须是连续的。 算法使用递归的方式来遍历树中的每个节点,并在遍历过程中计算包含当前节点的最大路径和。具体…

Python 变量在函数中的作用域

什么是局部变量? 作用范围在函数内部,在函数外部无法使用 什么是全局变量? 在函数内部和外部均可使用 如何将函数内定义的变量声明为全局变量? 使用global关键字, global变量 练习: 演示局部变量 #…

【Android】Kotlin教程(4)

文章目录 1.field2.计算属性3.主构造函数4.次构造函数5.默认参数6.初始化块7.初始化顺序7.延迟初始化lateinit8.惰性初始化 1.field field 关键字通常与属性的自定义 getter 和 setter 一起使用。当你需要为一个属性提供自定义的行为时,可以使用 field 来访问或设置…

SSH登录介绍

说明:一般登录服务器,我们可以用远程连接工具,如XShell、Windterm等,或者通过公司搭建的JumpServer(跳板机、堡垒机)来连接。前者是点对点登录,输入主机、端口,通过SSH协议登录&…

unity中预制体的移动-旋转-放缩

unity中预制体的移动-旋转-放缩 左上侧竖栏图标介绍Tools(手形工具)Move Tool(移动工具,单位米)Rotate Tool(旋转工具,单位角度)Scale Tool(缩放工具,单位倍数)Rect Tool(矩形工具)Transform Tool(变换工具)图标快捷键对照表工具使用的小技巧…

HarmonyOS开发 - 本地持久化之实现LocalStorage实例

用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。数据存储形式为键值对,键的类型为字符串型,值的存储数据类型包括数字型、字符型、布尔型以及这3种类型的数组类型。 说明&#x…

java程序打包为一个exe程序

ok,最近学到了一个有意思的东西 那就是如何将自己写好的java程序打包成一个exe程序,发给别人,然后运行。 那么开始之前,请先安装整个工具: exe4j:https://www.ej-technologies.com/exe4j/download&#…

高并发设计模式之ForkJoin模式

分而治之是一种思想,所谓分而治之就是把一个复杂的算法问题按一定的分解方法分为规模较小的若干部分,然后逐个解决,分别找出各部分的解,最后把各部分的解在整合成整个问题的解.ForkJoin模式就是分而治之思想的另一种应用. ForkJoin模式的原理 ForkJoin模式先把一个大任务分解…