zoukankan      html  css  js  c++  java
  • oracle USING 用法

    提问

    • using(xx)中可以接多个列吗?
    • using(xx)中的列可以接表名或别名吗?
    • 在使用using的语句中,select * 可以使用吗?
    • 如果表有别名t,select t.* from table1 t , table2 using(xx),t.* 可以使用吗?
    • left join, right join, inner join, full outer join 可以和using一起用吗?

    我们看下语法就能知道答案了。

    只看答案

    • using(xx)中可以接多个列,它是一种等值连接,可以转换为 join ... on (x=y and xx=y);
    • using(xx)中的列不可以接表名或别名等限定语,默认就是指共同列,不能指定表名;
    • 在使用using的语句中,select * 可以使用,* 被扩展的顺序为using中的列,左表中的其它列,右表中的其它列
    • 如果表有别名t,select t.* from table1 t , table2 using(xx),t.* 不可以使用,using中的列不能加限定词
    • left join, right join, inner join, full outer join 可以和using一起使用,它就是简单的等值连接

    inner join 就是 join, outer join有 left, right, full outer join 三种
    using的使用条件是两表中列名和类型相同;
    natural join更进一步,直接省掉了using,但作用和使用using相似;
    inner 和 outer 的区别:内连接只返回匹配行,外连接还返回不满足条件的行;


    Syntax

    USING ( Simple-column-Name [ , Simple-column-Name ]* )
    

    USING clause definition

    The USING clause specifies which columns to test for equality when two tables are joined. It can be used instead of an ON clause in the JOIN operations that have an explicit join clause.

    If a column in the USING clause is referenced without being qualified by a table name, the column reference points to the column in the first (left) table if the join is an INNER JOIN or a LEFT OUTER JOIN. If it is a RIGHT OUTER JOIN, unqualified references to a column in the USING clause point to the column in the second (right) table.

    When a USING clause is specified, an asterisk (*) in the select list of the query will be expanded to the following list of columns (in this order):

    • All the columns in the USING clause
    • All the columns of the first (left) table that are not specified in the USING clause
    • All the columns of the second (right) table that are not specified in the USING clause

    Examples

    
    SELECT * FROM COUNTRIES JOIN CITIES
         USING (COUNTRY);
         
    SELECT * FROM COUNTRIES JOIN CITIES
        USING (COUNTRY, COUNTRY_ISO_CODE);
     
     SELECT * FROM oe.order_items oi JOIN oe.orders o
      USING(order_id);
    
    select t.* from hr.employees t, hr.departments d
    where t.department_id = d.department_id;
    
    select * from hr.employees t inner join hr.departments d
    using(department_id);
    
    select * from hr.employees t left outer join hr.departments d
    using(department_id);
    
    select * from hr.employees t right outer join hr.departments d
    using(department_id);
    
    select * from hr.employees t full outer join hr.departments d
    using(department_id);
    
    
  • 相关阅读:
    存储过程参数传递
    iCkeck插件
    单点登录
    SQL数据库默认实例与命名实例的区别
    IE浏览器重复提交ajax请求有缓存
    IE里Iframe的Cookie问题解决办法总结
    微信公众服务号开发
    解析url参数含有特殊字符的情况
    使用客户端控件展示增删改查操作
    修改网站web.config后出现奇怪问题找不到网页
  • 原文地址:https://www.cnblogs.com/hyang0/p/10597934.html
Copyright © 2011-2022 走看看