文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL联合查询(多表查询)

2023-09-14 12:39

关注

一、内连接

select *from 表1 [ inner | cross ] join 表2 [ on过滤条件 ] [ where查询条件 ] ;

[ inner | cross ]:

join 内连接关键字(必须要有);

on从语法上可省略,但如果省略它,将查询的是多表的笛卡尔积;

select *from 表1 join 表2 [ on过滤条件 ] [ where查询条件 ] ;

select *from 表1,表2 [ where查询条件 ] ;

select *from 表1 inner join 表2 [ on过滤条件 ] [ where查询条件 ] ;

select *from 表1 cross join 表2 [ on过滤条件 ] [ where查询条件 ] ;

(1.2使用较多;多表查询使用1较好)

例1:查询张三的成绩:

进行内连接查询(笛卡尔积)

select s.*,st.* from student s join score_table st;

去掉无效的数据(on过滤条件)

 select s.*,st.* from student s join score_table st on s.id=st.student_id;

 3.查询张三的成绩(where 条件)

 select s.*,st.* from student s join score_table st on s.id=st.student_id where s.username='张三';

例2:查询每个人成绩、科目名、个人信息:

连表查询(三张表)select *from 表1 join 表2 join 表3;

过滤笛卡尔积中无意义数据:select *from 表1 join 表2 [ on 条件过滤 ] join 表3[ on 条件过滤 ];

select s.username,s.sn,s.mail,st.score,c.name from score_table st join course c on st.course_id=c.id join student s on s.id=st.student_id;

二、外连接:

左(外)连接:

select * from 表1 left join 表2   on连接条件   [where条件查询];

表1 查询结果是所有数据,表2查询结果是与表1重合部分的数据

右(外)连接

select * from 表1 right join 表2  on连接条件   [where条件查询];

左 / 右连接可以互相实现,只需要将表的顺序调换即可。

 

 联表查询中on和where的区别:

on在内连接中可省略,外连接不可省略;

on在内连接中执行效果和外连接执行效果不同;

        left join...on查询不能过滤掉左表中的数据,而内连接on查询可以过滤掉全局数据。

外连接中on和where不同

        on筛选笛卡尔积过滤条件,where筛选具体业务

三、自连接(自查询)

select *from 表名 as t1,表名 as t2 where t1.id=t2.id [, ...]

例1:查询英语成绩<计算机成绩的数据

(1)根据科目名称查出来科目ID(成绩表中只有科目ID,没有科目名)

(2)自查询

(3)去除笛卡尔积中无意义数据(有意义数据:主键相同;)

(4)设置where条件,让表1只查询英语成绩,表2查询计算机成绩

(5)设置where多条件查询,让英语成绩<计算机成绩

四、子查询(嵌套查询)

select 字段名 from

例:查张三的同班同学

 

五、合并查询(至少两张表)

union(进行结果集合并,并去重,只保留重复数据中的一条)

union all(不会去掉结果集中的重复行)

例:查询id小于3和名字为“英语”的课程

select * from course where id<3 union select * from course where name='英语';

 

来源地址:https://blog.csdn.net/weixin_48891146/article/details/123238179

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