sql查询学习和实践点滴积累

Posted 世有因果知因求果

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql查询学习和实践点滴积累相关的知识,希望对你有一定的参考价值。

SQL是关系数据库中非常基础同时也是非常重要的知识,虽然比如类似Laravel的后端开发类库提供了ORM抽象数据类封装掉了一部分简单的sql查询,因此很多时候我们无需关系sql的具体细节,便能非常快速地开发出自己的后端应用来,但是一旦涉及到相对比较复杂的关系时我们还是不得不再去求助于sql。本博作为鸡年新年刚过,起个开端,不断记录积累本人在sql学习中觉得重要的点点滴滴,学习资源,备忘的同时,也希望给有缘人以帮助

SQL Subselect and correlated subquery

subquery就是一个被潜入另外一个SQL语句中括号内的select statement.在大多数情况下,我们可以非常轻松地以JOIN语句来完全实现一个子select语句的功能(或者相反)。但是很多时候,和join方法相比,subquery来得更加通俗易懂,符合逻辑。比如像IN, ANY这些关键字的使用就往往使得语句更易理解和容易被分解。作为一个例子,我们来看下面问题的query语句:

" 列出所有在NJ州的客人名单"

select Name from Customers where CustomerID = ANY ( select CustomerID from AddressBook where state = ‘NJ‘)

在这个例子中,括号中的黑体部分就是一个subquery.

这个subquery被我们称做"Non-correlated" subquery,原因是你可以单独执行这条select语句来得到一个合乎逻辑的正确的结果集.在这个例子中,隔离的subquery可以产生一个来自NJ州的客户名单列表。

然而,相对于这种Non-correlated就有一种Correlated subquery,这种子查询包含着outer query的value的引用,因此无法脱离outer query而单独执行

我们举一个典型的查询例子:

select * from t1 where column1 = ANY ( SELECT column1 from t2 where t2.column2 = t1.column2)

注意在这个例子中,t1表虽然并未在subquery的from clause所指出但是却被subquery中的where clause所引用,t1表只存在于outer query语句中,如果你直接执行这个隔离的subquery,你将由于无法找到t1表而出错。

 

以上是关于sql查询学习和实践点滴积累的主要内容,如果未能解决你的问题,请参考以下文章

AJAX入门---点滴的积累

初识ASP.NET---点滴的积累---ASP.NET学习小结

辅导日的点滴积累,希望有更多的点滴...

VsVim -- 编程路上的点滴积累

linux的点滴积累

点滴积累方有为,每步思索可致远