MySQL-关联查询和子查询

目录

一、笛卡尔积

二、表连接

1、内部连接

1.1 等值连接

1.2 非等值连接

2、外部链接

2.1 左外连接-LEFT JOIN

2.2 右外连接-RIGHT JOIN

2.3 全关联-FULL JOIN/UNION

三、子查询

1、嵌套子查询

2、相关子查询

3、insert和select语句添加数据

4、update和select语句(子查询)结合

四、数据库备份与还原


一、笛卡尔积

SELECT * FROM student,class;  

    观察笛卡尔积的特点:将两张表的数据组合在了一张二维表中,笛卡尔积中有些记录没有意义。

二、表连接

        在实际查询应用中,用户所需要的数据并不全在一个表中,可能存在多个表中,这时就需使用多表查询。

        在数据库应用中,经常需要从多个相关的表中查询数据,这就需要进行表连接。

1、内部连接

内部连接有以下两种语法形式:

 SELECT select_list FROM 表名1,表名2 WHERE 表1.列=表2.列;

或者

 SELECT 别名.list FROM 表1 别名1 [INNER] JOIN 表2 别名2 ON 别名1.列=别名2.列;

inner join on 内连接

一般用inner join 或 join 关键字来指定内连接。又可分为等值连接,非等值连接。

1.1 等值连接

        是在连接条件中使用比较运算符等于号(=)来比较连接列的列值,其查询结果中列出被连接表中的所有列。

SELECT S.学号,S.姓名,S.性别,S.籍贯,C.班级名称,C.年级FROM 学生信息 S INNER JOIN 班级信息 CON S.班级编号=C.班级编号;
1.2 非等值连接

是在连接条件中使用了除等号外的其它比较运算符,来比较连接列的列值。

案例:查询成绩大于40的学生个人情况,并按照成绩降序排列。

SELECT 学生信息 .学号,学生信息 .姓名,学生信息 .性别,学生信息 .班级编号,成绩表.成绩FROM 学生信息 INNER JOIN 成绩表ON 学生信息 .学号=成绩表.学号WHERE 成绩表.成绩>=40ORDER BY 成绩表.成绩 DESC;

2、外部链接

• 外部连接会返回FROM子句中提到的至少一个表或视图中的所有行。

• 外部连接分为左外部连接、右外部连接

        左外部连接对连接条件中左边的表不加限制;

        右外部连接对连接条件中右边的表不加限制。

2.1 左外连接-LEFT JOIN

        使用关键字LEFT OUTER JOIN 关键字对两个表进行连接,左外连接的查询结果中包含指定左表的所有行,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有找到匹配的行,则结果集中的右表的相对应的位置为NULL。

SELECT * FROM student s LEFT JOIN sc ON s.sno=sc.sno;

2.2 右外连接-RIGHT JOIN

        使用RIGHT OUTER JOIN 关键字对两个表进行连接,右外连接是左外连接的反向连接,只不过在查询结果集中包括的是指定右表的所有行。如果右边的某行在左表中没有找到匹配的行,则结果集中的左表的相对应位置为NULL。

SELECT * FROM course c RIGHT JOIN teacher t ON c.tno=t.tno;

2.3 全关联-FULL JOIN/UNION

mysql不支持FULL JOIN ,但是可以用左连接UNION右连接关键字实现全关联.

三、子查询

子查询在其他查询结果的基础上提供了一种有效的方式来表示where子句的条件。

子查询是可以嵌套在 SELECT、INSERT、UPDATE、DELETE 语句中。

子查询的 SELECT 查询总是使用圆括号括起来。

1、嵌套子查询

        在MySQL中子查询是可以嵌套使用的,并且可以在一个查询中嵌套任意多个子查询,即一个子查询中还可以包含另一个子查询,这种查询方式称为嵌套子查询。

例: 查询计算机系学生选修了哪些课程

SELECT * FROM sc WHERE sno IN(SELECT sno FROM StudentWHERE Sdept = ‘计算机系’);

例: 查询修了‘c02’课程且成绩高于此课程的平均成绩的学生的学号和成绩。

SELECT Sno , Grade FROM SCWHERE Cno = 'c02‘and Grade > (SELECT AVG(Grade) from SCWHERE Cno = 'c02');

2、相关子查询

相关子查询(单值子查询)

这样的子查询只返回一个值,然后将一列值与查询返回的值进行比较。

例:查询和'静静'在同一个班的学生的信息。

