• SQL中的内连接与外连接


    关于关系代数连接运算的介绍请查看下面链接

    http://www.cnblogs.com/xidongyu/articles/5980407.html

    连接运算格式

    image

    链接运算由两部分构成:连接类型和连接条件

    连接类型可分为:

    • INNER JOIN 内连接
    • LEFT OUTER JOIN   左外连接
    • RIGHT  OUTER JOIN  右外连接
    • FULL OUTER JOIN 全外连接

    连接条件可分为

    • NATURAL   自然连接(去掉重复属性)
    • ON   连接条件(保留重复属性)
    • USING 属性名1,属性名2… (保留指定重复属性)

    具体的组合有以下几种形式

    注意:MYSQL没有全外连接

    • table1 INNER JOIN table2 ON 链接条件

    SELECT *
    FROM teacher INNER JOIN course
    ON teacher.tn = course.tn

    image

    上面的SQL语句中做了等值内连接,我们看到tn属性是重复的

    • table1 INNER JOIN table2 USING (公共属性名)

    SELECT *
    FROM teacher INNER JOIN course
    USING (tn)

    image

    以USING中的属性作为连接条件(属性值相等才连接),并去掉重复属性(tn)

    • table1 LEFT JOIN table2 ON 链接条件

    SELECT *
    FROM teacher LEFT OUTER JOIN course
    ON teacher.tn = course.tn

    image

    左外连接会保留table1中的元组在结果集中不丢失,使用ON条件,不去掉重复元组

    • table1 LEFT JOIN table2 USING (tn)

    SELECT *
    FROM teacher LEFT OUTER JOIN course
    USING (tn)

    image
    效果与上图一致,只是去掉重复属性(tn)

    • table1 RIGHT JOIN table2 USING (tn)

    SELECT *
    FROM teacher RIGHT OUTER JOIN course
    USING (tn)

    image
    保留table2中的元组

    • table1 NATURAL LEFT/RIGHT OUTER JOIN table2

    SELECT *
    FROM teacher  NATURAL LEFT OUTER JOIN course

    image
    这个就是自然连接了,自然连接只能用在外连接当中,并且使用自然连接是两个表中的公共属性都需要进行等值判断

  • 相关阅读:
    close connection error java.sql.SQLRecoverableException: IO Error: Broken pipe
    Mysql 备份与恢复
    MACBOOK 破解wifi密码
    MAC 安装homebrew
    Linux(CentOS / RHEL 7) 防火墙
    ORA-01031: insufficient privileges
    Oracle登录认证
    ORA-12162: TNS:net service name is incorrectly specified
    lsnrctl: .... cannot restore segment prot after reloc: Permission denied
    CentOS / RHEL 配置yum源
  • 原文地址:https://www.cnblogs.com/xidongyu/p/5997038.html
Copyright © 2020-2023  润新知