表的連線操作

2022-08-17 10:06:14 字數 1795 閱讀 5309

在資料庫中對於資料表的連線操作一共提供了兩種:

內連線:也稱等值連線在where中消除笛卡爾積的條件就是採用了內連線方式進行的

外連線:內連線中只能顯示等值滿足的條件,不滿足的條件則無法顯示,如果希望顯示特定表中的全部資料就要用要外連線

外連線分3種

在oracle中使用(+)表示連線

左外連線(左連線) 左關係屬性=右關係屬性(+) 表示左外連線      

右外連線(右連線) 左關係屬性(+)=右關係屬性 表示右外連線

全外連線(全連線)

將emp和dept表聯合查詢

select * from emp e,dept d

where e.deptno=d.deptno;

增加右外連線顯示部門表中40部門的資訊

select * from emp e,dept d

where e.deptno(+)=d.deptno;

首先在emp表中插入一條沒有部門編號的記錄

insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)

values(9999,'test','clerk',7369,sysdate,800,100,null);

左外連線顯示編號9999的資訊

select * from emp e,dept d

where e.deptno=d.deptno(+);

自身關聯:

查詢出每個員工的編號,姓名及上級領導的編號和姓名

select e.empno,e.ename,e.mgr emp表中領導編號,m.empno m表中的領導編號,m.ename

from emp e,emp m

where e.mgr=m.empno(+);

查詢在1981入職的全部員工的編號,姓名,入職日期(年-月-日顯示),職位,領導姓名,員工月工資sal ,年總工資(sal+comm)*12,工資等級,部門編號,部門名稱,部門位置,並縣且要求這些員工的月工資在1500~3500之間,將最後的結果按年總工資降序排序,有果年工資相等,按入職時間公升序排序

select e.empno,e.ename,to_char(e.hiredate,'yyyy-mm-dd') 入職日期,e.job,e.sal 月基本工資,(e.sal+nvl(e.comm,0))*12 yearsal,

m.ename 領導姓名,

decode(s.grade,1,'e等工資',

2,'d等工資',

3,'c等工資',

4,'b等工資',

5,'a等工資'

) 工資等級,

d.deptno,d.dname,d.loc

from emp e,emp m,salgrade s,dept d

where to_char(e.hiredate,'yyyy')='1981'

and e.mgr=m.empno(+)

and e.sal between s.losal and s.hisal

and e.deptno=d.deptno(+)

and e.sal between 1500 and 3500

order by yearsal,e.hiredate asc;

表的連線操作 學習筆記

在資料庫中對於資料表的連線操作一共提供了兩種 內連線 也稱等值連線在where中消除笛卡爾積的條件就是採用了內連線方式進行的 外連線 內連線中只能顯示等值滿足的條件,不滿足的條件則無法顯示,如果希望顯示特定表中的全部資料就要用要外連線 外連線分3種 在oracle中使用 表示連線 左外連線 左連線 ...

Mysql表連線 增刪改操作

1,概要說明 mysql表連線 用在當兩張表或者多張表聯合查詢,共同提供資料 select e.id,d.id,d.name from emp as e join dep as d on e.dpid d.id 2,執行過程 如果是 a join b則a為主表,b為從表 主表中的任何一條資料,都要試...

mysql 表的連線方式 Mysql表的連線方式

mysql表的連線方式 1.交叉連線 笛卡爾積 交叉聯接返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉聯接也稱作笛卡爾積。sql語句 select from 表1,表2 隱士笛卡爾積 select from 表1 crross join 表2 顯示笛卡爾積 不帶條件的內連線也是笛卡爾積...