Oracle 10g如何实现高级查询

许多人愁不会Oracle 10g的高级查询, 其实也是比较简单的 。 在查询数据时, 为了获取完整的信息就要将多个表连接起来, 这也是关系数据库的一个重要特性---表之间存在的关系 。 这种关系可以将表的数据联系起来 。 多表查询就是根据这种关系, 实现从多个表中获取数据还原信息 。 下面这个图就是我将要操作的表结构 。 操作方式 01 根基毗连查询
在简单查询中我们一般只利用了from字句的一个表, 然而在关系数据库中, 表与表之间往往是存在关系的, 这就是要求从多个表中检索数据, 以输出更有意义的成果 。 最简单的毗连体例就是在select语句中, 经由过程from子句利用多个表, 并用逗号将分歧的根基表离隔 。 下面语句将商品信息表和供给商信息表毗连起来, 查询此中的商品名称, 产地, 供给商名称 。

Oracle 10g如何实现高级查询

文章插图

02 但此时成果显示该查询语句共显示了200行记实, 这显然是错误的 。 因为仅仅经由过程select和from子句毗连那么查询成果将是一个经由过程笛卡儿积生当作的表, 包含年夜量无意义的信息 。 而where语句可以有用避免笛卡儿积的呈现 。 只有当两个表具有不异匹配的列时才返回成果集 。 例如下面语句经由过程在where子句中利用毗连前提, 实现了每件商品名称, 产地, 供给商名称信息 。

Oracle 10g如何实现高级查询

文章插图

03 但也要注重一个问题若是想要查询“供给商编号”应该怎么处置, 因为两个表中都有“供给商编号”, 所以应该查询的时辰限制一下, 申明事实是哪一个表中的 。

Oracle 10g如何实现高级查询

文章插图

04 join毗连查询
join用于毗连两个分歧的表, on用于给出这两个表之间的毗连前提 。 若是进一步限制查询规模, 可以在后面添加where语句, 下面示例利用从商品信息表和供给商信息表查询单价年夜于1200元的商品信息 。

Oracle 10g如何实现高级查询

文章插图

05 而且join毗连也可以实现两个以上的表查询, 写语句的时辰一个join对应一个on, 看下面的例子 。

Oracle 10g如何实现高级查询

文章插图

06 天然毗连查询
其实天然毗连查询(natural join)就是加倍便利的join毗连查询, 天然毗连不必指定任何划一毗连前提, 系统将主动判定出具有不异名称的列然后形当作匹配, 但注重天然毗连是按照两个表中同名的列而进行毗连的, 当列分歧名时, 天然毗连将掉去意义 。

Oracle 10g如何实现高级查询

文章插图

07 调集操作查询
调集操作就是将两个或多个SQL查询连系组成合适查询, 调集操作符有union(并集)、intersect(交集)、minus(差集), 此刻以union为例, union查询必需从每个表中读取不异的列 。

Oracle 10g如何实现高级查询

推荐阅读