oracle 多表查询

!!!查询时要注意笛卡尔积:添加合适的条件
!!!查询时要注意数据重复:用distinct
!!!查询时要注意别名的使用:给列设置别名要用as,给表设置别名不需用as。给表设置别名后,查询语句中只能使用别名不能使用原表名

各类连接查询方式:

SELECT table1.column, table2.column FROM table1
[,table2 where table1.column_name = table2.column_name]  --简单的自连接
[,table2 where table1.column_name between table2.low and table2.heigh]   --连接查询也可实现非等值查询
[CROSS JOIN table2]|      --可得到两表的笛卡尔积
[NATURAL JOIN table2] |   --自然连接,自动以两表中的同名列为条件创建等值连接
[JOIN table2 USING (column_name)] | --以特定列为条件创建等值连接的自然连接,列名前不能写表名前缀
[INNER JOIN table2 ON(table1.column_name = table2.column_name)] | --内连接,常用
[LEFT|RIGHT|FULL OUTER JOIN table2 ON (table1.column_name = table2.column_name)] --左/右/全外连接
  • 内连接:可以合并具有相同列的2个以上的表的行,结果集中不包含一个表与另一个表不匹配的行

举例:在dyaq表中查询qlrmc='小明‘的所有数据。但dyaq表中无qlrmc字段,有bdcdyh字段。qlr表中有qlrmc字段和bdcdyh字段。

select  distinct s.* from dyaq s inner join (select * from qlr where qlrmc='小明’) t on s.bdcdyh=t.bdcdyh
  • 外连接:除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行 ,这种连接称为左(或右) 外连接。没有匹配的行时, 结果表中相应的列为空(NULL)

参考:https://www.cnblogs.com/wffrzh/p/9413554.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值