• SQL内连接——使用场景记录


    自连接

    1、自连接(自然连接)是在同一个表上实行多表连接,进行自连接时须先将数据表虚拟化另一个表。

    2.语法

    1. SELECT a.column_name, b.column_name...
    2. FROM table1 a, table1 b
    3. WHERE a.common_field = b.common_field;

    where后面是等值连接。

    内连接

    语法:

    1. SELECT a.column_name, b.column_name...
    2. FROM table a (inner) jion table b
    3. on a.common_field = b.common_field
    4. where a.xxx = ""
    5. and
    6. ...

    区别

    1、自然连接一定是等值连接,但等值连接不一定是自然连接。等值连接不把重复的属性除去;而自然连接要把重复的属性除去。

    2、等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。

    之前在学习内连接的时候,经常困惑是在什么样的场景下可以只用

    InnerJoin:

    在数据库表中存储数据的时候,有时候是多条数据属于同一个实体对象的,比如下面的score_table1、score_table2的分数记录表中,多条分数记录是属于一个学生的。找到高数和英语分数都在80分以上的同学:

    score_table1:

    studentIdsubjectIdsubjectNamescore
    12高数87
    13英语95
    13英语67
    24线代67
    21音乐89
    23英语76
    1. select *
    2. from score_table1 a (inner) join score_table1 b
    3. on
    4. a.studentId = b.studentId
    5. where
    6. a.subjectId = "2"
    7. and a.score > 80
    8. and b.subjectId = "3"
    9. and b.score > 80

    score_table2:

    studentIdmathScoreenglishScore

    linearAlgebraScore

    1null78null
    195nullnull
    1nullnull32
    232nullnull
    2nullnull43
    2null78null
    1. select *
    2. from score_table2 a (inner) join score_table2 b
    3. on
    4. a.studentId = b.studentId
    5. where
    6. a.mathScore > 80
    7. and b.englishScore > 80
  • 相关阅读:
    Animate动画
    登录功能和退出功能(瑞吉外卖)
    C++-Mongoose(1)-http-server
    MongoDB 学习笔记
    【Interpreter模式】C++设计模式——解析器
    webpack、vue.config.js
    【C++】鱼的一生, 智能指针的实现
    [论文笔记]Root Mean Square Layer Normalization
    Linux基础知识与实操-篇三: 文件压缩打包与vim基本使用
    python反距离权重(IDW)插值站点到格点
  • 原文地址:https://blog.csdn.net/m0_51660523/article/details/128005317