• SQL server中内连接和外连接的区别、表达(表的连接)


    前提

    下文举例所使用的表如下:

    1. SC表:
      在这里插入图片描述

    2. student表:
      在这里插入图片描述

    1. 内连接

    1. 等值连接:

    结果表将包含两个表的所有属性,包括重复列

    写法1:

    select * 
    from  SC  inner JOIN  STUDENT  
    on STUDENT.sno=SC.sno;
    
    • 1
    • 2
    • 3

    结果如下所示:

    在这里插入图片描述
    图一

    写法2:

    select * 
    from  SC ,STUDENT
    where  STUDENT.sno=SC.sno;
    
    • 1
    • 2
    • 3

    运行结果如上图一所示一样,虽然没加 join on

    2. 自然连接

    结果表将包含两个表的所有属性,但去掉重复的部分

    过程:
    select 中专门指定 重复的列名 sno为 “ SC.sno ”,不写另一个表中sno主键,再写出两个表中其他不重复的列名,完成自然连接

    例1:

    select  SC.sno ,cno,grade,sname,ssex,sage,sdept
    from SC,STUDENT
    where  SC.sno=STUDENT.sno
    
    • 1
    • 2
    • 3

    结果如下:
    在这里插入图片描述
    图二

    3. 自身连接

    相当于将自己的表再复制一份出来,进行连接
    
    • 1

    例2:

    select  SC.sno ,cno,grade,sname,ssex,sage,sdept
    from  SC 
    inner  JOIN  STUDENT   --本来用 natural join  on ,但这里用natural join语法错误
    on STUDENT.sno=SC.sno;
    
    • 1
    • 2
    • 3
    • 4

    结果如上图二所示一样

    -- 查询每门课的间接选修课
    select first.cno,second.cpon
    
    from course first,course second
    
    where first.cpon=second.cno;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2. 外连接

    2.1.左外连接:

    左外连接结果表中出来包括满足连接条件的行,还好包括左表的所有行

    例:

    select *
    from student LEFT OUTER JOIN course
    on student.sno=course.sno;
    
    • 1
    • 2
    • 3

    2.2 右外连接:

    右外连接结果表中出来包括满足连接条件的行,还包括右表的所有行

    例:

    select *
    from student  right outer join  course
    on student.sno=course.sno;
    
    • 1
    • 2
    • 3

    2.3 全外连接:

    全外连接结果表中出来包括满足连接条件的行,还好包括两个表的所有行
    例:

    select *
    from student  FULL OUTER JOIN course
    on student.sno=course.sno;
    
    • 1
    • 2
    • 3

    3. 内、外连接的区别

    首先,内连接和外连接都是对表的连接操作

    1. 内连接:连接结果仅包含符合连接条件的行,其中至少一个属性是共同的;注意区分在嵌套查询时使用的any以及all的区别;

    2. 外连接:连接结果不仅包含符合连接条件的行,也包含自身不符合条件的行;外连接不需要区分,左表和右表都不受限制,所有记录都显示,两个表不足的地方可用null进行填充。

    待续

     
     
    —————————————————————
    以上就是今日博客的全部内容了
    创作不易,若对您有帮助,可否点赞、关注一二呢,感谢支持.

  • 相关阅读:
    tf.queue
    ABP Framework 5.2 RC 发布及新增功能介绍
    笔记 mysql text 不能设置他的默认值如not null
    【LeetCode】61. 旋转链表
    Day 62 单向循环链表 双链表
    〖Python 数据库开发实战 - MySQL篇⑳〗- 数据表的内连接
    网络安全笔记-网络设备专场(路由器、交换机、防火墙)
    nginx参数调优能提升多少性能
    mac媲美PS的修图软件:Pixelmator Pro Mac 中文激活版
    OpenGL 纹理详解
  • 原文地址:https://blog.csdn.net/qq_54017009/article/details/133972296