SELECT 学生信息 .学号,学生信息 .姓名,学生信息 .性别,班级信息.班级编号,班级信息 .班级名称,班级信息 .年级FROM 学生信息 INNER JOIN 班级信息ON 学生信息 .班级编号=班级信息.班级编号WHERE 学生信息 .班级编号=(SELECT 班级编号 FROM 学生信息 WHERE 姓名='ff');

3、insert和select语句添加数据

在INSERT语句中使用SELECT子句可以将一个或多个表或视图中的值添加到另一个表中。使用SELECT子句还可以同时插入多行。

INSERT语句中使用SELECT子句的语法形式为:

INSERT [INTO] table_name[(column_list)]SELECT select_list FROM table_name;

通过SELECT语句生成的结果集,再结合INSERT语句,可以把结果集插入到指定的表中,这种方法用于插入的数据不确定(通常多于一条),并且都具有一些特性时。

--拷贝表结构

CREATE TABLE table_bak LIKE table;

--拷贝表数据

CREATE TABLE table_bak_1 AS SELECT * FROM table;

4、update和select语句(子查询)结合

• 例:将计算机系全体学生的成绩加5分。

UPDATE SC SET Grade = Grade + 5WHERE Sno IN(SELECT Sno FROM StudentWHERE Sdept = '计算机系' );

四、数据库备份与还原

数据库热备份工具:mysqldump.exe(数据库在工作中备份)

备份:

mysqldump -h IP地址 -u 用户名 -p 密码 要备份的数据库名>本地电脑路径/数据文件名.sql

还原:

mysql -h IP地址 -u 用户名 -p 密码 数据库名<本地电脑路径/数据文件名.sql

use 数据库名;source 本地电脑路径/数据文件名.sql;

数据库冷备份工具:(数据库停止工作进行备份)

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

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

相关文章

AWTK-WIDGET-WEB-VIEW 实现笔记 (1) - 难点

webview 提供了一个跨平台的 webview 库&#xff0c;其接口简单&#xff0c;提供的例子也直观易懂。但是把它集成到 AWTK 里&#xff0c;还是遇到一些难题&#xff0c;这里记录一下&#xff0c;供有需要的朋友参考。 1. 作为 AWTK 控件 webview 提供的例子都是独立的程序&…

类与对象;

目录 一、认识类&#xff1b; 1、类的引入&#xff1b; 2、类的定义&#xff1b; 类的两种定义方式&#xff1a; 3、类的访问限定符及封装&#xff1b; 4、类的作用域&#xff1b; 5、类的实例化&#xff1b; 6、类对象模型&#xff1b; 计算类对象的大小&#xff1b; …

Ubuntu22.04LTS 部署前后端分离项目

一、安装mysql8.0 1. 安装mysql8.0 # 更新安装包管理工具 sudo apt-get update # 安装 mysql数据库&#xff0c;过程中的选项选择 y sudo apt-get install mysql-server # 启动mysql命令如下 &#xff08;停止mysql的命令为&#xff1a;sudo service mysql stop&#xff0…

使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan

使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan 背景 在使用Ant Design Vue 开发数据表格时&#xff0c;我们常常会遇到需要合并单元格的需求。 比如&#xff0c;某些字段的值可能会在多行中重复出现&#xff0c;而我们希望将这些重复的单元格合并为…

27.<Spring博客系统③(实现用户退出登录接口+发布博客+删除/编辑博客)>

PS&#xff1a;关于打印日志 1.建议在关键节点打印日志。 ①请求入口。 ②结果响应 2.在可能发生错误的节点打印日志 3.日志不是越多越好。因为打日志也会消耗性能。 日志也可以配置去除重复日志。 一、用户退出功能 判断用户退出。我们只需要在前端将token删掉就可以了。 由于…

[前端面试]javascript

js数据类型 简单数据类型 null undefined string number boolean bigint 任意精度的大整数 symbol 创建唯一且不变的值&#xff0c;常用来表示对象属性的唯一标识 复杂数据类型 object&#xff0c;数组&#xff0c;函数,正则,日期等 区别 存储区别 简单数据类型因为其大小固定…

uniapp自动注册机制:easycom

传统 Vue 项目中&#xff0c;我们需要注册、导入组件之后才能使用组件。 uniapp 框架提供了一种组件自动注册机制&#xff0c;只要你在 components 文件夹下新建的组件满足 /components/组件名/组件名.vue 的命名规范&#xff0c;就能直接使用。 注意&#xff1a;组件的文件夹…

人工智能与SEO优化中的关键词策略解析

