• SQL零基础入门教程,贼拉详细!贼拉简单! 速通数据库期末考!(八)


    FULL OUTER JOIN

    除了前面讲到的 INNER JOIN(内连接)、LEFT JOIN(左连接)、RIGHT JOIN(右连接),还有另外一种关联方式,即 FULL OUTER JOIN(全外连接)
    FULL OUTER JOIN :左表(table1)和右表(table2)匹配不上的数据行全部都会返回结果。
    FULL OUTER JOIN 结合了 LEFT JOIN 和 RIGHT JOIN 的结果。

    语法:

    SELECT columns
    FROM table1
    FULL OUTER JOIN table2
    ON table1.column_name=table2.column_name;
    
    • 1
    • 2
    • 3
    • 4

    columns:要显示的列名。
    table1:左表的名称。
    table2:右表的名称。
    column_name:表中用于连接的列名。
    table1.column_name:表示table1表的column_name字段。

    MySQL中不支持 FULL OUTER JOIN,实际应用时也基本用不到,这里也就不多做赘述了。

    三表关联

    之前我们一直都是两张表进行关联,那么如何进行三张表的关联呢?
    那就关联两次就好了,语法:

    SELECT columns
    FROM table1
    INNER JOIN table2
    ON table1.column_name=table2.column_name 
    INNER JOIN table3 
    ON table1.column_name=table3.column_name;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    columns:要显示的列名。
    table1:左表的名称。
    table2:右表的名称。
    column_name:表中用于连接的列名。
    table1.column_name:表示table1表的column_name字段。
    例如:
    将学生数据表,学生成绩表,课程数据表关联,查询每个学生的学生id,学生姓名,课程id,课程名,成绩,班级:

    SELECT students.id,name,score.subject_id,subject_name,score,clazz
    FROM score 
    INNER JOIN subject 
    ON score.subject_id = subject.subject_id 
    INNER JOIN students 
    ON students.id = score.id;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    SQL别名

    在使用SQL时,有时为了便于理解,提升可读性,可以为表名称或列名称指定别名。比如在结果中将列名显示为中文。

    语法:

    SELECT column_name AS alias_name
    FROM table_name AS alias_name;
    
    • 1
    • 2

    column_name:表中的实际列名;
    table_name:表的实际表名;
    alias_name:自己给表或者列取的别名;

    示例:
    查询subject表全列,结果以中文列名显示:

    SELECT subject_id AS '课程id', subject_name AS '课程名'
    FROM subject;
    
    • 1
    • 2

    对上面三表关联的SQL语句进行优化,对表名设置别名:

    SELECT c.id AS 学生id,
    			 c.name AS 学生,
    			 a.subject_id AS 课程id,
    			 b.subject_name AS 课程名,
    		 	 a.score AS 分数,
    			 c.clazz AS 班级
    FROM score AS a
    INNER JOIN subject AS b
    ON a.subject_id = b.subject_id 
    INNER JOIN students AS c
    ON c.id = a.id;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11


    另外,AS可以省略

    本专栏将持续更新,对数据库SQL感兴趣的同学可以关注一下,谢谢!

  • 相关阅读:
    Linux性能基础:CPU、内存、磁盘等概述
    Git的ssh方式如何配置,如何通过ssh方式拉取和提交代码
    ASUS华硕天选4笔记本电脑FX507VV原厂Windows11系统
    (五)笔记.net core学习之静态文件捆绑压缩、应用部署
    分库分表实践
    luffy-(7)
    Python中的迭代器、生成器和装饰器
    SpringCloudAlibaba整合Sentinel使用
    《MATLAB科研绘图与学术图表绘制从入门到精通》示例:绘制婴儿性别比例饼图
    flask中使用redis做缓存
  • 原文地址:https://blog.csdn.net/lrn521zsd/article/details/134482498