zoukankan      html  css  js  c++  java
  • 数据库两表链接

    现在有两个表,“学生表”记录了学生的基本信息,有“学号”、“姓名”。

    “成绩”表记录了学生选修的课程,以及对应课程的成绩。

    这两个表通过“学号”进行关联。

    现在要查找出所有学生的学号,姓名,课程和成绩。

    【解题思路】
    1.确定查询结果

    题目要求查询所有学生的姓名,学号,课程和成绩信息

    select 学号,姓名,课程,成绩

    查询结果的列名“学号”、“姓名”,在“学生”表里,列名“课程”、“成绩”在“成绩”表里,所以需要进行多表查询。

    2.哪种联结呢?

    涉及到多表查询,在之前的课程《从零学会sql:多表查询》里讲过需要用到联结。

    多表的联结又分为以下几种类型:

    1)左联结(left join),联结结果保留左表的全部数据

    2)右联结(right join),联结结果保留右表的全部数据

    3)内联结(inner join),取两表的公共数据

    这个题目里要求“所有学生”,而“所有学生”在“学生”表里。为什么不在“成绩”表里呢?

    如果有的学生没有选修课程,那么他就不会出现在“成绩”表里,所以“成绩”表没有包含“所有学生”。

    所以要以“学生”表进行左联结,保留左边表(学生表)里的全部数据。

    from 学生信息表 as a left join 成绩表 as b

    3.两个表联结条件是什么?

    两个表都有“学号”,所以联结条件为学号。

    on a.学号=b.学号

    答案:

    select FirstName,LastName, City, State

    from Person left join Address

    on Address.PersonId=Person.PersonId
  • 相关阅读:
    Eclipse中的Web项目自动部署到Tomcat
    Linux之grep命令
    Linux之sort
    Python 字典中一键对应多个值
    手动下载python更新后 换回以前版本
    N个降序数组,找到最大的K个数
    蓄水池抽样算法
    空瓶子换水问题
    rand()产生随机数 及其和clock()的不同
    C++复数运算 重载
  • 原文地址:https://www.cnblogs.com/hisoka-study/p/13521551.html
Copyright © 2011-2022 走看看