• 连接查询


    students学生表结构:

    classes班级表结构:

     

    inner join:内连接,只返回同时存在于两张表的行数据

    select s.id,s.name,s.class_id,c.name class_name,s.gender,s.score
    from students s
    inner join classes c
    on s.class_id=c.id

    含义:查询出表students中的id,name,class_id,gender,score的字段和表classes中的name字段并且起一个别名为 class_name,分别给表students表classes取别名s,c,

    条件是表students中的class_id=表classes中的id

    from 后面用来确定主表

    inner join后面用来确定附表,on就是两表关联查询的条件,

    left join:左连接(左外连接),left join其实就是left outer join的简写,返回左表中都存在的行,无论右表中有无与之对应的数据,如果左表中返回的行中右表没有与之对应的数据则为NULL

    select s.id,s.name,s.class_id,s.gender,s.score,c.name c_name
    from students s
    left join classes c
    on s.class_id=c.id

    含义:查询出学生表students中的id,name,class_id,gender字段和classes班级表中的 name字段并且取别名为c_name

    主表附表的设置和inner join一样.

     

     right join:右连接(右外连接),right join是right outer join的简写,返回右表中都存在的行,如果左表中没有与右表中对应的值则为NULL

    select s.id,s.name,s.class_id,s.gender,c.name c_name,s.score
    from students s
    right join classes c
    on s.class_id=c.id

    full join:全连接,full outer join,把两表的记录都查出来并且自动把对方不存在的列填为NULL值。

    SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
    FROM students s
    FULL OUTER JOIN classes c
    ON s.class_id = c.id;

     参考:https://www.liaoxuefeng.com/wiki/001508284671805d39d23243d884b8b99f440bfae87b0f4000/001509167103179399448cb200549bdab7651a5e9167597000

  • 相关阅读:
    oracle性能调优
    oracle常用函数
    plsql的安装与使用
    WSAIoctl
    SQL中大概有这么几种JOIN
    如何取分组最大值记录
    having
    MSSQL—按照某一列分组后取前N条记录
    sql之left join、right join、inner join的区别
    delphi 接收心跳包怎么写
  • 原文地址:https://www.cnblogs.com/javazyh/p/10695234.html
Copyright © 2020-2023  润新知