zoukankan      html  css  js  c++  java
  • Sql 连接查询

    SQL表连接查询(inner join、full join、left join、right join)

     

    SQL表连接查询(inner join、full join、left join、right join)

     

    前提条件:假设有两个表,一个是学生表,一个是学生成绩表。

     

     

     

     

     

     表的数据有:

     

     

     

     

     

     

     

     

     

    一、内连接-inner jion :

    最常见的连接查询可能是这样,查出学生的名字和成绩:

    select s.name,m.mark from student s,mark m where s.id=m.studentid

    上面就是我们最常见的inner join,即内连接,把符合student.id=mark.studentid 条件的元组才选出来,也可以写成:

    select s.name,m.mark from student s inner join mark m on s.id=m.studentid

    符合条件的只有两条结果,查出结果为:

     

    二、左连接-left join:

    左连接是把左边的表的元组全部选出来:

    select s.name,m.mark from student s left join mark m on s.id=m.studentid

    上面语句就是把左边的表,即student表中的元组全部选出,尽管有些分数表是没数据的,也选了出来,选出的结果为:

     

    三、右连接-right join:

    右连接就是把右边表的数据全部取出,不管左边的表是否有匹配的数据:

    select s.name,m.mark from student s right join mark m on s.id=m.studentid

    上面的语句就是把mark分数表的数据全部取出来,不管student表中是否有数据匹配,如下图所示:

     

    四、全连接-full join:

    把左右两个表的数据都取出来,不管是否匹配:

    select s.name,m.mark from student s full join mark m on s.id=m.studentid

    如下图所示,学生表和成绩表的数据都取了出来:

     

     

    比较常用的是第一种,内连接,而且是用这种写法:

    select s.name,m.mark from student s,mark m where s.id=m.studentid

     

  • 相关阅读:
    「Luogu2397」 yyy loves Maths VI (mode)
    「Luogu2014」 选课
    「Luogu2972」 [USACO10HOL]岩石和树木Rocks and Trees
    中国剩余定理
    点双连通分量
    Miller_Rabin大质数检验
    manachaer算法
    Kruskal重构树
    世界,你好!
    [Luogu P1450] [HAOI2008]硬币购物 背包DP+容斥
  • 原文地址:https://www.cnblogs.com/zhang123/p/3394339.html
Copyright © 2011-2022 走看看