Mysql的多表查询及表的连接

Mysql的多表查询及表连接

目录

连接查询条件


  • 查询的两张表如果出现同名的列,我们需要将表名标注到列名前面

  • 如果是非同名的列,表名可加可不加 ,推荐加上为了书写方便,**可以给表添加别名,**一般情况下取首字母,特殊情况下取它所代表的含义,表的别名只在本次查询中生效

  • 如果表与表进行关联查询的时候,如果不添加关联条件,查询的总记录数就是a*b = 笛卡尔积,数据匹配不正确

  • 多表查询的时候必须要加条件

    • 等值
    • 非等值

有关联的表的连接


natural join

自动选择列名相同并且类型相同的列

格式:表名 natural join 列名

代码展示:

sql 复制代码
select * from sc natural join student;

运行结果:

using

指定等值连接的列

格式:表名 join 表名 using(同名同类型等值的列名)

代码展示:

sql 复制代码
select * from sc join course using(cno);

运行结果:

on

可以指定两张表关联的条件,可以是非等值 的操作,添加约束

等值连接

表 join 表 on 表.列=表.列

代码展示:

sql 复制代码
select * from course join teacher;
-- on 添加约束
select * from course join teacher on course.tno=teacher.tno;

运行结果:

非等值连接

不使用等于(=)操作符来比较字段,而是可能使用其他比较操作符

  • 格式:表名 join 表名 on 非等值操作

表与表的外连接


左外连接

显示左面表所有的数据

  • 列名 left join 列名 (on 判断)
    代码展示:
sql 复制代码
select * from course left join teacher on course.tno=teacher.tno;

运行结果:

右外连接

显示右面表所有的数据

  • 列名 left join 列名 (on 判断)

代码展示:

sql 复制代码
select * from course right join teacher on course.tno=teacher.tno;

运行结果:

表的自连接


格式:表名 as 表名1 inner join 表名 as 表名2 on 操作

代码展示:

sql 复制代码
select * from student as a inner join student as b  on a.sno=b.sno;

运行结果:

表的子连接


把一个SQL语句的查询结果当成另外一个SQL语句的查询条件

代码展示:

sql 复制代码
select *from sc;
select * from sc where score>(select avg(score) from sc);

运行结果:


表的伪表查询


如果我们所需要的查询条件需要别的SQL语句提供,如果需要多个查询条件,这是就要将所有的查询结果当做伪表进行管理

代码展示:

复制代码
select course.cname,s2.sname from (select sc.cno,s1.sno,s1.sname from (select sno,sname from student) as s1,sc where s1.sno=sc.sno) as s2,course where course.cno=s2.cno;

运行结果:

相关推荐
灯澜忆梦8 小时前
GO_并发编程---定时器
开发语言·后端·golang
-银雾鸢尾-8 小时前
C#中的StringBuilder相关方法
开发语言·c#
-银雾鸢尾-9 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#
广州灵眸科技有限公司9 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
大模型码小白10 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
Cloud云卷云舒11 小时前
云卷云舒:从Oracle/MySQL迁移到HaishanDB:迁移评估工具核心技术拆解
mysql·oracle·ai-native·haishandb·信创数据库替换
憧憬成为web高手11 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学11 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
Ljwuhe12 小时前
C++——多态
开发语言·c++
心平气和量大福大12 小时前
C#-WPF-Window主窗体
开发语言·c#·wpf