ORACLE进阶(十三)using关键字学习_oracle using where

  1. 如果在连接查询时使用了两个表中相同的多个列,那么就可以在using子句中指定多个列名。

形式如下:

select... from table1 inner join table2 using(column1,column2)

上述的语句相当于下面的语句:

select... from table1 inner join table2
		on table1.column1=table2.column2
			and table1.column2=table2.column2;

如果对多个表进行检索,就必须多次使用using关键字进行指定,形式如下:

select... from table1
	inner join table2 using(column1)
		inner join table3 using(column2);

上述的语句相当于下面的语句:

select... from table1,table2,table3
	where table1.column1=table2.column1
		and table2.column2=table3.column2;

二、再议using

Oracle中的join连接中使用using关键字,相对于natural join

在前面提到,如果是使用natraul join,并且两张表中如果有多个字段是具有相同的名称和数据类型,那么这些字段都将被oracle自作主张的将他们连接起来。

但实际上我们有时候是不需要这样来连接的。我们只需要将他们的多个具有相同的名称和数据类型的字段中挑选一两个。这时候我们就需要用到using 关键字了。

下面是一个例子。

有一个表是sales,还有一个表是costs,这两个表中都有两个字段分别是pro_id和time_id。我们暂且不去考虑下面连接的实际意义,仅作语法上的研究。

如果使用natural连接,默认情况下,两个字段将会被自然地连接在一起。

Select \* from Sales natural join costs;

Select \* from Sales join costs on Sales.prod_id = costs.prod_id and sales.time_id = costs.time_id

Select \* from Sales ,costs Where Sales.pro_id = cost.prod_id
and sales.time_id = costs.time_id

得到的结果应该是一样的。

如果我们使用自然连接,就没有机会控制连接条件,oracle自作主张的将两个相同数据类型和名称的字段自然地连接在一起了。

下面我们使用using关键字。

Select \* from Sales join costs using(prod_id)

这样就迫使oracle使用using指出的字段来做连接,而不是natural join连接中默认的两个。

请注意,这里的SQL语句没有任何意义,只是为了说明using的用法举了一个牵强的例子而已。

这里还需要说明的是:如果在使用using关键字时,而且select的结果列表项中包含了using关键字所指明的那个关键字,那么请不要在select的结果列表项中对该关键字指明它属于哪个表,例如如果使用using(prod_id),而在结果列表中要包含prod_id字段的话,请不要写成sales.prod_id或者costs.prod_id而应该写成prod_id,而且也不要使用别名,就是使用例如prod_id as “产品编号”的形式。

总结

  • 框架原理真的深入某一部分具体的代码和实现方式时,要多注意到细节,不要只能写出一个框架。

  • 算法方面很薄弱的,最好多刷一刷,不然影响你的工资和成功率😯

  • 在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。

  • 要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!!

    开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

喜欢这篇文章文章的小伙伴们点赞+转发支持,你们的支持是我最大的动力!

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值