内容概要 在当今数字化快速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;与搜索引擎优化&#xff08;SEO&#xff09;的结合正变得愈发重要。关键词策略是SEO优化的一项基础工作&#xff0c;它直接影响到网站的可见性和流量。通过运用智能算法&#xff0c;企业能…

【异常解决】Linux shell报错:-bash: [: ==: 期待一元表达式 解决方法

博主介绍&#xff1a;✌全网粉丝21W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…

卷径计算(基于卷径变化微分方程计算实时卷径)

这里本质是积分法计算实时卷径,PLC里如何实现数值积分器算法请参考下面文章链接: 博途PLC数值积分器(矩形积分和梯形积分法自由切换) 博途PLC数值积分器(矩形梯形积分自由切换)_博图 积分计算-CSDN博客文章浏览阅读505次。本文详细介绍了博途PLC的数值积分器功能,涵盖了矩…

【Mysql】Mysql的多表查询---多表联合查询(上)

1、介绍 多表查询就是同时查询两个或者两个以上的表&#xff0c;因为有的时候&#xff0c;用户在查看数据的时候&#xff0c;需要显示的数据来自多张表&#xff0c;多表查询有以下分类&#xff1a; &#xff08;1&#xff09;交叉连接查询&#xff08;产生笛卡尔积&#xff0…

Shell基础(4)

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团…

跨平台WPF框架Avalonia教程 十五

ListBox 列表框 列表框从元素源集合中显示多行元素&#xff0c;并允许选择单个或多个。 列表中的元素可以组合、绑定和模板化。 列表的高度会扩展以适应所有元素&#xff0c;除非特别设置&#xff08;使用高度属性&#xff09;&#xff0c;或由容器控件设置&#xff0c;例如…

有序数组的平方(leetcode 977)

一个数组&#xff0c;返回一个所有元素的平方之后依然是一个有序数组。&#xff08;数组中含负数&#xff09; 解法一&#xff1a;暴力解法 所有元素平方后再使用快速排序法重新排序&#xff0c;时间复杂度为O(nlogn)。 class Solution { public:vector<int> sortedSqu…

使用 Go 实现将任何网页转化为 PDF

在许多应用场景中&#xff0c;可能需要将网页内容转化为 PDF 格式&#xff0c;比如保存网页内容、生成报告、或者创建网站截图。使用 Go 编程语言&#xff0c;结合一些现有的库&#xff0c;可以非常方便地实现这一功能。本文将带你一步一步地介绍如何使用 Go 语言将任何网页转换…

ASP.NET 部署到IIS,访问其它服务器的共享文件 密码设定

asp.net 修改上面的 IIS需要在 配置文件 添加如下内容 》》》web.config <system.web><!--<identity impersonate"true"/>--><identity impersonate"true" userName"您的账号" password"您的密码" /><co…

基础IO2

文章目录 磁盘结构磁盘存储结构磁盘的逻辑结构引入文件系统理解文件系统inode 映射 data blocks文件名与inode的关系dentry树文件描述符与进程之间的关系 深刻理解软硬链接软链接硬链接 动静态库静态库1. 手动制作静态库2.调用静态库(1)安装到系统(2)自己指定查找路径(3)自己创…

计算机网络:运输层 —— TCP的流量控制

文章目录 TCP的流量控制TCP的流量控制方法滑动窗口机制持续计时器 TCP的流量控制 当 TCP 客户端持续发送大量数据时&#xff0c;应用程序可能正忙于其他任务&#xff0c;并不一定能够立刻取走数据&#xff0c;这会造成接收方接收缓存的溢出&#xff0c;导致数据丢失。 TCP 为应…

Flink_DataStreamAPI_执行环境

DataStreamAPI_执行环境 1创建执行环境1.1getExecutionEnvironment1.2createLocalEnvironment1.3createRemoteEnvironment 2执行模式&#xff08;Execution Mode&#xff09;3触发程序执行 Flink程序可以在各种上下文环境中运行&#xff1a;我们可以在本地JVM中执行程序&#x…

鸿蒙中如何实现图片拉伸效果

2024年10月22日&#xff0c;华为发布会上&#xff0c;推出鸿蒙5.0。现在加入恰逢时机&#xff0c;你&#xff0c;我皆是鸿蒙时代合伙人。无论为了学习技术&#xff0c;还是为了谋福利&#xff0c;在鸿蒙的浩瀚海洋中分到一杯羹。现在学习鸿蒙正当时。 一文了解鸿蒙中图片拉伸的…