Oracle基礎(chǔ)練習(xí)題及答案(多表查詢1)(共5篇)_第1頁(yè)
Oracle基礎(chǔ)練習(xí)題及答案(多表查詢1)(共5篇)_第2頁(yè)
Oracle基礎(chǔ)練習(xí)題及答案(多表查詢1)(共5篇)_第3頁(yè)
Oracle基礎(chǔ)練習(xí)題及答案(多表查詢1)(共5篇)_第4頁(yè)
Oracle基礎(chǔ)練習(xí)題及答案(多表查詢1)(共5篇)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Oracle基礎(chǔ)練習(xí)題及答案(多表查詢1)(共5篇)第一篇:Oracle基礎(chǔ)練習(xí)題及答案(多表查詢1)利用scott用戶自帶的四張表完成如下作業(yè):1.列出至少有一個(gè)員工的所有部門selectb.deptno,b.dnamefromempa,deptbwherea.deptno=b.deptnogroupbyb.deptno,b.dnamehavingcount(*)>=1;2.列出薪金比SMITH高的所有員工select*fromempwheresal>(selectsalfromempwhereename='SMITH');3.列出所有員工的姓名及其直接上級(jí)領(lǐng)導(dǎo)的姓名selecta.ename,b.ename“l(fā)eader”fromempa,empbwherea.mgr=b.empno;4.列出受雇日期早于其直接上級(jí)的所有員工的編號(hào),姓名,部門名稱selecta.empno,a.ename,a.hiredate,c.dnamefromempa,empb,deptcwherea.mgr=b.empnoanda.deptno=c.deptnoanda.hiredate5.列出部門名稱和這些部門的員工信息,同時(shí)列出那些沒(méi)有員工的部門selectb.dname,a.*fromempa,deptbwherea.deptno(+)=b.deptno;6.列出所有CLERK(辦事員)的姓名,及其部門名稱,部門人數(shù)selectaa.ename,aa.job,bb.dname,(selectcount(a.deptno)fromempa,deptbwherea.deptno=b.deptnoandb.dname=bb.dnamegroupbya.deptno)fromempaa,deptbbwhereaa.deptno(+)=bb.deptnoandaa.job='CLERK';7.列出最低薪金大于1500的各種工作及從事此工作的全部雇員人數(shù)selecta.job,min(sal),count(ename)fromempa,deptbwherea.deptno=b.deptnohavingmin(sal)>1500groupbya.job;8.列出在部門SALES(銷售部)工作的員工的姓名,假定不知道銷售部的部門編號(hào)。selectenamefromempa,deptbwherea.deptno=b.deptnoanddname='SALES';9.列出薪金高于公司平均薪金的所有員工,所在部門,上級(jí)領(lǐng)導(dǎo),公司的等級(jí)工資selecta.ename,dname,aa.ename“Leader”,gradefromempa,deptb,empaa,salgradeswherea.deptno=b.deptnoanda.mgr=aa.empnoanda.sal>(selectavg(sal)fromemp)anda.salbetweenlosalandhisal;10.列出與SCOTT從事相同工作的所有員工的編號(hào),姓名,職位及其部門名稱selectempno,ename,job,dnamefromempa,deptbwherea.deptno=b.deptnoandjob=(selectjobfromempwhereename='SCOTT');11.列出薪金等于部門30中員工的薪金的所有員工的姓名和薪金。selectename,salfromempwheresal=any(selectsalfromempwheredeptno=30);12.列出薪金高于在部門30工作的所有員工的薪金的員工姓名、薪金和部門名稱selectename,sal,dnamefromempa,deptbwherea.deptno=b.deptnoandsal>all(selectsalfromempwheredeptno=30);13.列出在每個(gè)部門工作的員工數(shù)量、平均工資和平均服務(wù)期限selectdname,count(ename),avg(sal),avg(sysdate-a.hiredate)fromempa,deptbwherea.deptno(+)=b.deptnogroupbya.deptno,dname;14.列出所有員工的姓名、部門名稱和工資selectename,dname,salfromempa,deptbwherea.deptno=b.deptno;15.列出所有部門的詳細(xì)信息和部門人數(shù)selectb.deptno,dname,loc,count(ename)fromempa,deptbwherea.deptno(+)=b.deptnogroupbyb.deptno,dname,loc;16.列出各種工作的最低工資及從事此工作的雇員姓名selectb.ename,c“MINSAL”,a.jobfrom(selectjob,min(sal)cfromempgroupbyjob)a,empbwherea.job=b.jobandc=b.sal;17.列出各個(gè)部門的MANAGER(經(jīng)理)的最低薪金selectdeptno,min(sal)fromempwherejob='MANAGER'groupbydeptno;18.列出員工的年工資,按年薪從低到高排序selectename,(sal+nvl(comm,0))*12afromemporderbya;19.查出某個(gè)員工的上級(jí)主管,并要求出這些主管中的薪水超過(guò)3000selecta.ename,b.ename,b.sal“bosssal”fromempa,empbwherea.mgr=b.empnoandb.sal>=3000;第二篇:Oracle基礎(chǔ)練習(xí)題及答案(子查詢)子查詢1.查詢和scott相同部門的員工姓名ename和雇用日期hiredateselectename,hiredatefromempwheredeptno=(selectb.deptnofromempa,deptbwherea.deptno=b.deptnoandename='SCOTT');2.查詢工資比公司平均工資高的所有員工的員工號(hào)empno,姓名ename和工資sal。selectempno,ename,salfromempwheresal>(selectavg(sal)fromemp);3.查詢和姓名中包含字母u的員工在相同部門的員工的員工號(hào)empno和姓名enameselectempno,enamefromempa,deptbwherea.deptno(+)=b.deptnoanda.deptno=(selectdeptnofromempwhereenamelike'%U%');4.查詢?cè)诓块T的loc為newYork的部門工作的員工的員工姓名ename,部門名稱dname和崗位名稱jobselectename,dname,jobfromempa,deptbwherea.deptno=b.deptnoandloc='NEWYORK';查詢管理者是king的員工姓名ename和工資salselecta.ename,a.salfromempa,empbwherea.mgr=b.empnoandb.ename='KING';第三篇:SQL語(yǔ)句練習(xí)題(包含有多表查詢)-答案SQL語(yǔ)句練習(xí)題1、請(qǐng)從表EMP中查找工種是職員CLERK或經(jīng)理MANAGER的雇員姓名、工資。selectename,salfromempwherejob='CLERK'orjob='MANAGER';2、請(qǐng)?jiān)贓MP表中查找部門號(hào)在10-30之間的雇員的姓名、部門號(hào)、工資、工作。selectename,deptno,sal,jobfromempwheredeptnobetween10and30;3、請(qǐng)從表EMP中查找姓名以J開(kāi)頭所有雇員的姓名、工資、職位。selectename,sal,jobfromempwhereenamelike'J%';4、請(qǐng)從表EMP中查找工資低于2000的雇員的姓名、工作、工資,并按工資降序排列。selectename,job,salfromempwheresal<=2000orderbysaldesc;5、請(qǐng)從表中查詢工作是CLERK的所有人的姓名、工資、部門號(hào)、部門名稱以及部門地址的信息。selectename,sal,emp.deptno,dname,locfromemp,deptwhereemp.deptno=dept.deptnoandjob=’CLERK’;6、查詢表EMP中所有的工資大于等于2000的雇員姓名和他的經(jīng)理的名字。selecta.ename,b.enamefromempa,empbwherea.mgr=b.empno(+)anda.sal>=2000;7、查詢所有雇員的姓名、SAL與COMM之和。selectename,sal+nvl(comm,0)“sal-and-comm”fromemp;8、查詢所有81年7月1日以前來(lái)的員工姓名、工資、所屬部門的名字selectename,sal,dnamefromemp,deptwhereemp.deptno=dept.deptnohiredate<=to_date(‘1981-07-01’,’yyyy-mm-dd’);9、查詢列出來(lái)公司就職時(shí)間超過(guò)24年的員工名單selectenamefromempwherehiredate<=add_months(sysdate,-288);10、查詢于81年來(lái)公司所有員工的總收入(SAL和COMM)selectsum(sal+nvl(comm,0))fromempwhereto_char(hiredate,’yyyy’)=’1981’;11、查詢顯示每個(gè)雇員加入公司的準(zhǔn)確時(shí)間,按××××年××月××日時(shí)分秒顯示。selectename,to_char(hiredate,'yyyy-mm-ddhh24:mi:ss')fromemp;12、查詢列出各部門的部門名和部門經(jīng)理名字selectdname,enamefromemp,deptwhereemp.deptno=dept.deptnoandjob=’MANAGER’;and第四篇:黑馬程序員c語(yǔ)言教程:多表查詢笛卡爾積部門表笛卡爾積產(chǎn)生結(jié)果:行數(shù)兩個(gè)表相乘列數(shù):行數(shù)相加原因條件等值連接select****fromtab1,tab2wheretab1.a=tab2.aselectcount(e.ename)fromempe,deptd3*wheree.deptno=d.deptnoSQL>/COUNT(E.ENAME)--------------多表查詢關(guān)鍵點(diǎn):等值連接eg:查詢員工信息,員工號(hào),姓名,月薪,部門名稱selecte.empno,e.ename,e.sal,d.dnamefromempe,deptd3*wheree.deptno=d.deptnoSQL>/EMPNOENAMESALDNAME--------------------------------------------7369SMITH800RESEARCH7499ALLEN1600SALES7521WARD1250SALES7566JONES2975RESEARCH7654MARTIN1250SALES7698BLAKE2850SALES7782CLARK2450ACCOUNTING7788SCOTT3000RESEARCH7839KING5000ACCOUNTING7844TURNER1500SALES7876ADAMS1100RESEARCH7900JAMES950SALES7902FORD3000RESEARCH7934MILLER1300ACCOUNTING已選擇14行。不等值連接:eg:查詢員工信息,員工號(hào),姓名,月薪,薪水級(jí)別selecte.empno,e.ename,e.sal,s.gradefromempe,salgradeswheree.sal>=s.losalande.sal<=s.hisalselecte.empno,e.ename,e.sal,s.gradefromempe,salgradeswheree.salbetweens.losalands.hisal外連接eg:按部門統(tǒng)計(jì)員工人數(shù):部門號(hào)部門名稱各部門人數(shù)分析1:102030====>分組分析2:因?yàn)楦鞑块T人數(shù)是在員工表中..多表查詢步驟1selectd.deptno,d.dname,count(e.empno)fromdeptd,empewhered.deptno=e.deptnogroupbyd.deptno,d.dnameDEPTNODNAMECOUNT(E.EMPNO)-------------------------------------ACCOUNTING3RESEARCH5SALES6步驟2外連接....分析:為什么40號(hào)部門沒(méi)有統(tǒng)計(jì)出來(lái)原因:因員工表里面沒(méi)有40號(hào)部門的員工(現(xiàn)象)whered.deptno=e.deptno(sql)問(wèn)題的本質(zhì)40=====>期望:在連接條件不成立的條件下,也要把部門編號(hào)40給顯示出來(lái)....外連接...selectd.deptno,d.dname,count(e.empno)fromdeptd,empewhered.deptno=e.deptno(+)groupbyd.deptno,d.dname左外連接:(+)寫(xiě)在=號(hào)的右邊自連接:--查詢員工信息,老板信息顯示:****的老板是****自連接:把一張表看成兩張表,自連接--員工表的老板是老板表的員工selecte.ename,b.enamefromempe,empbwheree.mgr=b.empnoselecte.ename||'的老板是'||b.enamefromempe,empbwheree.mgr=b.empno====>需求把員工表的每一條記錄都顯示出來(lái)selecte.ename||'的老板是'||b.enamefromempe,empbwheree.mgr=b.empno(+)selecte.ename||'的老板是'||nvl(b.ename,'他自己')fromempe,empbwheree.mgr=b.empno(+)SMITH的老板是FORDMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO----------------------------------------------------------------------------7369SMITHCLERK790217-12月-80800207499ALLENSALESMAN769820-2月-811600300307521WARDSALESMAN769822-2月-811250500307566JONESMANAGER783902-4月-812975207654MARTINSALESMAN769828-9月-8112501400307698BLAKEMANAGER783901-5月-812850307782CLARKMANAGER783909-6月-812450107788SCOTTANALYST756619-4月-873000207839KINGPRESIDENT17-11月-815000107844TURNERSALESMAN769808-9月-8115000307876ADAMSCLERK778823-5月-871100207900JAMESCLERK769803-12月-81950307902FORDANALYST756603-12月-813000207934MILLERCLERK778223-1月-8213001014行。第五篇:查詢練習(xí)題《網(wǎng)絡(luò)數(shù)據(jù)庫(kù)》講稿查詢練習(xí)題簡(jiǎn)單的單表查詢例1:檢索出1983年6月1日之后出生的學(xué)生的姓名、性別和民族,并按降序排列。SELECT姓名,性別,民族FROM學(xué)生WHERE出生日期>'1983-6-1'ORDERBY出生日期DESC多表查詢?cè)贔ROM后跟隨多個(gè)表。例1:查找出已修學(xué)分達(dá)到20分的學(xué)生的姓名、出生日期、班級(jí)名稱、已修學(xué)分。SELECT姓名,出生日期,班級(jí)名稱,已修學(xué)分FROM學(xué)生,班級(jí)WHERE學(xué)生.班級(jí)編號(hào)=班級(jí).班級(jí)編號(hào)AND已修學(xué)分>=20解釋:這里的“學(xué)生.班級(jí)編號(hào)=班級(jí).班級(jí)編號(hào)”是連接條件。如果在FROM短語(yǔ)中有兩個(gè)表,那么這兩個(gè)表必須具備可建立聯(lián)系的字段,否則無(wú)法查詢。如果FROM短語(yǔ)中的多個(gè)表中有同名字段,當(dāng)使用這些字段名時(shí),需要在字段名左邊加上表名和圓點(diǎn),作為字段名的前綴。練習(xí)題01:查找出已修學(xué)分低于20分的學(xué)生的姓名、性別和班主任。練習(xí)題02:查找出學(xué)生“王林”的班主任。練習(xí)題03:查找出班主任“劉成河”班的全部男生的信息。例2:查找出課程“中國(guó)歷史”考試及格的全部學(xué)生的學(xué)號(hào)、姓名。SELECT學(xué)生.學(xué)號(hào),姓名FROM學(xué)生,課程,成績(jī)WHERE分?jǐn)?shù)>=60AND課程名稱='中國(guó)歷史'AND學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)AND成績(jī).課程編號(hào)=課程.課程編號(hào)練習(xí)題04:查找出課程“中國(guó)歷史”考試及格的全部學(xué)生的學(xué)號(hào)、姓名、班級(jí)名稱和分?jǐn)?shù)。練習(xí)題05:查找出全部同學(xué)的所有考試的姓名、課程名稱、分?jǐn)?shù),查找結(jié)果的格式如下:嵌套查詢P121-126例1:查找出取得過(guò)95分及其以上考試成績(jī)的學(xué)生的學(xué)號(hào)和姓名。SELECT學(xué)號(hào),姓名FROM學(xué)生WHERE學(xué)號(hào)IN(SELECT學(xué)號(hào)FROM成績(jī)WHERE分?jǐn)?shù)>=95)解釋:該命令中的IN相當(dāng)于集合運(yùn)算的包含運(yùn)算符∈。括號(hào)外的查詢稱為外層查詢;括號(hào)內(nèi)的查詢稱為內(nèi)層查詢(也稱為“子查詢”)。內(nèi)層查詢的結(jié)果被當(dāng)做是一個(gè)集合。P104例2:查找出“計(jì)算機(jī)應(yīng)用”課程考試取得95分及其以上考試成績(jī)的學(xué)生的學(xué)號(hào)和姓名。SELECT學(xué)號(hào),姓名FROM學(xué)生WHERE學(xué)號(hào)IN(SELECT學(xué)號(hào)FROM成績(jī)WHERE分?jǐn)?shù)>=95AND課程編號(hào)IN(SELECT課程編號(hào)FROM課程WHERE課程名稱='計(jì)算機(jī)應(yīng)用'))例3:查找出所有學(xué)生的考試都及格的班級(jí)名稱。答案一:SELECT班級(jí)名稱FROM班級(jí)WHERE班級(jí)編號(hào)NOTIN(SELECT班級(jí)編號(hào)FROM學(xué)生WHERE學(xué)號(hào)IN(SELECT學(xué)號(hào)FROM成績(jī)WHERE分?jǐn)?shù)<60))答案二:select班級(jí)名稱from班級(jí)wherenotexists(select*from學(xué)生whereexists(select*from成績(jī)where分?jǐn)?shù)<60and班級(jí).班級(jí)編號(hào)=學(xué)生.班級(jí)編號(hào)and成績(jī).學(xué)號(hào)=學(xué)生.學(xué)號(hào)))答案三:select班級(jí)名稱from班級(jí)wherenotexists(select*from成績(jī),學(xué)生where班級(jí).班級(jí)編號(hào)=學(xué)生.班級(jí)編號(hào)and學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)and分?jǐn)?shù)<60)練習(xí)題01:查找出班主任“劉成河”班的全部男生的信息。練習(xí)題02:查找出考試全及格的課程名稱。練習(xí)題03:查找出所有學(xué)生的考試都及格的班級(jí),并排除那些沒(méi)有學(xué)生的班級(jí)。練習(xí)題04:使用多表查詢實(shí)現(xiàn)例1。練習(xí)題05:使用多表查詢實(shí)現(xiàn)例2。練習(xí)題06:查找出“數(shù)學(xué)專業(yè)”班全體同學(xué)的姓名和“數(shù)學(xué)”課程考試分?jǐn)?shù)。三個(gè)特殊運(yùn)算符一、謂詞EXISTSP122EXISTS判斷子查詢中是否為空集。例1:查找出那些還沒(méi)有學(xué)生的班級(jí)名稱。SELECT班級(jí)名稱FROM班級(jí)WHERENOTEXISTS(SELECT*FROM學(xué)生WHERE學(xué)生.班級(jí)編號(hào)=班級(jí).班級(jí)編號(hào))例2:檢索出每個(gè)學(xué)生都選修了的課程(并且考試都及格)。SELECT課程編號(hào),課程名稱FROM課程WHERENOTEXISTS(SELECT學(xué)號(hào)FROM學(xué)生WHERENOTEXISTS(SELECT*FROM成績(jī)WHERE課程.課程編號(hào)=成績(jī).課程編號(hào)AND學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)AND分?jǐn)?shù)>=60))練習(xí)題01:寫(xiě)出可實(shí)現(xiàn)例1要求的其他命令。練習(xí)題02:寫(xiě)出可實(shí)現(xiàn)例2要求的其他命令。二、范圍運(yùn)算符BETWEEN…AND…P103該范圍是一個(gè)閉區(qū)間,意思是在…和…之間,包括兩個(gè)端點(diǎn)的值。例3:查找出1983年6月1日至1984年6月1日之間出生的學(xué)生的信息。SELECT*FROM學(xué)生WHERE出生日期BETWEEN'1983-6-1'AND'1984-6-1'練習(xí)題03:查找出已修學(xué)分在15和20之間的學(xué)生的信息。練習(xí)題04:查找出1983年6月1日至1984年6月1日之間出生的少數(shù)民族學(xué)生的信息。練習(xí)題05:查找出已修學(xué)分在15和20之間、且“自然辨證法”課程的考試分?jǐn)?shù)達(dá)到80分的學(xué)生的姓名、性別、所在班級(jí)。三、字符串匹配運(yùn)算符LIKEP105例4:查找出姓名中包含有“林”的學(xué)生的信息。SELECT*FROM學(xué)生WHERE姓名LIKE'%林%'例5:查找出姓名中第二個(gè)字是“林”的學(xué)生的信息。SELECT*FROM學(xué)生WHERE姓名LIKE'_林%'練習(xí)題06:查找出湖北出生的學(xué)生的信息。練習(xí)題07:查找出武漢出生的學(xué)生的信息。練習(xí)題08:查找出班主任“郭大壯”的班中出生地是武漢的學(xué)生的姓名、班級(jí)。練習(xí)題09:查找出至少參加了辛有余老師所任課程中一門課程考試的男生的姓名。至少寫(xiě)出兩條不同的命令。聚合函數(shù)及其分組查詢?yōu)榱送瓿珊罄m(xù)題目,請(qǐng)首先計(jì)算出每位同學(xué)的已修學(xué)分UPDATE學(xué)生SET已修學(xué)分=(SELECTSUM(學(xué)分)FROM成績(jī),課程WHERE學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)AND分?jǐn)?shù)>=60AND成績(jī).課程編號(hào)=課程.課程編號(hào))一、常用統(tǒng)計(jì)(聚合)函數(shù)P109表4-3例1:計(jì)算出全部學(xué)生的平均已修學(xué)分。SELECTAVG(已修學(xué)分)FROM學(xué)生例2:計(jì)算出“軟件工程”班全體同學(xué)的平均已修學(xué)分。SELECTAVG(已修學(xué)分)FROM學(xué)生WHERE班級(jí)編號(hào)IN(SELECT班級(jí)編號(hào)FROM班級(jí)WHERE班級(jí)名稱='軟件工程')練習(xí)題01:計(jì)算出“軟件工程”和“計(jì)算機(jī)應(yīng)用”兩個(gè)班全體同學(xué)的平均已修學(xué)分。注意:當(dāng)子查詢的結(jié)果只有一個(gè)數(shù)據(jù)時(shí),可以用等號(hào);為多個(gè)數(shù)據(jù)時(shí),需用IN。練習(xí)題02:計(jì)算出李建同學(xué)各門課程考試總分。例3:查找出“數(shù)學(xué)專業(yè)”班“數(shù)學(xué)”課程考試的最高分?jǐn)?shù)。SELECTMAX(分?jǐn)?shù))FROM學(xué)生,成績(jī)WHERE學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)AND班級(jí)編號(hào)=(SELECT班級(jí)編號(hào)FROM班級(jí)WHERE班級(jí)名稱='數(shù)學(xué)專業(yè)')AND課程編號(hào)=(SELECT課程編號(hào)FROM課程WHERE課程名稱='數(shù)學(xué)')另一個(gè)答案SELECTMAX(分?jǐn)?shù))FROM成績(jī)WHERE學(xué)號(hào)IN(SELECT學(xué)號(hào)FROM學(xué)生WHERE班級(jí)編號(hào)=(SELECT班級(jí)編號(hào)FROM班級(jí)WHERE班級(jí)名稱='數(shù)學(xué)專業(yè)'))AND課程編號(hào)=(SELECT課程編號(hào)FROM課程WHERE課程名稱='數(shù)學(xué)')例4:查找出“數(shù)學(xué)專業(yè)”班“數(shù)學(xué)”課程考試最高得分的同學(xué)姓名和分?jǐn)?shù)。SELECT姓名,分?jǐn)?shù)FROM學(xué)生,成績(jī)WHERE學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)AND班級(jí)編號(hào)=(SELECT班級(jí)編號(hào)FROM班級(jí)WHERE班級(jí)名稱='數(shù)學(xué)專業(yè)')AND課程編號(hào)=(SELECT課程編號(hào)FROM課程WHERE課程名稱='數(shù)學(xué)')AND分?jǐn)?shù)=(SELECTMAX(分?jǐn)?shù))FROM學(xué)生,成績(jī)WHERE學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)AND班級(jí)編號(hào)=(SELECT班級(jí)編號(hào)FROM班級(jí)WHERE班級(jí)名稱='數(shù)學(xué)專業(yè)')AND課程編號(hào)=(SELECT課程編號(hào)FROM課程WHERE課程名稱='數(shù)學(xué)'))附:TOP…PERCENTP98二、GROUPBY短語(yǔ)GROUPBY后面跟隨的是分組關(guān)鍵字段,按照關(guān)鍵字段的值,將記錄分成若干個(gè)組,每一組轉(zhuǎn)變?yōu)椴樵兘Y(jié)果中的一行。例5:計(jì)算出各班學(xué)生的平均已修學(xué)分。SELECT班級(jí)編號(hào),AVG(已修學(xué)分)FROM學(xué)生GROUPBY班級(jí)編號(hào)練習(xí)題04:計(jì)算出各門課程考試的平均分?jǐn)?shù)。練習(xí)題05:計(jì)算出各位學(xué)生的考試總分。練習(xí)題06:計(jì)算出辛有余老師所任課程中每門課程的課程編號(hào)和學(xué)生平均考試分?jǐn)?shù)。三、別名及其應(yīng)用P113-114,P99例6:查找出已修學(xué)分低于本班平均已修學(xué)分的學(xué)生信息。SELECT姓名,班級(jí)編號(hào),已修學(xué)分FROM學(xué)生WHERE已修學(xué)分說(shuō)明:在FROM短語(yǔ)中為表取別名也可省略AS,例如FROM學(xué)生XS。例7:查找和計(jì)算出各位學(xué)生的姓名和考試總分。SELECT姓名,總分FROM學(xué)生,(SELECT學(xué)號(hào),SUM(分?jǐn)?shù))AS總分FROM成績(jī)GROUPBY學(xué)號(hào))ASZFWHERE學(xué)生.學(xué)號(hào)=ZF.學(xué)號(hào)說(shuō)明:在FROM短語(yǔ)中可用子查詢的結(jié)果作為表,此時(shí),必須為該子查詢?nèi)e名。在SELECT短語(yǔ)中可為查詢結(jié)果列取別名,其格式有三種,見(jiàn)P99。練習(xí)題07:查找和計(jì)算出各門課程的名稱及其考試的平均分?jǐn)?shù)。練習(xí)題08:查找和計(jì)算出各門課程的名稱及其考試達(dá)到90分的人數(shù)。四、HAVING短語(yǔ)HAVING后面跟隨的是篩選條件,作用是篩選滿足條件的組,即在分組之后過(guò)濾數(shù)據(jù),條件中經(jīng)常包含統(tǒng)計(jì)(聚合)函數(shù)。例8:查找出講授多門課程的教師姓名及其授課門數(shù)。SELECT任課教師,COUNT(*)AS授課門數(shù)FROM課程GROUPBY任課教師HAVINGCOUNT(*)>1說(shuō)明:HAVING短語(yǔ)通常與GROUPBY短語(yǔ)配合使用,否則無(wú)使用價(jià)值。HAVING短語(yǔ)中使用的統(tǒng)計(jì)函數(shù)應(yīng)該是SELECT短語(yǔ)中使用的函數(shù)。練習(xí)題10:查找出考試成績(jī)優(yōu)秀人數(shù)多于3人的課程編號(hào)及其學(xué)生人數(shù)(假定考試分?jǐn)?shù)達(dá)到90分為優(yōu)秀)。練習(xí)題11:查找出考試成績(jī)優(yōu)秀人數(shù)多于3人的課程名稱及其學(xué)生人數(shù)(假定考試分?jǐn)?shù)達(dá)到90分為優(yōu)秀)。練習(xí)題12:查找出考試成績(jī)優(yōu)秀人次多于5人次的班級(jí)名稱及其人次(假定考試分?jǐn)?shù)達(dá)到90分為優(yōu)秀)。練習(xí)題13:查找出考試分?jǐn)?shù)標(biāo)準(zhǔn)差小于10、且最高分與最低分之差小于20的各班(班級(jí)名稱)各門課程(課程名稱)的考試人數(shù),考試分?jǐn)?shù)的最高分、最低分、平均分、標(biāo)準(zhǔn)差、方差。常用函數(shù)、連接一、常用函數(shù)P159二、鏈接P114用于多表查詢,實(shí)現(xiàn)表之間的鏈接。例6:在多表查詢中,下面的命令可查找出已修學(xué)分達(dá)到17分的學(xué)生的姓名、出生日期和班級(jí):SELECT姓名,出生日期,班級(jí)名稱FROM學(xué)生,班級(jí)WHERE學(xué)生.班級(jí)編號(hào)=班級(jí).班級(jí)編號(hào)AND已修學(xué)分>=17用INNERJOIN…ON…,可將該命令改寫(xiě)為:SELECT姓名,出生日期,班級(jí)名稱FROM學(xué)生INNERJOIN班級(jí)ON學(xué)生.班級(jí)編號(hào)=班級(jí).班級(jí)編號(hào)WHERE已修學(xué)分>=17或SELECT姓名,出生日期,班級(jí)名稱FROM學(xué)生INNERJOIN班級(jí)ON學(xué)生.班級(jí)編號(hào)=班級(jí).班級(jí)編號(hào)AND已修學(xué)分>=17解釋:這里的“學(xué)生.班級(jí)編號(hào)=班級(jí).班級(jí)編號(hào)”是連接條件。如果在FROM短語(yǔ)中有兩個(gè)表,那么這兩個(gè)表必須具備可建立聯(lián)系的字段,否則無(wú)法查詢。如果FROM短語(yǔ)中的多個(gè)表中有同名字段,當(dāng)使用這些字段名時(shí),需要在字段名左邊加上

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論