• 自然连接(natural join)


    自然连接:
    自然连接是在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将他们连接起来,并返回所有符合条件按的结果。

    来看一下自然连接的例子。
    Select emp.ename,dept.dname
    From emp natural join dept;
    这里我们并没有指定连接的条件,实际上oracle为我们自作主张的将,emp中的deptno和dept中的deptno做了连接。
    也就是实际上相当于
    Select emp.ename,dept.dname
    From emp join dept on emp.deptno = dept.deptno;
    因为这两张表的这两个字段deptno的类型个名称完全相同。所以使用natural join时被自然的连接在一起了。
    另外:
    1.如果做自然连接的两个表的有多个字段都满足有相同名称个类型,那么他们会被作为自然连接的条件。
    2.如果自然连接的两个表仅是字段名称相同,但数据类型不同,那么将会返回一个错误。
    3.由于oracle中可以进行这种非常简单的natural join,我们在设计表时,应该尽量在不同表中具有相同含义的字段使用相同的名字和数据类型。以方便以后使用natural join。

    sh@TEST0910> SELECT p.prod_id,prod_name,prod_list_price,quantity_sold,cust_last_name
    2 FROM products p NATURAL JOIN sales s NATURAL JOIN customers c
    3 WHERE prod_id =148 and rownum<6;
    SELECT p.prod_id,prod_name,prod_list_price,quantity_sold,cust_last_name
    *
    ERROR at line 1:
    ORA-25155: column used in NATURAL join cannot have qualifier

    列用于自然连接不能有限定符。

    去掉限定符后:
    sh@TEST0910> SELECT prod_id,prod_name,prod_list_price,quantity_sold,cust_last_name
    2 FROM products p NATURAL JOIN sales s NATURAL JOIN customers c
    3 WHERE prod_id =148 and rownum<6;

    PROD_ID PROD_NAME PROD_LIST_PRICE QUANTITY_SOLD CUST_LAST_NAME
    ---------- ------------------------------ --------------- ------------- ------------------------------
    148 Xtend Memory 20.99 1 Llyles
    148 Xtend Memory 20.99 1 Lake
    148 Xtend Memory 20.99 1 Koch
    148 Xtend Memory 20.99 1 Skillman
    148 Xtend Memory 20.99 1 Speer

    列不用于自然连接,可以使用限定符。

    sh@TEST0910> SELECT prod_id,p.prod_name,prod_list_price,quantity_sold,cust_last_name
    2 FROM products p NATURAL JOIN sales s NATURAL JOIN customers c
    3 WHERE prod_id =148 and rownum<6;

    PROD_ID PROD_NAME PROD_LIST_PRICE QUANTITY_SOLD CUST_LAST_NAME
    ---------- ------------------------------ --------------- ------------- ------------------------------
    148 Xtend Memory 20.99 1 Llyles
    148 Xtend Memory 20.99 1 Lake
    148 Xtend Memory 20.99 1 Koch
    148 Xtend Memory 20.99 1 Skillman
    148 Xtend Memory 20.99 1 Speer


  • 相关阅读:
    RedHat5.8 编译内核驱动 合成initrd.img
    matrix-gui-2.0 将javascript文件夹改成js文件夹
    使用PHP配置文件
    Ubuntu 16.10 Apache PHP Server
    Ubuntu 16.10 中文环境 Shell输出英文提示
    制作SD卡img文件,并扩容
    Linux syslogd
    Windows cmd findstr
    jquery ztree异步搜索
    怎样在点击li时添加样式,移除兄弟样式
  • 原文地址:https://www.cnblogs.com/gispf/p/3718523.html
Copyright © 2020-2023  润新知