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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 简简单单 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查找

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

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

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

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7天前
|
SQL IDE Java
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
4天前
|
SQL Oracle 关系型数据库
MySQL学习笔记
MySQL学习笔记
13 0
|
6天前
|
存储 关系型数据库 MySQL
MySQL数据库的数据类型、语法和高级查询
MySQL数据库的数据类型、语法和高级查询
22 0
|
5天前
|
JavaScript 前端开发 关系型数据库
Node.js 连接 MySQL
Node.js 连接 MySQL
18 5
|
6天前
|
存储 缓存 监控
MySQL 8.0中查询缓存的废弃与原因分析
MySQL 8.0中查询缓存的废弃与原因分析
22 1
|
1天前
|
关系型数据库 MySQL Java
连接 MySQL 数据库使用 JDBC
连接 MySQL 数据库使用 JDBC
4 0
|
4天前
|
SQL 关系型数据库 MySQL
MySQL学习笔记
1. MySQL基础:包括数据库概念、常见DBMS(MySQL、Oracle、SQLServer、SQLite)、安装与管理、服务启动 2. SQL简介:SQL语言含义、语法特点 3. DDL:创建、查询、修改、删除和使用,以及表的创建、查询、删除和修改,涵盖数据类型(int、double、varchar等)。 4. DML:表记录的增、删、改,如INSERT INTO(指定/所有列)、DELETE FROM(WHERE条件/全表)、UPDATE 5. DQL:查询操作,包括基础查询、去重、计算和别名,以及WHERE后的条件(AND、OR、NOT、BETWEEN、IN、LIKE)和模糊查询。
|
4天前
|
SQL 存储 关系型数据库
ArcGIS Engine连接ArcSDE SQL Server(获得所有SDE图层)
ArcGIS Engine连接ArcSDE SQL Server(获得所有SDE图层)
|
5天前
|
SQL 关系型数据库 MySQL
数据库大作业——基于qt开发的图书管理系统(三)Qt连接Mysql数据库
数据库大作业——基于qt开发的图书管理系统(三)Qt连接Mysql数据库
|
5天前
|
监控 关系型数据库 MySQL
MySQL 查询数据库响应时长详解
- 启用慢查询日志(`slow_query_log`)分析超时查询,调整`long_query_time`阈值。 - 使用`EXPLAIN`检查查询执行计划,优化索引和查询结构。 - `SHOW PROFILE`揭示查询各阶段耗时,辅助性能调优。 - 开启Performance Schema监控服务器,通过`events_statements_summary_by_digest`等表分析性能。 - MySQL Workbench和Percona Toolkit等工具提供额外的性能分析和管理功能。 - 优化技巧:创建合适索引,精简查询,调整数据库配置以提升响应速度。
38 0