在資料庫中對於資料表的連線操作一共提供了兩種:
內連線:也稱等值連線在where中消除笛卡爾積的條件就是採用了內連線方式進行的
外連線:內連線中只能顯示等值滿足的條件,不滿足的條件則無法顯示,如果希望顯示特定表中的全部資料就要用要外連線
外連線分3種
在oracle中使用(+)表示連線
左外連線(左連線) 左關係屬性=右關係屬性(+) 表示左外連線
右外連線(右連線) 左關係屬性(+)=右關係屬性 表示右外連線
全外連線(全連線)
將emp和dept表聯合查詢
select * from emp e,dept d增加右外連線顯示部門表中40部門的資訊where e.deptno=d.deptno;
select * from emp e,dept d首先在emp表中插入一條沒有部門編號的記錄where e.deptno(+)=d.deptno;
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)左外連線顯示編號9999的資訊values(9999,'test','clerk',7369,sysdate,800,100,null);
select * from emp e,dept d自身關聯:where e.deptno=d.deptno(+);
查詢出每個員工的編號,姓名及上級領導的編號和姓名
select e.empno,e.ename,e.mgr emp表中領導編號,m.empno m表中的領導編號,m.ename查詢在1981入職的全部員工的編號,姓名,入職日期(年-月-日顯示),職位,領導姓名,員工月工資sal ,年總工資(sal+comm)*12,工資等級,部門編號,部門名稱,部門位置,並縣且要求這些員工的月工資在1500~3500之間,將最後的結果按年總工資降序排序,有果年工資相等,按入職時間公升序排序from emp e,emp m
where e.mgr=m.empno(+);
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 顯示笛卡爾積 不帶條件的內連線也是笛卡爾積...