• SQL语句(十三)多表查询


    多表查询

    1. 笛卡尔乘积

    • 简单格式

      SELECT * 或字段列表

      FROM 数据表列表

    • 实例

    --1. 笛卡尔乘积 (五条件的连接--很多条件无意义)
    Select *
    from Student, SC

    2. 等值连接

    -- 查询选课的学生全部信息
    SELECT *
    From Student, SC
    where Student.Sno = SC.Sno

    3. 不等值连接

    select numb, cnumb, score, grade
    from score, grade
    where score.score between grade.gstart and grade.gend

    4. 使用INNER JOIN (内连接, 匹配项)

    Select * 或字段列表

    From 表1

    INNER JOIN 表2 ON 连接规则1

    INNER JOIN 表3 ON 连接规则2

    ...

    [WHERE 条件]

    [ORGER BY]

    --7. 使用INNER JOIN
    -- (1)
    select *
    from score
    INNER JOIN stu1 on score.numb = stu1.numb
    
    -- (2)
    select *
    from score, stu1, course
    where score.numb = stu1.numb
    and   score.cnumb = course.cnumb
    and   stu1.name = '王宁'
    order by course.cname, score.score
    
    -- 用 INNER 改写(2)
    select *
    from score
    INNER JOIN stu1 on score.numb = stu1.numb
    INNER JOIN course ON score.cnumb = course.cnumb
    where stu1.name = '王宁'   --将where里面条件放到了INNER里面  
    ORDER BY course.cname, score.score

    5. 外连接OUTER JOIN (能够查到不匹配项)

    • 按连接条件得到结果

    • 内连接

    左外连接 LEFT OUTER JOIN

    • 查找左边表的不匹配项

      SELECT * | 字段列表

      FROM 表1

      LEFT OUTER JOIN 表2 ON 条件

      左表与表2没有对应项的话,左边表的记录显示出来

    右外连接RIGHT OUTER JOIN

    • 查找右边表的不匹配项

      SELECT * | 字段列表

      FROM 表1

      RIGHT OUTER JOIN 表2 ON 条件

      左表与表2没有对应项的话,表2 的记录显示出来

    --8. 外连接OUTER JOIN
    -- 查询所有同学的学生信息 和 选课信息(选课的列出课程编号和成绩,
    -- 没有选课的这两项为NULL)
    select *
    from stu1
    --左外连接,左边表里的,也就是stu1这个表里头的不匹配项也显示出来
    LEFT OUTER JOIN score on stu1.numb = score.numb
    
    --或者是
    select *
    from score
    --右外连接,右边表里的,也就是这个score表里头的不匹配项也显示出来
    LEFT OUTER JOIN score on stu1.numb = score.numb

    多表连接查询

    • 笛卡尔乘积

    • 等值连接

    • 不等值连接

    • 内连接、外连接

      SELECT *

      FROM 表1

      [INNER JOIN 表2 ON 条件 ] |

      [LEFT | RIGHT OUTER JOIN 表2 ON 条件 ]

      [WHERE 条件]

      [GROUP BY 字段列表]

      [HAVING 条件]

      [ORDER BY 条件]

  • 相关阅读:
    景深概念与计算
    机器视觉相关术语
    Inno Setup 怎么编译文件的版本号
    Qt 可执行程序写入版本信息
    Qt 程序默认管理员权限运行
    Inno Setup 改变默认路径
    Inno Setup 打包安装程序中让“是否创建快捷方式”默认为“打钩”的方法
    Inno Setup 如何让生成的setup.exe文件双击以管理员权限打开
    Inno Setup 打包出的安装程序以管理员身份运行
    InnoSetup 安装前卸载旧版程序
  • 原文地址:https://www.cnblogs.com/douzujun/p/6626510.html
Copyright © 2020-2023  润新知