• MySql高级查询--连接查询


                                                                                                         前言

      我们使用SQL查询不能只使用很简单、最基础的SELECT语句查询。如果想从多个表查询比较复杂的信息,就会使用高级查询实现。

    常见的高级查询包括多表连接查询、内连接查询、外连接查询与组合查询等,今天我们先来学习最常用、面试也很容易被问到的连接查询。

      我们今天以一个简单的学生信息表(学生ID、学生姓名、学生性别)与一个学生成绩表(学生ID、学生成绩、成绩等级)作演示:

      student_info表:

           

      student_score表:

      

      一、内连接(INNER JOIN)

      1、等值连接

      概述:指使用等号"="比较两个表的连接列的值,相当于两表执行笛卡尔后,取两表连结列值相等的记录。

           语法:SELECT 列   FROM 表1  

                     INNER JOIN 表2

          ON 表1.列 = 表2.列 

           示例:

      SELECT A.*, B.*  FROM student_info A 

      inner join student_score B

           ON A.student_id = B.student_id  

           结果:

      

      2、非等值连接

      概述:指使用大于号">"或小于号"<"比较两个表的连接列的值,相当于两表执行笛卡尔后,取一个表大于或小于另一个表的连结列值的记录。

           语法:

           SELECT 列  FROM 表1 INNER JOIN 表2  ON 表1.列 <> 表2.列  

      示例:SELECT A.*, B.*  FROM student_info A

          inner join student_score ON A.student_id > B.student_id 

           结果:

      

      

      二、外联结

      1、左外连接(LEFT OUTER JOIN)

      概述:指将左表的所有记录与右表符合条件的记录,返回的结果除内连接的结果,还有左表不符合条件的记录,并在右表相应列中填NULL。

      示例:SELECT A.*, B.*  

           FROM student_info A left join student_score B  

           ON A.student_id = B.student_id

        结果:

        

      

           2、右外连接(RIGHT OUTER JOIN)

      概述:与左外连接相反,指将右表的所有记录与左表符合条件的记录,返回的结果除内连接的结果,还有右表不符合条件的记录,并在左表相应列中填NULL。

      示例:SELECT A.*, B.*  FROM student_info A right join student_score B  ON A.student_id = B.student_id  

      结果:

      

      3、全外连接(FULL JOIN)——MySQL不支持

      概述:指将左表所有记录与右表所有记录进行连接,返回的结果除内连接的结果,还有左表与右表不符合条件的记录,并在左表与右表相应列中填NULL。

      三、自然连接(NATURAL JOIN)

      概述:指自动将表中相同名称的列进行记录匹配。

      示例:SELECT A.*, B.*  FROM student_info A natural join student_score B 

      结果:

      

      

      四、自连接

      概述:指用表的别名实现表自身的连接。

      示例:SELECT B.*  

           FROM student_score A, student_score B

          WHERE A.student_id = B.student_id

         AND B.student_score > 80  

          

        

      

        

       

       

  • 相关阅读:
    liunx上升级python2至python3
    python之logging日志
    c# 脚本引擎 脚本编辑器
    设置 BCompare 打开文件时的默认字符编码
    Python调用动态库,获取BSTR字符串
    服务器CPU100%的排查日志
    栈(Stack)
    搭建个人的github.io博客
    django.core.exceptions.ImproperlyConfigured: SQLite 3.9.0 or later is required (found 3.7.17)
    virtualenv中使用python的虚拟环境
  • 原文地址:https://www.cnblogs.com/zsliu/p/8596782.html
Copyright © 2020-2023  润新知