简简单单 My SQL 学习笔记(3)——连接和嵌套查询

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 简简单单 My SQL 学习笔记(3)——连接和嵌套查询

初始数据

学生表

create table Student(Sid varchar(6), Sname varchar(10), Sage datetime, Ssex varchar(10));
insert into Student values('01' , '小唐' , '2002-07-11' , '男');
insert into Student values('02' , '小喜' , '2002-05-21' , '男');
insert into Student values('03' , '小欢' , '2002-05-21' , '男');
insert into Student values('04' , '小黄' , '2002-02-14' , '女');

成绩表

create table SC(Sid varchar(10),  score decimal(18,1));
insert into SC values('01' , 80);
insert into SC values('02' , 70);
insert into SC values('04' , 50);

大概是这样


连接 表1.相同列=表2.相同列

一听连接这个东西就是把我们相同的列重合在一起,然后形成一个表,大概就是这样,数据结构还是和上一篇讲的一样三层结构

比如说在这里,我想把这两个表连起来,让我还可以看到每一个人的成绩

select Student.Sid,Sname,Sage,Ssex,score
from Student, SC
where Student.Sid= SC.Sid;

由于我们的sid是两个表都有的,所以说,我们还要去标明他们各自的所属关系,即student.sid和sc.sid。对于那一些我们单独没有重复的列名,我们就可以选择不标

这个时候我们发现一个问题,我们小欢同学的成绩不见了!!!,我们回到上面去看我们的成绩表,sid=3的根本没有学号和成绩,好吧,他根本没有成绩,但是这个时候我们想要他显示怎么办???


左右连接 表名 left/right outer join 表名 on(相同列名)

他和直接连接最大的不同就是,他会显示出没有的数据

右连接

select Student.Sid,Sname,Sage,Ssex,score
from Student right outer join sc on(Student.Sid= SC.Sid);

就有人问了,小唐,小唐怎么还是一样的呀,嘿嘿,我还没有说完呢,我们现在的是右连接,只会显示我们右边所有的元组,我们右边是什么,那个是成绩表!!!我们可以交换两边的次序,同时也可以在不改变次序的情况下,使用左连接!!!


左连接

select Student.Sid,Sname,Sage,Ssex,score
from Student left outer join sc on(Student.Sid= SC.Sid);


嵌套查询

这个东西,很多老师讲得很复杂,但是我的理解就真的很单纯,先举个例子吧

我们需要查找及格学生的名字!!!必须用嵌套

select  Sname
from Student
where sid in
 (
select sid
from sc
where score>=60
);

简单的来说,就是我们在where里面使用a in b(就是a表里面包含b的输出),用下面的式子来查找相应的学号,然后在返回上一级里面的sid查找

不难发现的是,他就是由两个查询的基本结构,组成的

他的最底层的嵌套都可以单独执行,我们看看这个部分

输出的就是我们的符合条件的学号,返回上一级他的逻辑就是这样子来写

是不是一下子就清楚了,就是子循环返回的结果,传递给上一级,然后上一级再去做出选择

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
2月前
|
SQL 缓存 监控
MySQL缓存机制:查询缓存与缓冲池优化
MySQL缓存机制是提升数据库性能的关键。本文深入解析了MySQL的缓存体系,包括已弃用的查询缓存和核心的InnoDB缓冲池,帮助理解缓存优化原理。通过合理配置,可显著提升数据库性能,甚至达到10倍以上的效果。
|
2月前
|
SQL 关系型数据库 MySQL
MySQL的查询操作语法要点
储存过程(Stored Procedures) 和 函数(Functions) : 储存过程和函数允许用户编写 SQL 脚本执行复杂任务.
225 14
|
2月前
|
SQL 关系型数据库 MySQL
MySQL的查询操作语法要点
以上概述了MySQL 中常见且重要 的几种 SQL 查询及其相关概念 这些知识点对任何希望有效利用 MySQL 进行数据库管理工作者都至关重要
108 15
|
2月前
|
SQL 监控 关系型数据库
SQL优化技巧:让MySQL查询快人一步
本文深入解析了MySQL查询优化的核心技巧,涵盖索引设计、查询重写、分页优化、批量操作、数据类型优化及性能监控等方面,帮助开发者显著提升数据库性能,解决慢查询问题,适用于高并发与大数据场景。
|
2月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
123 13
|
2月前
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
989 11
|
2月前
|
SQL 关系型数据库 MySQL
排除通过IP访问MySQL时出现的连接错误问题
以上步骤涵盖了大多数遇到远程连接 MySQL 数据库时出现故障情形下所需采取措施,在执行每个步骤后都应该重新尝试建立链接以验证是否已经解决问题,在多数情形下按照以上顺序执行将能够有效地排除并修复大多数基本链接相关故障。
338 3
|
2月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
354 11
|
SQL Perl 存储
PL/SQL 嵌套记录与记录集合
    将多个逻辑上不相关列组合到一起形成了PL/SQL的记录类型,从而可以将记录类型作为一个整体对待来处理。而且PL/SQL记录类型可以进行嵌套以及基于PL/SQL记录来定义联合数组,嵌套表等。
1049 0
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")

推荐镜像

更多