Oracle 当两个表关联时,用where条件关联快还是用join on关联快,还有其他啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 当两个表关联时,用where条件关联快还是用join on关联快,还有其他啥区别相关的知识,希望对你有一定的参考价值。

Oracle 当两个表关联时,用where条件关联快还是用join on关联快,还有其他什么区别吗?

一样的吧
如果用where是老语法的
用join是新语法
性能都一样 数据库优化器会自动识别
即使where后面加了很多其它条件

建议使用join on
因为写where如果忘记写关联条件 就成笛卡尔积了
join on 是个好的习惯能避免这种不必要的错误出现
参考技术A 这2个,只是2种不同的写法,只要索引运用得当,没有区别。

ORACLE 在执行前, 会对SQL语句进行预编译和优化的, 最终的执行顺序是一致的。
参考技术B 用主键和外键相关联
primary key:主键
foreign key:外键
PK:主键列,要求取值唯一且非空
FK:外键列,取值是相关联表的对应列的值,可以为空
参考技术C 没区别,建议用join on,通用.

oracle 想把三张表关联起来,怎么关联?

sysuser,usermenu,program前两张表相同字符yhdh,后两张表相同的字符cxdh,怎么关联

1、在使用where进行查询的时候,对于查询条件中的字段要指定归属表或者表别名。如下图。

2、如果改为using进行查询的话那就不用指定表别名,using关键字的使用规则就是等值连接而且连接的字段名称和字段类型必须要一致。

3、如果在使用了using关键字进行查询的时候如果添加了表的别名或者是表名,则直接会报如下错误,对于using关键字指定的列名 在查询中是不能使用表名或者表别名的。

4、并且还有一点需要注意的是using后只能接字段名不能使用 大于  等于  小于等符号进行比对。

参考技术A left join 或者 right join
select * from usermenu
left join sysuser on sysuser.yhdh=usermenu.yhdh
left join program on program.cxdh=usermenu.cxdh
只有这样关联的数据才会处在一行。
参考技术B WHERE条件里写
sysuser.yhdh=usermenu.yhdh and usermenu.cxdh=program.cxdh
例如:
select * from sysuser,usermenu,program
where sysuser.yhdh=usermenu.yhdh and usermenu.cxdh=program.cxdh
这样三张表就关联了。本回答被提问者采纳
参考技术C WHERE sysuser.yhdh=usermenu.yhdh and usermenu.cxdh=program.cxdh 参考技术D SELECT *---可以换成你想要的字段
FROM sysuser S,
usermenu U ,
program P
WHERE S.yhdh= U.yhdh
AND U.cxdh = P .cxdh;

这样应该就没问题了!试试吧!呵呵!

以上是关于Oracle 当两个表关联时,用where条件关联快还是用join on关联快,还有其他啥区别的主要内容,如果未能解决你的问题,请参考以下文章

oracle 想把三张表关联起来,怎么关联?

求助Oracle大表查询优化

Oracle两张表关联批量更新其中一张表的数据

ThinkPHP求助,关联模型查询如何跨表多条件查询

Oracle数据库,关于关联两张表更新问题

update sql 两个关联的表