--寫(xiě)一條查詢(xún)語(yǔ)句啥么,查詢(xún)員工姓名、部門(mén)名稱(chēng)悬荣、工作地點(diǎn)?
select ename,dept.dname,dept.loc from emp,dept where emp.deptno(+) = dept.deptno;
--練習(xí)一
--1.寫(xiě)一個(gè)查詢(xún)氯迂,顯示所有員工姓名,部門(mén)編號(hào)嚼蚀,部門(mén)名稱(chēng)。
select ename,dept.deptno,dept.dname
from emp,dept
where emp.deptno(+) = dept.deptno;
--2.寫(xiě)一個(gè)查詢(xún)匾二,顯示所有工作在CHICAGO并且獎(jiǎng)金不為空的員工姓名哮独,工作地點(diǎn),獎(jiǎng)金
select ename,dept.loc,comm
from emp,dept
where emp.deptno = dept.deptno and loc in 'CHICAGO'
and comm is not null;
--3.寫(xiě)一個(gè)查詢(xún)舟扎,顯示所有姓名中含有A字符的員工姓名,工作地點(diǎn)睹限。
select ename,dept.loc
from emp,dept
where emp.deptno = dept.deptno and ename like '%A%';
select ename,dept.loc
from emp,dept
where emp.deptno = dept.deptno and instr(ename,'A') <> 0;
select ename,dept.loc
from emp,dept
where emp.deptno = dept.deptno and instr(ename,'A') != 0;
select ename,dept.loc
from emp,dept
where emp.deptno = dept.deptno and instr(ename,'A') > 0;
--練習(xí)二
--1.查詢(xún)每個(gè)員工的編號(hào),姓名羡疗,工資染服,工資等級(jí),所在工作城市叨恨,按照工資等級(jí)進(jìn)行升序排序柳刮。
select empno,ename,sal,grade,loc
from emp,dept,salgrade
where emp.deptno = dept.deptno and sal between losal and hisal
order by sal asc;
--思考:查詢(xún)每個(gè)員工的姓名和直接上級(jí)姓名?
select worker.ename,manager.ename
from emp worker,emp manager
where worker.mgr = manager.empno(+);
如何區(qū)分外部連接的符號(hào)(+)放在哪一邊這是我一直沒(méi)有搞清楚的地方
--練習(xí)三
--1.查詢(xún)所有工作在NEW YORK和CHICAGO的員工姓名痒钝,員工編號(hào)秉颗,以及他們的經(jīng)理姓名,經(jīng)理編號(hào)送矩。
select worker.ename,worker.empno,manager.ename,worker.mgr
from emp worker,emp manager,dept
where worker.mgr = manager.empno(+)
and worker.deptno = dept.deptno
and loc in ('NEW YORK','CHICAGO');
--2.第上一題的基礎(chǔ)上蚕甥,添加沒(méi)有經(jīng)理的員工King,并按照員工編號(hào)排序栋荸。
select worker.ename,worker.empno,manager.ename,worker.mgr
from emp worker,emp manager,dept
where worker.mgr = manager.empno(+)
and worker.deptno = dept.deptno
and loc in ('NEW YORK','CHICAGO')
order by worker.empno asc;
--3.查詢(xún)所有員工編號(hào)菇怀,姓名,部門(mén)名稱(chēng)晌块,包括沒(méi)有部門(mén)的員工也要顯示出來(lái)爱沟。
select empno,ename,dept.dname
from emp,dept
where emp.deptno(+) = dept.deptno;
--練習(xí)四
--使用SQL-99寫(xiě)法,完成如下練習(xí)
--1.創(chuàng)建一個(gè)員工表和部門(mén)表的交叉連接摸袁。
交叉連接會(huì)產(chǎn)生兩個(gè)表的交叉乘積钥顽,
和兩個(gè)表之間的笛卡爾積是一樣的;
使用CROSS JOIN 子句完成靠汁。
select * from emp cross join dept;
--2.使用自然連接蜂大,顯示入職日期在80年5月1日之后的員工姓名,部門(mén)名稱(chēng)蝶怔,入職日期
自然連接是對(duì)兩個(gè)表之間相同名字和
數(shù)據(jù)類(lèi)型的列進(jìn)行的等值連接奶浦;
如果兩個(gè)表之間相同名稱(chēng)的列的數(shù)據(jù)類(lèi)型不同,
則會(huì)產(chǎn)生錯(cuò)誤踢星;
使用NATURAL JOIN子句來(lái)完成澳叉。
select ename,dname,hiredate
from emp
natural join dept
where hiredate > '01-5月-80';
--3.使用USING子句,顯示工作在CHICAGO的員工姓名,部門(mén)名稱(chēng)成洗,工作地點(diǎn)
自然連接是使用所有名稱(chēng)和
數(shù)據(jù)類(lèi)型相匹配的列作為連接條件,
而USING子句可以指定用某個(gè)或
某幾個(gè)相同名字和數(shù)據(jù)類(lèi)型的列作為連接條件充包。
使用USING子句創(chuàng)建連接時(shí)遥椿,應(yīng)注意以下幾點(diǎn):
如果有若干個(gè)列名稱(chēng)相同但數(shù)據(jù)類(lèi)型不同,
自然連接子句可以用USING子句來(lái)替換家浇,
以指定產(chǎn)生等值連接的列碴裙。
如果有多于一個(gè)列都匹配的情況青团,
使用USING子句只能指定其中的一列。
USING子句中的用到的列不能使用表名和別名作為前綴芦昔。
NATURAL JOIN子句和USING子句是相互排斥的咕缎,
不能同時(shí)使用料扰。
select ename,dname,loc
from emp
join dept using(deptno)
where loc in 'CHICAGO';
--4.使用ON子句晒杈,顯示工作在CHICAGO的員工姓名,部門(mén)名稱(chēng)帖努,工作地點(diǎn)拼余,薪資等級(jí)
自然連接條件基本上是具有相同列名的表之間的等值連接亩歹;
如果要指定任意連接條件,
或指定要連接的列凡橱,
則可以使用ON子句稼钩;
用ON將連接條件和其它檢索條件分隔開(kāi)变抽,
其它檢索條件寫(xiě)在WHERE子句氮块;
ON子句可以提高代碼的可讀性滔蝉。
select ename,dname,loc,grade
from emp join dept
on emp.deptno = dept.deptno
join salgrade
on sal between losal and hisal
where loc in 'CHICAGO';
--5.使用左連接蝠引,查詢(xún)每個(gè)員工的姓名蛀柴,經(jīng)理姓名鸽疾,沒(méi)有經(jīng)理的King也要顯示出來(lái)。
左外連接以FROM子句中的左邊表為基表冒窍,
該表所有行數(shù)據(jù)按照連接條件無(wú)論是否與右邊表能匹配上豺鼻,
都會(huì)被顯示出來(lái)。
select worker.ename,manager.ename
from emp worker
left outer join emp manager
on worker.mgr = manager.empno;
--6.使用右連接谬莹,查詢(xún)每個(gè)員工的姓名附帽,經(jīng)理姓名圣猎,沒(méi)有經(jīng)理的King也要顯示出來(lái)送悔。
右外連接以FROM子句中的右邊表為基表爪模,
該表所有行數(shù)據(jù)按照連接條件無(wú)論是否與左邊表能匹配上屋灌,
都會(huì)被顯示出來(lái)应狱。
select worker.ename,manager.ename
from emp manager
right outer join emp worker
on worker.mgr = manager.empno;
--課后作業(yè)
--1.顯示員工SMITH的姓名疾呻,部門(mén)名稱(chēng)岸蜗,直接上級(jí)名稱(chēng)
select worker.ename,dname,manager.ename
from emp worker,emp manager,dept
where worker.mgr = manager.empno
and worker.deptno = dept.deptno
and worker.ename in 'SMITH'; --通常寫(xiě)法
select worker.ename,dname,manager.ename
from emp worker join emp manager
on worker.mgr = manager.empno
join dept
on worker.deptno = dept.deptno
where worker.ename in 'SMITH';--join on
select worker.ename,dname,manager.ename
from emp worker left outer join emp manager
on worker.mgr = manager.empno
left outer join dept
on worker.deptno = dept.deptno
where worker.ename in 'SMITH';--左外連接 left outer join
select worker.ename,dname,manager.ename
from emp worker right outer join emp manager
on worker.mgr = manager.empno
right outer join dept
on worker.deptno = dept.deptno
where worker.ename in 'SMITH';--右外連接 right outer join
--2.顯示員工姓名璃岳,部門(mén)名稱(chēng),工資单芜,工資級(jí)別洲鸠,要求工資級(jí)別大于4級(jí)赁温。
select ename,dname,sal,grade
from emp,dept,salgrade
where emp.deptno = dept.deptno
and sal between losal
and hisal and grade > 4;--通常寫(xiě)法
select ename,dname,sal,grade
from emp join dept
on emp.deptno = dept.deptno
join salgrade
on sal between losal and hisal
where grade > 4;--join on
select ename,dname,sal,grade
from emp left outer join dept
on emp.deptno = dept.deptno
left outer join salgrade
on sal between losal and hisal
where grade > 4;--左外連接 left outer join
select ename,dname,sal,grade
from emp right outer join dept
on emp.deptno = dept.deptno
right outer join salgrade
on sal between losal and hisal
where grade > 4;--右外連接 right outer join
--3.顯示員工KING和FORD管理的員工姓名及其經(jīng)理姓名袜匿。
我特么實(shí)在不知道如何斷句V烧睢!9窒印柳沙!等我想明白再做!T刖丁!梗顺!
--4.顯示員工姓名,參加工作時(shí)間寺谤,經(jīng)理名变屁,參加工作時(shí)間意狠,要求參加時(shí)間比經(jīng)理早。
select worker.ename as 員工姓名,worker.hiredate as 員工入職日期,
manager.ename as 經(jīng)理姓名,manager.hiredate as 經(jīng)理入職日期
from emp worker,emp manager
where worker.mgr = manager.empno and
worker.hiredate < manager.hiredate;
分割線(xiàn)
博主為咯學(xué)編程:父母不同意學(xué)編程,現(xiàn)已斷絕關(guān)系;戀人不同意學(xué)編程谷市,現(xiàn)已分手;親戚不同意學(xué)編程击孩,現(xiàn)已斷絕來(lái)往;老板不同意學(xué)編程,現(xiàn)已失業(yè)三十年巩梢。。鞠抑。忌警。。箕速。如果此博文有幫到你歡迎打賞朋譬,金額不限。字柠。。