第一篇:Oracle基礎(chǔ)練習(xí)題及答案(子查詢)
子查詢
1.查詢和scott相同部門的員工姓名ename和雇用日期hiredate select ename,hiredate from emp where deptno=(select b.deptno from emp a,dept b where a.deptno=b.deptno and ename='SCOTT');
2.查詢工資比公司平均工資高的所有員工的員工號(hào)empno,姓名ename和工資sal。
select empno,ename,sal from emp where sal>(select avg(sal)from emp);
3.查詢和姓名中包含字母u的員工在相同部門的員工的員工號(hào)empno和姓名ename select empno,ename from emp a,dept b where a.deptno(+)=b.deptno and a.deptno=(select deptno from emp where ename like '%U%');
4.查詢?cè)诓块T的loc為newYork的部門工作的員工的員工姓名ename,部門名稱dname和崗位名稱job select ename,dname,job from emp a,dept b where a.deptno=b.deptno and loc='NEW YORK';
查詢管理者是king的員工姓名ename和工資sal select a.ename,a.sal from emp a,emp b where a.mgr=b.empno and b.ename='KING';
第二篇:Oracle基礎(chǔ)練習(xí)題及答案(多表查詢1)
利用scott用戶自帶的四張表完成如下作業(yè):
1.列出至少有一個(gè)員工的所有部門
select b.deptno,b.dname from emp a,dept b where a.deptno=b.deptno group by b.deptno,b.dname having count(*)>=1;
2.列出薪金比SMITH高的所有員工
select * from emp where sal>(select sal from emp where ename='SMITH');
3.列出所有員工的姓名及其直接上級(jí)領(lǐng)導(dǎo)的姓名
select a.ename,b.ename “l(fā)eader” from emp a,emp b where a.mgr=b.empno;
4.列出受雇日期早于其直接上級(jí)的所有員工的編號(hào),姓名,部門名稱
select a.empno,a.ename,a.hiredate,c.dname from emp a,emp b,dept c where a.mgr=b.empno and a.deptno=c.deptno and a.hiredate 5.列出部門名稱和這些部門的員工信息,同時(shí)列出那些沒有員工的部門 select b.dname,a.* from emp a,dept b where a.deptno(+)=b.deptno; 6.列出所有CLERK(辦事員)的姓名,及其部門名稱,部門人數(shù) select aa.ename,aa.job,bb.dname,(select count(a.deptno)from emp a,dept b where a.deptno=b.deptno and b.dname=bb.dname group by a.deptno)from emp aa,dept bb where aa.deptno(+)=bb.deptno and aa.job='CLERK'; 7.列出最低薪金大于1500的各種工作及從事此工作的全部雇員人數(shù) select a.job,min(sal),count(ename)from emp a,dept b where a.deptno=b.deptno having min(sal)>1500 group by a.job; 8.列出在部門SALES(銷售部)工作的員工的姓名,假定不知道銷售部的部門編號(hào)。select ename from emp a,dept b where a.deptno=b.deptno and dname='SALES'; 9.列出薪金高于公司平均薪金的所有員工,所在部門,上級(jí)領(lǐng)導(dǎo),公司的等級(jí)工資 select a.ename,dname,aa.ename “Leader” ,grade from emp a,dept b,emp aa,salgrade s where a.deptno=b.deptno and a.mgr=aa.empno and a.sal>(select avg(sal)from emp)and a.sal between losal and hisal; 10.列出與SCOTT從事相同工作的所有員工的編號(hào),姓名,職位及其部門名稱 select empno,ename,job,dname from emp a,dept b where a.deptno=b.deptno and job=(select job from emp where ename='SCOTT'); 11.列出薪金等于部門30中員工的薪金的所有員工的姓名和薪金。 select ename,sal from emp where sal=any(select sal from emp where deptno=30); 12.列出薪金高于在部門30工作的所有員工的薪金的員工姓名、薪金和部門名稱 select ename,sal,dname from emp a,dept b where a.deptno=b.deptno and sal>all(select sal from emp where deptno=30); 13.列出在每個(gè)部門工作的員工數(shù)量、平均工資和平均服務(wù)期限 select dname,count(ename),avg(sal),avg(sysdate-a.hiredate)from emp a,dept b where a.deptno(+)=b.deptno group by a.deptno,dname; 14.列出所有員工的姓名、部門名稱和工資 select ename,dname,sal from emp a,dept b where a.deptno=b.deptno; 15.列出所有部門的詳細(xì)信息和部門人數(shù) select b.deptno,dname,loc,count(ename)from emp a,dept b where a.deptno(+)=b.deptno group by b.deptno,dname,loc; 16.列出各種工作的最低工資及從事此工作的雇員姓名 select b.ename,c “MIN SAL”,a.job from(select job,min(sal)c from emp group by job)a,emp b where a.job=b.job and c=b.sal; 17.列出各個(gè)部門的MANAGER(經(jīng)理)的最低薪金 select deptno,min(sal)from emp where job='MANAGER' group by deptno; 18.列出員工的年工資,按年薪從低到高排序 select ename,(sal+nvl(comm,0))*12 a from emp order by a; 19.查出某個(gè)員工的上級(jí)主管,并要求出這些主管中的薪水超過3000 select a.ename,b.ename,b.sal “boss sal” from emp a,emp b where a.mgr=b.empno and b.sal>=3000; 《網(wǎng)絡(luò)數(shù)據(jù)庫(kù)》講稿 查詢練習(xí)題 簡(jiǎn)單的單表查詢 例1:檢索出1983年6月1日之后出生的學(xué)生的姓名、性別和民族,并按降序排列。 SELECT 姓名,性別,民族 FROM 學(xué)生 WHERE 出生日期>'1983-6-1' ORDER BY 出生日期 DESC 多表查詢 在FROM后跟隨多個(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)系的字段,否則無法查詢。如果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ù)>=60 AND 課程名稱='中國(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:查找出取得過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ù)>=95 AND 課程編號(hào) IN(SELECT 課程編號(hào) FROM 課程 WHERE 課程名稱='計(jì)算機(jī)應(yīng)用')) 例3:查找出所有學(xué)生的考試都及格的班級(jí)名稱。 答案一: SELECT 班級(jí)名稱 FROM 班級(jí) WHERE 班級(jí)編號(hào) NOT IN(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í) where not exists(select * from 學(xué)生 where exists(select * from 成績(jī) where 分?jǐn)?shù)<60 and 班級(jí).班級(jí)編號(hào)=學(xué)生.班級(jí)編號(hào) and 成績(jī).學(xué)號(hào)=學(xué)生.學(xué)號(hào))) 答案三: select 班級(jí)名稱 from 班級(jí) where not exists(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í),并排除那些沒有學(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)算符 一、謂詞EXISTS P122 EXISTS判斷子查詢中是否為空集。 例1:查找出那些還沒有學(xué)生的班級(jí)名稱。 SELECT 班級(jí)名稱 FROM 班級(jí) WHERE NOT EXISTS (SELECT * FROM 學(xué)生 WHERE 學(xué)生.班級(jí)編號(hào)=班級(jí).班級(jí)編號(hào)) 例2:檢索出每個(gè)學(xué)生都選修了的課程(并且考試都及格)。 SELECT 課程編號(hào),課程名稱 FROM 課程 WHERE NOT EXISTS(SELECT 學(xué)號(hào) FROM 學(xué)生 WHERE NOT EXISTS(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:寫出可實(shí)現(xiàn)例1要求的其他命令。練習(xí)題02:寫出可實(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)算符LIKE P105 例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:查找出至少參加了辛有余老師所任課程中一門課程考試的男生的姓名。至少寫出兩條不同的命令。 聚合函數(shù)及其分組查詢 為了完成后續(xù)題目,請(qǐng)首先計(jì)算出每位同學(xué)的已修學(xué)分 UPDATE 學(xué)生 SET 已修學(xué)分=(SELECT SUM(學(xué)分)FROM 成績(jī),課程 WHERE 學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)AND 分?jǐn)?shù)>=60 AND 成績(jī).課程編號(hào)=課程.課程編號(hào)) 一、常用統(tǒng)計(jì)(聚合)函數(shù) P109表4-3 例1:計(jì)算出全部學(xué)生的平均已修學(xué)分。SELECT AVG(已修學(xué)分)FROM 學(xué)生 例2:計(jì)算出“軟件工程”班全體同學(xué)的平均已修學(xué)分。 SELECT AVG(已修學(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ù)。 SELECT MAX(分?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è)答案 SELECT MAX(分?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ù)=(SELECT MAX(分?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 … PERCENT P98 二、GROUP BY短語(yǔ) GROUP BY后面跟隨的是分組關(guān)鍵字段,按照關(guān)鍵字段的值,將記錄分成若干個(gè)組,每一組轉(zhuǎn)變?yōu)椴樵兘Y(jié)果中的一行。 例5:計(jì)算出各班學(xué)生的平均已修學(xué)分。SELECT 班級(jí)編號(hào),AVG(已修學(xué)分)FROM 學(xué)生 GROUP BY 班級(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é)分<(SELECT AVG(已修學(xué)分)FROM 學(xué)生 XS WHERE 學(xué)生.班級(jí)編號(hào)=XS.班級(jí)編號(hào)) 說明:在FROM短語(yǔ)中為表取別名也可省略AS,例如FROM 學(xué)生 XS。 例7:查找和計(jì)算出各位學(xué)生的姓名和考試總分。 SELECT 姓名, 總分 FROM 學(xué)生,(SELECT 學(xué)號(hào), SUM(分?jǐn)?shù))AS 總分 FROM 成績(jī) GROUP BY 學(xué)號(hào))AS ZF WHERE 學(xué)生.學(xué)號(hào)=ZF.學(xué)號(hào) 說明:在FROM短語(yǔ)中可用子查詢的結(jié)果作為表,此時(shí),必須為該子查詢?nèi)e名。 在SELECT短語(yǔ)中可為查詢結(jié)果列取別名,其格式有三種,見P99。 練習(xí)題07:查找和計(jì)算出各門課程的名稱及其考試的平均分?jǐn)?shù)。 練習(xí)題08:查找和計(jì)算出各門課程的名稱及其考試達(dá)到90分的人數(shù)。 四、HAVING短語(yǔ) HAVING后面跟隨的是篩選條件,作用是篩選滿足條件的組,即在分組之后過濾數(shù)據(jù),條件中經(jīng)常包含統(tǒng)計(jì)(聚合)函數(shù)。 例8:查找出講授多門課程的教師姓名及其授課門數(shù)。 SELECT 任課教師,COUNT(*)AS 授課門數(shù) FROM 課程 GROUP BY 任課教師 HAVING COUNT(*)>1 說明:HAVING短語(yǔ)通常與GROUP BY短語(yǔ)配合使用,否則無使用價(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 用INNER JOIN … ON …,可將該命令改寫為: SELECT 姓名,出生日期,班級(jí)名稱 FROM 學(xué)生 INNER JOIN 班級(jí) ON 學(xué)生.班級(jí)編號(hào)=班級(jí).班級(jí)編號(hào) WHERE 已修學(xué)分>=17 或 SELECT 姓名,出生日期,班級(jí)名稱 FROM 學(xué)生 INNER JOIN 班級(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)系的字段,否則無法查詢。如果FROM短語(yǔ)中的多個(gè)表中有同名字段,當(dāng)使用這些字段名時(shí),需要在字段名左邊加上表名和圓點(diǎn),作為字段名的前綴。 練習(xí)題01:查找出已修學(xué)分低于17分的學(xué)生的姓名、性別和班主任。練習(xí)題02:查找出學(xué)生“王林”的班主任。 練習(xí)題03:查找出班主任“劉成河”班的全部男生的信息。 例7:在多表查詢中,下面的命令可查找出課程“中國(guó)歷史”考試及格的全部學(xué)生的學(xué)號(hào)、姓名:SELECT 學(xué)生.學(xué)號(hào),姓名 FROM 學(xué)生,課程,成績(jī) WHERE 分?jǐn)?shù)>=60 AND 課程名稱=“中國(guó)歷史” AND 學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào) AND 成績(jī).課程編號(hào)=課程.課程編號(hào) 用INNER JOIN … ON …,可將該命令改寫為: SELECT 學(xué)生.學(xué)號(hào),姓名 FROM 學(xué)生 INNER JOIN(成績(jī) INNER JOIN 課程 ON 成績(jī).課程編號(hào)=課程.課程編號(hào))ON 學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào) WHERE 分?jǐn)?shù)>=60 AND 課程名稱=“中國(guó)歷史” 練習(xí)題04:查找出課程“中國(guó)歷史”考試及格的全部學(xué)生的學(xué)號(hào)、姓名、班級(jí)和分?jǐn)?shù)。練習(xí)題05:查找出全部同學(xué)的所有考試的姓名、課程名稱、分?jǐn)?shù)。查找結(jié)果的格式如下: 練習(xí)題06:計(jì)算出每個(gè)同學(xué)實(shí)際取得的學(xué)分(不是學(xué)生表中的已修學(xué)分)。查找結(jié)果的格式如下: 操作查詢 一、生成表查詢 P136 例1: SELECT 姓名, 出生日期, 班級(jí)名稱 INTO XYZ FROM 學(xué)生, 班級(jí) WHERE 學(xué)生.班級(jí)編號(hào)=班級(jí).班級(jí)編號(hào) AND 已修學(xué)分>=17 例2: SELECT 班級(jí)名稱, 課程名稱, 分?jǐn)?shù) INTO 考試分?jǐn)?shù) FROM 課程 INNER JOIN((班級(jí) INNER JOIN 學(xué)生 ON 班級(jí).班級(jí)編號(hào) = 學(xué)生.班級(jí)編號(hào))INNER JOIN 成績(jī) ON 學(xué)生.學(xué)號(hào) = 成績(jī).學(xué)號(hào))ON 課程.課程編號(hào) = 成績(jī).課程編號(hào) 二、更新查詢 P137 例3:將每位同學(xué)的已修學(xué)分設(shè)置為0。 UPDATE 學(xué)生 SET 已修學(xué)分=0 將每位同學(xué)的已修學(xué)分設(shè)置為4。UPDATE 學(xué)生 SET 已修學(xué)分=4 省略WHERE短語(yǔ),表示無條件修改全部記錄。例4:為每個(gè)女生增加2學(xué)分。 UPDATE 學(xué)生 SET 已修學(xué)分=已修學(xué)分+2 WHERE 性別= “女” 練習(xí)題01:(綜合練習(xí))首先為“學(xué)生”表添加一個(gè)整型字段“年齡”,然后用UPDATE命令計(jì)算出每位同學(xué)的年齡并填入“年齡”字段。 例5:根據(jù)考試成績(jī),計(jì)算出每位同學(xué)的實(shí)際已修學(xué)分,并填入“學(xué)生”表的“已修學(xué)分”字段。 UPDATE 學(xué)生 SET 已修學(xué)分=(SELECT SUM(學(xué)分)FROM 成績(jī),課程 WHERE 學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)AND 分?jǐn)?shù)>=60 AND 成績(jī).課程編號(hào)=課程.課程編號(hào)) 練習(xí)題02:根據(jù)“學(xué)生”表,計(jì)算出每班的男生人數(shù)和女生人數(shù),并填入“班級(jí)”表中。 三、追加查詢 P134 四、刪除查詢 P141 例6:刪除XS表中已修學(xué)分低于4分的記錄。 DELETE FROM XS WHERE 已修學(xué)分<4 例7:刪除沒有學(xué)生的班級(jí)。 DELETE FROM 班級(jí) WHERE 班級(jí)編號(hào) NOT IN(SELECT 班級(jí)編號(hào) FROM 學(xué)生 WHERE 班級(jí)編號(hào) IS NOT NULL) 練習(xí)題03:刪除沒有參加過任何考試的學(xué)生。 練習(xí)題04:刪除考試平均分?jǐn)?shù)低于本班所有學(xué)生全部考試平均分?jǐn)?shù)的同學(xué)。 考點(diǎn)7:查詢 1.若在“tEmployee”表中查找所有出生日期在“1970-1-1”和“1980-1-1”之間的記錄,可以在查詢?cè)O(shè)計(jì)視圖的準(zhǔn)則行中輸入()。答案:A A)Between #1970-1-1# And #1980-1-1# B)Between “1970-1-1” And “1980-1-1” C)“1970-1-1” And “1980-1-1” D)#1970-1-1# And #1980-1-1# 2.下面顯示的是查詢?cè)O(shè)計(jì)視圖,從設(shè)計(jì)視圖所示的內(nèi)容中判斷此查詢將顯示()。答案:B A)出生日期字段值 B)所有字段值 C)除出生日期以外的所有字段值 D)雇員ID字段值 3.在SQL查詢中“GROUP BY”的含義是()。答案:D A)選擇行條件 B)對(duì)查詢進(jìn)行排序 C)選擇列字段 D)對(duì)查詢進(jìn)行分組 4.若要將“產(chǎn)品”表中所有供貨商是“ABC”的產(chǎn)品單價(jià)下調(diào)50,則正確的SQL語(yǔ)句是()。答案:B A)UPDATE 產(chǎn)品 SET 單價(jià)=50 WHERE 供貨商=“ABC” B)UPDATE 產(chǎn)品 SET 單價(jià)=單價(jià)-50 WHERE 供貨商=“ABC” C)UPDATE FROM 產(chǎn)品 SET 單價(jià)=50 WHERE 供貨商=“ABC” D)UPDATE FROM 產(chǎn)品 SET 單價(jià)=單價(jià)-50 WHERE 供貨商=“ABC” 5.下面不是操作查詢的是()。答案:C A)刪除查詢 B)更新查詢 C)參數(shù)查詢 D)生成表查詢 6.在SQL語(yǔ)言的SELECT語(yǔ)句中,用于實(shí)現(xiàn)選擇運(yùn)算的子句是()。答案:D A)FOR B)IF C)WHILE D)WHERE 7.在SQL查詢中,若要取得“學(xué)生”數(shù)據(jù)表中的所有記錄和字段,其SQL語(yǔ)法為()。答案:B A)SELECT 姓名 FROM 學(xué)生 B)SELECT * FROM 學(xué)生 C)SELECT 姓名 FROM 學(xué)生 WHILE 學(xué)號(hào)=02650 D)SELECT * FROM 學(xué)生 WHILE 學(xué)號(hào)=02650 8.假設(shè)某數(shù)據(jù)表中有一個(gè)工作時(shí)間字段,查找1999年參加工作的職工記錄的準(zhǔn)則是()。答案:A A)Between # 99-01-01# And # 99-12-31 # B)Between “ 99-01-01 ” And “ 99-12-31 ” C)Between “ 99.01.01 ” And “ 99.12.31 ” D)# 99.01.01 # And # 99.12.31 # 9.SQL的含義是()。答案:A A)結(jié)構(gòu)化查詢語(yǔ)言 B)數(shù)據(jù)定義語(yǔ)言 C)數(shù)據(jù)庫(kù)查詢語(yǔ)言 D)數(shù)據(jù)庫(kù)操縱與控制語(yǔ)言 10.在Access中已建立了“學(xué)生”表,表中有“學(xué)號(hào)”、“姓名”、“性別”和“入學(xué)成績(jī)”等字段。執(zhí)行如下SQL命令“Select 性別, avg(入學(xué)成績(jī))From 學(xué)生 Group by 性別”其結(jié)果是()。答案:B A)計(jì)算并顯示所有學(xué)生的性別和入學(xué)成績(jī)的平均值 B)按性別分組計(jì)算并顯示性別和入學(xué)成績(jī)的平均值 C)計(jì)算并顯示所有學(xué)生的入學(xué)成績(jī)的平均值 D)按性別分組計(jì)算并顯示所有學(xué)生的入學(xué)成績(jī)的平均值 11.假設(shè)“公司”表中有編號(hào)、名稱、法人等字段,查找公司名稱中有“網(wǎng)絡(luò)”二字的公司信息,正確的命令是()。答案:D A)SELECT * FROM 公司 FOR 名稱= “*網(wǎng)絡(luò)*” B)SELECT * FROM 公司 FOR 名稱 LIKE “*網(wǎng)絡(luò)*” C)SELECT * FROM 公司 WHERE 名稱= “*網(wǎng)絡(luò)*” D)SELECT * FROM 公司 WHERE 名稱 LIKE “*網(wǎng)絡(luò)*” 12.下圖是使用查詢?cè)O(shè)計(jì)器完成的查詢,與該查詢等價(jià)的SQL語(yǔ)句是()。 答案:A A)select 學(xué)號(hào),數(shù)學(xué) from sc where 數(shù)學(xué)>(select avg(數(shù)學(xué))from sc) B)select 學(xué)號(hào) where 數(shù)學(xué)>(select avg(數(shù)學(xué))from sc) C)select 數(shù)學(xué) avg(數(shù)學(xué))from sc D)select 數(shù)學(xué)>(select avg(數(shù)學(xué))from sc) 13.在查詢?cè)O(shè)計(jì)視圖中()。答案:A A)可以添加數(shù)據(jù)庫(kù)表,也可以添加查詢 B)只能添加數(shù)據(jù)庫(kù)表 C)只能添加查詢 D)數(shù)據(jù)庫(kù)表和查詢都不能添加 14.檢索價(jià)格在30萬(wàn)~60萬(wàn)元的產(chǎn)品,可以設(shè)置條件為()。答案:C A)“>30 Not <60” B)“>30 Or <60” C)“>30 And <60” D)“>30 Like <60” 15.下列關(guān)于SQL語(yǔ)句的說法中,錯(cuò)誤的是()。答案:D A)INSERT語(yǔ)句可以向數(shù)據(jù)表中追加新的數(shù)據(jù)記錄 B)UPDATE語(yǔ)句用來修改數(shù)據(jù)表中已經(jīng)存在的數(shù)據(jù)記錄 C)DELETE語(yǔ)句用來刪除數(shù)據(jù)表中的記錄 D)CREATE語(yǔ)句用來建立表結(jié)構(gòu)并追加新的記錄 16.下列不屬于操作查詢的是()。答案:A A)參數(shù)查詢 B)生成表查詢 C)更新查詢 D)刪除查詢 17.在Access數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)新表,應(yīng)該使用的SQL語(yǔ)句是()。答案:A A)Create Table B)Create Index C)Alter Table D)Create Database 18.下面顯示的是查詢?cè)O(shè)計(jì)視圖的“設(shè)計(jì)網(wǎng)格”部分:從所顯示的內(nèi)容中可以判斷出該查詢要查找的是()。答案:A A)性別為“女”并且1980年以前參加工作的記錄 B)性別為“女”并且1980年以后參加工作的記錄 C)性別為“女”或者1980年以前參加工作的記錄 D)性別為“女”或者1980年以后參加工作的記錄 19.在一個(gè)操作中可以更改多條記錄的查詢是()。答案:B A)參數(shù)查詢 B)操作查詢 C)SQL查詢 D)選擇查詢 20.直接將命令發(fā)送ODBC數(shù)據(jù),它使用服務(wù)器能接受的命令,利用它可以檢索或更改記錄的是()。答案:B A)聯(lián)合查詢 B)傳遞查詢 C)數(shù)據(jù)定義查詢 D)子查詢 21.要求按學(xué)生學(xué)號(hào)統(tǒng)計(jì)出每名學(xué)生的借閱次數(shù),下列SQL語(yǔ)句中,正確的是()。答案:B A)Select 學(xué)號(hào),Count(學(xué)號(hào))from 借閱 B)Select 學(xué)號(hào),Count(學(xué)號(hào))from 借閱 Group By 學(xué)號(hào) C)Select 學(xué)號(hào),Sum(學(xué)號(hào))from 借閱 D)Select 學(xué)號(hào),Sum(學(xué)號(hào))from 借閱 Order By 學(xué)號(hào) 22.在一個(gè)Access的表中有字段“專業(yè)”,要查找包含“信息”兩個(gè)字的記錄,正確的條件表達(dá)式是()。答案:B A)=left([專業(yè)],2)=“信息” B)like “*信息*” C)=“信息*” D)Mid([專業(yè)],1,2)=“信息” 23.Access支持的查詢類型有()。答案:A A)選擇查詢、交叉表查詢、參數(shù)查詢、SQL查詢和操作查詢 B)基本查詢、選擇查詢、參數(shù)查詢、SQL查詢和操作查詢 C)多表查詢、單表查詢、交叉表查詢、參數(shù)查詢和操作查詢 D)選擇查詢、統(tǒng)計(jì)查詢、參數(shù)查詢、SQL查詢和操作查詢 24.要從數(shù)據(jù)庫(kù)中刪除一個(gè)表,應(yīng)該使用的SQL語(yǔ)句是()。答案:D A)ALTER TABLE B)KILL TABLE C)DELETE TABLE D)DROP TABLE 25.在Access中已建立了“教師”表,表中有“教師編號(hào)”、“職稱”、“性別”和“年齡”等字段。執(zhí)行如下SQL命令:SELECT Count(“教師編號(hào)”)AS 各類職稱人數(shù) FROM 教師 GROUP BY 職稱其結(jié)果是()。答案:B A)計(jì)算并顯示各類職稱人數(shù)的職稱和教師編號(hào) B)按職稱分組,并計(jì)算教師編號(hào)的個(gè)數(shù)以各類職稱人數(shù)顯示 C)計(jì)算所有教師編號(hào)的個(gè)數(shù),以各類職稱人數(shù)顯示 D)按各類職稱人數(shù)分組計(jì)算并顯示教師編號(hào)的個(gè)數(shù)和職稱 26.在SELECT語(yǔ)句中使用ORDER BY子句是為了指定()。答案:B A)查詢的表 B)查詢的結(jié)果順序 C)查詢的條件 D)查詢的字段 27.若要查詢成績(jī)?yōu)?0~80分之間(包括70分,不包括80分)的學(xué)生的信息,查詢準(zhǔn)則設(shè)置正確的是()。答案:C A)>69 or <80 B)Between 70 with 80 C)>=70 and <80 D)IN(70,79) 28.對(duì)“將信息系1999年以前參加工作的教師的職稱改為副教授”,合適的查詢?yōu)?)。答案:B A)生成表查詢 B)更新查詢 C)刪除查詢 D)追加查詢 29.下圖是簡(jiǎn)單查詢向?qū)В浩渲邪粹o和按鈕分別代表的意思是()。答案:A A)單擊按鈕一次選擇一個(gè)字段,單擊按鈕一次選擇全部字段 B)單擊按鈕一次選擇一個(gè)字段,單擊按鈕一次選擇全部字段 C)兩者的作用相同,都是選擇一個(gè)字段 D)以上說法均錯(cuò)誤 30.下面對(duì)查詢功能的敘述中正確的是()。答案:C A)在查詢中,選擇查詢可以只選擇表中的部分字段,通過選擇一個(gè)表中的不同字段生成同一個(gè)表 B)在查詢中,編輯記錄主要包括添加記錄、修改記錄、刪除記錄和導(dǎo)入、導(dǎo)出記錄 C)在查詢中,查詢不僅可以找到滿足條件的記錄,而且還可以在建立查詢的過程中進(jìn)行各種統(tǒng)計(jì)計(jì)算 D)以上說法均不對(duì) 31.與SELECT TAB1.* FROM TAB1 WHERE InStr([簡(jiǎn)歷],“籃球”)<>0功能相同的語(yǔ)句是()。答案:C A)SELECT TAB1.* FROM TAB1 WHERE TAB1.簡(jiǎn)歷 Like “籃球” B)SELECT TAB1.* FROM TAB1 WHERE TAB1.簡(jiǎn)歷 Like “*籃球” C)SELECT TAB1.* FROM TAB1 WHERE TAB1.簡(jiǎn)歷 Like “*籃球*” D)SELECT TAB1.* FROM TAB1 WHERE TAB1.簡(jiǎn)歷 Like “籃球*” 32.在Access 數(shù)據(jù)庫(kù)的表設(shè)計(jì)視圖中,不能進(jìn)行的操作是()。答案:D A)修改字段類型 B)設(shè)置索引 C)增加字段 D)刪除記錄 33.關(guān)于準(zhǔn)則 Like![北京,上海,廣州],以下滿足條件的是()。答案:D A)北京 B)上海 C)廣州 D)杭州 34.現(xiàn)有某查詢?cè)O(shè)計(jì)視圖(如下圖所示),該查詢要查找的是()。 答案:A A)身高在160以上的女性和所有的男性 B)身高在160以上的男性和所有的女性 C)身高在160以上的所有人或男性 D)身高在160以上的所有人 35.Access中,以下不屬于查詢操作方式的是()。答案:C A)選擇查詢 B)參數(shù)查詢 C)準(zhǔn)則查詢 D)操作查詢 36.“A Or B”準(zhǔn)則表達(dá)式表示的意思是()。答案:B A)表示查詢表中的記錄必須同時(shí)滿足Or兩端的準(zhǔn)則A和B,才能進(jìn)入查詢結(jié)果集 B)表示查詢表中的記錄只需滿足Or兩端的準(zhǔn)則A和B中的一個(gè),即可進(jìn)入查詢結(jié)果集 C)表示查詢表中記錄的數(shù)據(jù)介于A、B之間的記錄才能進(jìn)入查詢結(jié)果集 D)表示查詢表中的記錄當(dāng)滿足Or兩端的準(zhǔn)則A和B不相等時(shí)即進(jìn)入查詢結(jié)果集 37.若在“tEmployee”表中查找所有姓“王”的記錄,可以在查詢?cè)O(shè)計(jì)視圖的準(zhǔn)則行中輸入()。答案:B A)Like “王” B)Like “王*” C)=“王” D)=“王*” 38.在SQL查詢中使用WHERE子句指出的是()。答案:D A)查詢目標(biāo) B)查詢結(jié)果 C)查詢視圖 D)查詢條件 39.將表A的記錄復(fù)制到表B中,且不刪除表B中的記錄,可以使用的查詢是()。答案:C A)刪除查詢 B)生成表查詢 C)追加查詢 D)交叉表查詢 40.要將“90分以上學(xué)生情況”表中所有記錄和“學(xué)生成績(jī)查詢”中80分以下的記錄,顯示內(nèi)容為“學(xué)生編號(hào)”、“姓名”、“成績(jī)”3個(gè)字段。正確的表達(dá)式是()。答案:C A)SELECT學(xué)生編號(hào),姓名,成績(jī)FROM學(xué)生成績(jī)查詢 WHERE 成績(jī)<80 JOIN SELECT學(xué)生編號(hào),姓名,成績(jī)FROM 90分以上學(xué)生情況 B)SELECT學(xué)生編號(hào),姓名,成績(jī)FROM學(xué)生成績(jī)查詢 WHERE 成績(jī)<80 UNION SELECT學(xué)生編號(hào),成績(jī),姓名FROM 90分以上學(xué)生情況 C)SELECT學(xué)生編號(hào),姓名,成績(jī)FROM學(xué)生成績(jī)查詢 WHERE 成績(jī)<80 NUION SELECT學(xué)生編號(hào),姓名,成績(jī)FROM 90分以上學(xué)生情況 D)SELECT學(xué)生編號(hào),姓名,成績(jī)FROM學(xué)生成績(jī)查詢 WHERE 成績(jī)<80 NUION SELECT學(xué)生編號(hào),成績(jī)FROM 90分以上學(xué)生情況 41.假設(shè)已在Access中建立了包含“書名”、“單價(jià)”和“數(shù)量”3個(gè)字段的“tOfg”表。以該表為數(shù)據(jù)源創(chuàng)建的窗體中,有一個(gè)計(jì)算訂購(gòu)總金額的文本框,其控件來源為()。答案:B A)[單價(jià)]*[數(shù)量] B)=[單價(jià)]*[數(shù)量] C)[圖書訂單表]![單價(jià)]*[圖書訂單表]![數(shù)量] D)=[圖書訂單表]![單價(jià)]*[圖書訂單表]![數(shù)量] 查詢Oracle正在執(zhí)行和執(zhí)行過的SQL語(yǔ)句 --正在執(zhí)行的select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT from v$session a, v$sqlarea bwhere a.sql_address = b.address ---執(zhí)行過的select b.SQL_TEXT,b.FIRST_LOAD_TIME,b.SQL_FULLTEXT from v$sqlarea b where b.FIRST_LOAD_TIME between '2009-10-15/09:24:47' and'2009-10-15/09:24:47' order by b.FIRST_LOAD_TIME (此方法好處可以查看某一時(shí)間段執(zhí)行過的sql,并且 SQL_FULLTEXT 包含了完整的 sql 語(yǔ)句)其他 select OSUSER,PROGRAM,USERNAME,SCfrom V$SESSION A LEFT JOIN V$SQL B ON A.SQL_ADDRESS=B.ADDRESS AND A.SQL_HASH_VALUE=B.HASH_VALUE order by b.cpu_time desc HEMANAME,B.Cpu_Time,STATUS,B.SQL_TEXTselect address, sql_text, piece from v$session, v$sqltextwhere address = sql_address --and machine = < you machine name >order by address, piece 查找前十條性能差的sql.SELECT * FROM(select PARSING_USER_ID,EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,sql_text FROM v$sqlarea order BY disk_reads DESC)where ROWNUM<10; 查看占io較大的正在運(yùn)行的sessionfacebook:http:// SELECT se.sid,se.serial#,pr.SPID,se.username,se.status,se.terminal,se.program,se.MODULE,、se.sql_address,st.event,st.p1text,si.physical_reads,si.block_changes FROM v$session se,v$session_wait st,v$sess_io si,v$process pr WHERE st.sid=se.sid AND st.sid=si.sid AND se.PADDR=pr.ADDR AND se.sid>6 AND st.wait_time=0 AND st.event NOT LIKE '%SQL%' ORDER BY physical_reads DESC第三篇:查詢練習(xí)題
第四篇:access查詢練習(xí)題
第五篇:查詢Oracle正在執(zhí)行和執(zhí)行過的SQL語(yǔ)句