根基毗连查询
在简单查询中我们一般只利用了from字句的一个表,然而在关系数据库中,表与表之间往往是存在关系的,这就是要求从多个表中检索数据,以输出更有意义的成果。最简单的毗连体例就是在select语句中,经由过程from子句利用多个表,并用逗号将分歧的根基表离隔。下面语句将商品信息表和供给商信息表毗连起来,查询此中的商品名称,产地,供给商名称。
但此时成果显示该查询语句共显示了200行记实,这显然是错误的。因为仅仅经由过程select和from子句毗连那么查询成果将是一个经由过程笛卡儿积生当作的表,包含年夜量无意义的信息。而where语句可以有用避免笛卡儿积的呈现。只有当两个表具有不异匹配的列时才返回成果集。例如下面语句经由过程在where子句中利用毗连前提,实现了每件商品名称,产地,供给商名称信息。
但也要注重一个问题若是想要查询“供给商编号”应该怎么处置,因为两个表中都有“供给商编号”,所以应该查询的时辰限制一下,申明事实是哪一个表中的。
join毗连查询
join用于毗连两个分歧的表,on用于给出这两个表之间的毗连前提。若是进一步限制查询规模,可以在后面添加where语句,下面示例利用从商品信息表和供给商信息表查询单价年夜于1200元的商品信息。
而且join毗连也可以实现两个以上的表查询,写语句的时辰一个join对应一个on,看下面的例子。
天然毗连查询
其实天然毗连查询(natural join)就是加倍便利的join毗连查询,天然毗连不必指心猿意马任何划一毗连前提,系统将主动判定出具有不异名称的列然后形当作匹配,但注重天然毗连是按照两个表中同名的列而进行毗连的,当列分歧名时,天然毗连将掉去意义。
调集操作查询
调集操作就是将两个或多个SQL查询连系组成合适查询,调集操作符有union(并集)、intersect(交集)、minus(差集),此刻以union为例,union查询必需从每个表中读取不异的列。
子查询
子查询和毗连查询一样供给了利用单个查询拜候多个表中的数据的方式,利用in关头字,意思是在in后面的调集中查询我们需要的,即in后面是限制前提。
注重在Oracle 10g中的标点符号是英文状况下的
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!