Oracle多表查詢 工作中避免笛卡兒積的出現

2021-09-26 03:26:31 字數 1492 閱讀 1822

–多表查詢

–工作中避免笛卡兒積的出現

–利用多表查詢的方式避免笛卡兒積

–方法一給資料庫表起別名 emp e dept d

select * from emp,dept;

select e.name,e.ejob,e.sal,d.deptno, d.dname from emp e,dept d where e.empno=d.deptno;

–按照部門編號emp,dept的資訊,避免笛卡兒積

–給資料庫起別名在多表查詢裡大量使用 目前來講 起別名效率極高!

–方法2:

select e.name,e.ejob,e.sal,d.deptno, d.dname from emp e,dept d where e.deptno=d.deptno;
—此語句在資料庫中 左邊為主表 右邊為子表

–左連線—經常使用

select * from dept; 

select e.empno,e.ename,d.deptno,d.dname,d.loc from emp e,dept d where e.deptno(+)= d.deptno;

–右連線

select * from emp;

select e.empno,e.ename,d.deptno,d.dname,d.loc from emp e,dept d where e.deptno= d.deptno(+);

–備註:+在左邊表示左連線,查詢時以右邊的表為查詢條件

-------+在右邊表示左連線,查詢時以左邊的表為查詢條件

cross join 等價與

—交叉連線 產生笛卡兒積 —工作中不建議使用

select * from emp cross join dept;
select * from emp natural join dept; --自然連線 可以避免笛卡兒積—建議使用

select * from emp e join dept d  using(deptno)  where deptno = 30;

select * from emp e join dept d using(deptno) where deptno = 40;

select * from emp e join dept d using(deptno) where deptno = 10;

–join on

select * from emp e join dept d on(e.deptno=d.deptno) where e.deptno=30;
—left join

select * from emp e join dept d on(e.deptno=d.deptno) where e.deptno=30;

尋找工作中的寶藏

這是我們能在工作找到的寶藏 大部分的工作都是有成果的,成果就可以是金錢,也可以是食物或日用品 這些也是就是我們維持自己和家人生活的東西,沒有工作,就難有這些 就讓生活變得困難了 秘訣 當工作的時候,要感恩當刻的生活有一定保障 出糧時候,也記得興祝一番吧!知識工作中,為了令任務能夠達成,你的老闆或你自...

hibernate 的幾種查詢 工作中使用到的

hql是hibernate自己的一套查詢語言,於sql語法不同,具有跨資料庫的優點。示例 獲取檢查單例項列表 string tplsql from checkformtemplate t where t.type 1 and t.id in instanceidstr session session...

找工作中的一些感悟

我是個很容易就滿足於悠閒安逸生活 的人,寒暑假的作業都是開學前幾天才寫的。以前的乙個女同學,她都是先寫作業,然後再愉快地過暑假。我不寫作業也能愉快暑假。這就是人跟人之間的區別。她去清華讀經濟了,我在華工讀計算機。看,人跟人的命運就是這麼被區別開了。呵呵。再武大讀了四年本科,被寢室的姐妹同化了,又享受...