zoukankan      html  css  js  c++  java
  • 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
    这个就是自然连接了,自然连接只能用在外连接当中,并且使用自然连接是两个表中的公共属性都需要进行等值判断

  • 相关阅读:
    jquery实现下拉框多选
    最好的Angular2表格控件
    CSS3阴影 box-shadow的使用和技巧总结
    存档2
    Python的编码注释# -*- coding:utf-8 -*-
    路由器与交换机区别
    TCP的流量控制
    TCP的拥塞控制
    存储管理之页式、段式、段页式存储
    什么是死锁?其条件是什么?怎样避免死锁?
  • 原文地址:https://www.cnblogs.com/xidongyu/p/5997038.html
Copyright © 2011-2022 走看看