Mysql数据库(五) Mysql命令行客户端:内连接查询、左连接查询、右连接查询、自连接查询、子查询

目录

一、 连接查询 对多个表进行查询

1.0 数据准备

1.1 连接查询

1.2 内连接 INNER JOIN

1.3 左连接 LEFT JOIN

1.4 右连接 RIGHT JOIN

1.5 FULL OUTER JOIN

1.6 自连接查询

1.7 子查询-嵌套在查询中


一、 连接查询 对多个表进行查询

1.0 数据准备

在之前的文章当中,我们在 base_1 当中有了一个 stu 表,记录的是学生的name age height等信息

第一步,我们再创建一个班级表 class 

create table class(id int unsigned primary key not null auto_increment,name varchar(20) not null);

目前的班级表:

 

Mysql数据库(五) Mysql命令行客户端:内连接查询、左连接查询、右连接查询、自连接查询、子查询_第1张图片

 

第二步,在班级表中插入数据

 insert into class(name) values('class_1'),('class_2'),('class_3');

第三步,给 stu 表插入个字段classID,表示所在的班级

alter table stu add classID int unsigned;

第四步,给学生分班 使用 where

目前 21 个学生,3个班级,那就 7 人一个班级

Mysql数据库(五) Mysql命令行客户端:内连接查询、左连接查询、右连接查询、自连接查询、子查询_第2张图片

mysql> update stu set classID=1 where id in(1,2,3,4,5,6,7);


mysql> update stu set classID=2 where id in(8,9,10,11,12,13,14);


mysql> update stu set classID=3 where id in(15,16,17,18,19,20,21);


 分班结果:

Mysql数据库(五) Mysql命令行客户端:内连接查询、左连接查询、右连接查询、自连接查询、子查询_第3张图片

 

ok 到此,前期的数据准备就完成了!

1.1 连接查询

Mysql数据库(五) Mysql命令行客户端:内连接查询、左连接查询、右连接查询、自连接查询、子查询_第4张图片


 当中 on  的作用是什么?

在 MySQL 中,ON 是连接查询中的一个关键字,用于指定连接条件,它的作用是将两个或多个表连接起来并返回匹配的数据行。

在连接查询中,使用 ON 关键字可以指定两个表之间的连接条件,这个条件用于匹配两个表中的数据行。

例如:

select * from stu inner join class on stu.classID = class.id;

这个查询语句表示将 stu和 class表连接起来,并且将它们之间的连接条件设置为 stu的 classID 字段等于 class的 id 字段。

Mysql数据库(五) Mysql命令行客户端:内连接查询、左连接查询、右连接查询、自连接查询、子查询_第5张图片


 

MySQL连接查询是一种用于连接多个表并获取相关数据的查询方法。

它将两个或多个表中的行结合起来,根据两个表之间的共同列或键(如主键和外键)进行匹配,并返回匹配的结果。

连接查询可以通过 INNER JOIN、LEFT JOIN、RIGHT JOIN 或 FULL OUTER JOIN 的方式执行。

1.2 内连接 INNER JOIN

上面就是内连接的示例!

通俗一点就是:交集!

Mysql数据库(五) Mysql命令行客户端:内连接查询、左连接查询、右连接查询、自连接查询、子查询_第6张图片

 

1.3 左连接 LEFT JOIN

左 和 右的区分,看在 join的左边还是右边

LEFT JOIN 返回左表中所有的行右表中匹配的行,如果右表中没有匹配的行,则返回 NULL 值;

Mysql数据库(五) Mysql命令行客户端:内连接查询、左连接查询、右连接查询、自连接查询、子查询_第7张图片

 

1.4 右连接 RIGHT JOIN

RIGHT JOIN 返回右表中所有的行左表中匹配的行,如果左表中没有匹配的行,则返回 NULL 值;

Mysql数据库(五) Mysql命令行客户端:内连接查询、左连接查询、右连接查询、自连接查询、子查询_第8张图片

 

1.5 FULL OUTER JOIN

FULL OUTER JOIN 返回左表和右表中所有的行,无论它们是否匹配。

 

Mysql数据库(五) Mysql命令行客户端:内连接查询、左连接查询、右连接查询、自连接查询、子查询_第9张图片

1.6 自连接查询

MySQL 自连接查询是指在同一张表中进行连接查询

自连接可以用来解决一些需要用到两个相同表的情况

例如

我们有一个员工表,其中记录了员工的姓名、工资和上级姓名。

如果要查询每个员工的上级姓名和上级的工资,就需要使用自连接查询。

可以使用以下 SQL 语句进行自连接查询:

SELECT e.name, e.salary, m.name AS manager_name, m.salary AS manager_salary
FROM employee e
LEFT JOIN employee m ON e.manager_id = m.id;

其中,employee 是表名,em 是表的别名,id 是员工表的主键,manager_id 是上级员工的 ID。

这个查询语句将 employee自己连接了一次,使用 LEFT JOIN 连接,将员工表 e 中的 manager_id 与同一张表中上级员工的 id 进行匹配,然后将上级员工的姓名和工资返回

1.7 子查询-嵌套在查询中

MySQL子查询是一个嵌套在另一个查询中的查询

子查询可以用作 SELECT、FROM、WHERE 子句中的任何一部分来生成结果集合。

一个基本的子查询语法如下:

SELECT column1, column2, column3, ...
FROM table1
WHERE column_nameSELECT column_name FROM table_name WHERE condition  ) ;
 

子查询会首先执行

在上面的语句中,子查询 (SELECT column_name FROM table_name WHERE condition)首先执行,然后它的结果可以用于 WHERE 子句中的过滤条件

另一个常见的子查询使用方法是嵌套在 JOIN 子句中,用于连接表与执行过滤操作。下面是一个示例:

SELECT *
FROM table1
JOIN (SELECT id, column2 FROM table2 WHERE condition) AS t2
ON table1.id = t2.id;

在上面的语句中,子查询 (SELECT id, column2 FROM table2 WHERE condition) 被赋予别名 t2 并与 table1 表连接,结果集将包含两个表中的所有列。

需要注意的是,如果子查询返回大量的结果,可能会导致性能下降

因此,尽量保持子查询返回的结果集较小,以提高查询性能。


你可能感兴趣的:(#,3,Mysql数据库,数据库,mysql,后端)