第一篇:Oracle基礎練習題及答案(子查詢)
子查詢
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.查詢工資比公司平均工資高的所有員工的員工號empno,姓名ename和工資sal。
select empno,ename,sal from emp where sal>(select avg(sal)from emp);
3.查詢和姓名中包含字母u的員工在相同部門的員工的員工號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.查詢在部門的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基礎練習題及答案(多表查詢1)
利用scott用戶自帶的四張表完成如下作業:
1.列出至少有一個員工的所有部門
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.列出所有員工的姓名及其直接上級領導的姓名
select a.ename,b.ename “leader” from emp a,emp b where a.mgr=b.empno;
4.列出受雇日期早于其直接上級的所有員工的編號,姓名,部門名稱
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.列出部門名稱和這些部門的員工信息,同時列出那些沒有員工的部門 select b.dname,a.* from emp a,dept b where a.deptno(+)=b.deptno; 6.列出所有CLERK(辦事員)的姓名,及其部門名稱,部門人數 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的各種工作及從事此工作的全部雇員人數 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(銷售部)工作的員工的姓名,假定不知道銷售部的部門編號。select ename from emp a,dept b where a.deptno=b.deptno and dname='SALES'; 9.列出薪金高于公司平均薪金的所有員工,所在部門,上級領導,公司的等級工資 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從事相同工作的所有員工的編號,姓名,職位及其部門名稱 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.列出在每個部門工作的員工數量、平均工資和平均服務期限 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.列出所有部門的詳細信息和部門人數 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.列出各個部門的MANAGER(經理)的最低薪金 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.查出某個員工的上級主管,并要求出這些主管中的薪水超過3000 select a.ename,b.ename,b.sal “boss sal” from emp a,emp b where a.mgr=b.empno and b.sal>=3000; 《網絡數據庫》講稿 查詢練習題 簡單的單表查詢 例1:檢索出1983年6月1日之后出生的學生的姓名、性別和民族,并按降序排列。 SELECT 姓名,性別,民族 FROM 學生 WHERE 出生日期>'1983-6-1' ORDER BY 出生日期 DESC 多表查詢 在FROM后跟隨多個表。 例1:查找出已修學分達到20分的學生的姓名、出生日期、班級名稱、已修學分。 SELECT 姓名,出生日期,班級名稱,已修學分FROM 學生,班級WHERE 學生.班級編號=班級.班級編號AND 已修學分>=20 解釋:這里的“學生.班級編號=班級.班級編號”是連接條件。如果在FROM短語中有兩個表,那么這兩個表必須具備可建立聯系的字段,否則無法查詢。如果FROM短語中的多個表中有同名字段,當使用這些字段名時,需要在字段名左邊加上表名和圓點,作為字段名的前綴。 練習題01:查找出已修學分低于20分的學生的姓名、性別和班主任。練習題02:查找出學生“王林”的班主任。 練習題03:查找出班主任“劉成河”班的全部男生的信息。 例2:查找出課程“中國歷史”考試及格的全部學生的學號、姓名。 SELECT 學生.學號,姓名 FROM 學生,課程,成績 WHERE 分數>=60 AND 課程名稱='中國歷史' AND 學生.學號=成績.學號 AND 成績.課程編號=課程.課程編號 練習題04:查找出課程“中國歷史”考試及格的全部學生的學號、姓名、班級名稱和分數。練習題05:查找出全部同學的所有考試的姓名、課程名稱、分數,查找結果的格式如下: 嵌套查詢 P121-126 例1:查找出取得過95分及其以上考試成績的學生的學號和姓名。 SELECT 學號,姓名 FROM 學生 WHERE 學號IN(SELECT 學號 FROM 成績 WHERE 分數>=95) 解釋:該命令中的IN相當于集合運算的包含運算符∈。括號外的查詢稱為外層查詢;括號內的查詢稱為內層查詢(也稱為“子查詢”)。內層查詢的結果被當做是一個集合。 P104 例2:查找出“計算機應用”課程考試取得95分及其以上考試成績的學生的學號和姓名。 SELECT 學號,姓名 FROM 學生 WHERE 學號 IN(SELECT 學號 FROM 成績 WHERE 分數>=95 AND 課程編號 IN(SELECT 課程編號 FROM 課程 WHERE 課程名稱='計算機應用')) 例3:查找出所有學生的考試都及格的班級名稱。 答案一: SELECT 班級名稱 FROM 班級 WHERE 班級編號 NOT IN(SELECT 班級編號 FROM 學生 WHERE 學號 IN(SELECT 學號 FROM 成績 WHERE 分數<60)) 答案二: select 班級名稱 from 班級 where not exists(select * from 學生 where exists(select * from 成績 where 分數<60 and 班級.班級編號=學生.班級編號 and 成績.學號=學生.學號)) 答案三: select 班級名稱 from 班級 where not exists(select * from 成績,學生 where 班級.班級編號=學生.班級編號 and 學生.學號=成績.學號 and 分數<60) 練習題01:查找出班主任“劉成河”班的全部男生的信息。練習題02:查找出考試全及格的課程名稱。 練習題03:查找出所有學生的考試都及格的班級,并排除那些沒有學生的班級。練習題04:使用多表查詢實現例1。練習題05:使用多表查詢實現例2。 練習題06:查找出“數學專業”班全體同學的姓名和“數學”課程考試分數。 三個特殊運算符 一、謂詞EXISTS P122 EXISTS判斷子查詢中是否為空集。 例1:查找出那些還沒有學生的班級名稱。 SELECT 班級名稱 FROM 班級 WHERE NOT EXISTS (SELECT * FROM 學生 WHERE 學生.班級編號=班級.班級編號) 例2:檢索出每個學生都選修了的課程(并且考試都及格)。 SELECT 課程編號,課程名稱 FROM 課程 WHERE NOT EXISTS(SELECT 學號 FROM 學生 WHERE NOT EXISTS(SELECT * FROM 成績 WHERE 課程.課程編號=成績.課程編號AND 學生.學號=成績.學號AND 分數>=60)) 練習題01:寫出可實現例1要求的其他命令。練習題02:寫出可實現例2要求的其他命令。 二、范圍運算符BETWEEN …AND… P103 該范圍是一個閉區間,意思是在 …和… 之間,包括兩個端點的值。 例3:查找出1983年6月1日至1984年6月1日之間出生的學生的信息。 SELECT * FROM 學生 WHERE 出生日期 BETWEEN '1983-6-1' AND '1984-6-1' 練習題03:查找出已修學分在15和20之間的學生的信息。 練習題04:查找出1983年6月1日至1984年6月1日之間出生的少數民族學生的信息。 練習題05:查找出已修學分在15和20之間、且“自然辨證法”課程的考試分數達到80分的學生的姓名、性別、所在班級。 三、字符串匹配運算符LIKE P105 例4:查找出姓名中包含有“林”的學生的信息。SELECT * FROM 學生WHERE 姓名LIKE '%林%' 例5:查找出姓名中第二個字是“林”的學生的信息。SELECT * FROM 學生WHERE 姓名LIKE '_林%' 練習題06:查找出湖北出生的學生的信息。練習題07:查找出武漢出生的學生的信息。 練習題08:查找出班主任“郭大壯”的班中出生地是武漢的學生的姓名、班級。 練習題09:查找出至少參加了辛有余老師所任課程中一門課程考試的男生的姓名。至少寫出兩條不同的命令。 聚合函數及其分組查詢 為了完成后續題目,請首先計算出每位同學的已修學分 UPDATE 學生 SET 已修學分=(SELECT SUM(學分)FROM 成績,課程 WHERE 學生.學號=成績.學號AND 分數>=60 AND 成績.課程編號=課程.課程編號) 一、常用統計(聚合)函數 P109表4-3 例1:計算出全部學生的平均已修學分。SELECT AVG(已修學分)FROM 學生 例2:計算出“軟件工程”班全體同學的平均已修學分。 SELECT AVG(已修學分)FROM 學生 WHERE 班級編號IN(SELECT 班級編號FROM 班級WHERE 班級名稱='軟件工程') 練習題01:計算出“軟件工程”和“計算機應用”兩個班全體同學的平均已修學分。 注意:當子查詢的結果只有一個數據時,可以用等號;為多個數據時,需用 IN。練習題02:計算出李建同學各門課程考試總分。 例3:查找出“數學專業”班“數學”課程考試的最高分數。 SELECT MAX(分數)FROM 學生, 成績 WHERE 學生.學號=成績.學號 AND 班級編號=(SELECT 班級編號 FROM 班級 WHERE 班級名稱='數學專業')AND 課程編號=(SELECT 課程編號 FROM 課程 WHERE 課程名稱='數學') 另一個答案 SELECT MAX(分數)FROM 成績 WHERE 學號 IN(SELECT 學號 FROM 學生 WHERE 班級編號=(SELECT 班級編號 FROM 班級 WHERE 班級名稱='數學專業'))AND 課程編號=(SELECT 課程編號 FROM 課程 WHERE 課程名稱='數學') 例4:查找出“數學專業”班“數學”課程考試最高得分的同學姓名和分數。 SELECT 姓名, 分數 FROM 學生, 成績 WHERE 學生.學號=成績.學號 AND 班級編號=(SELECT 班級編號 FROM 班級 WHERE 班級名稱='數學專業')AND 課程編號=(SELECT 課程編號 FROM 課程 WHERE 課程名稱='數學')AND 分數=(SELECT MAX(分數)FROM 學生, 成績 WHERE 學生.學號=成績.學號 AND 班級編號=(SELECT 班級編號 FROM 班級 WHERE 班級名稱='數學專業')AND 課程編號=(SELECT 課程編號FROM 課程 WHERE 課程名稱='數學')) 附:TOP … PERCENT P98 二、GROUP BY短語 GROUP BY后面跟隨的是分組關鍵字段,按照關鍵字段的值,將記錄分成若干個組,每一組轉變為查詢結果中的一行。 例5:計算出各班學生的平均已修學分。SELECT 班級編號,AVG(已修學分)FROM 學生 GROUP BY 班級編號 練習題04:計算出各門課程考試的平均分數。練習題05:計算出各位學生的考試總分。 練習題06:計算出辛有余老師所任課程中每門課程的課程編號和學生平均考試分數。 三、別名及其應用 P113-114, P99 例6:查找出已修學分低于本班平均已修學分的學生信息。 SELECT 姓名, 班級編號, 已修學分 FROM 學生 WHERE 已修學分<(SELECT AVG(已修學分)FROM 學生 XS WHERE 學生.班級編號=XS.班級編號) 說明:在FROM短語中為表取別名也可省略AS,例如FROM 學生 XS。 例7:查找和計算出各位學生的姓名和考試總分。 SELECT 姓名, 總分 FROM 學生,(SELECT 學號, SUM(分數)AS 總分 FROM 成績 GROUP BY 學號)AS ZF WHERE 學生.學號=ZF.學號 說明:在FROM短語中可用子查詢的結果作為表,此時,必須為該子查詢取別名。 在SELECT短語中可為查詢結果列取別名,其格式有三種,見P99。 練習題07:查找和計算出各門課程的名稱及其考試的平均分數。 練習題08:查找和計算出各門課程的名稱及其考試達到90分的人數。 四、HAVING短語 HAVING后面跟隨的是篩選條件,作用是篩選滿足條件的組,即在分組之后過濾數據,條件中經常包含統計(聚合)函數。 例8:查找出講授多門課程的教師姓名及其授課門數。 SELECT 任課教師,COUNT(*)AS 授課門數 FROM 課程 GROUP BY 任課教師 HAVING COUNT(*)>1 說明:HAVING短語通常與GROUP BY短語配合使用,否則無使用價值。HAVING短語中使用的統計函數應該是SELECT短語中使用的函數。 練習題10:查找出考試成績優秀人數多于3人的課程編號及其學生人數(假定考試分數達到90分為優秀)。練習題11:查找出考試成績優秀人數多于3人的課程名稱及其學生人數(假定考試分數達到90分為優秀)。練習題12:查找出考試成績優秀人次多于5人次的班級名稱及其人次(假定考試分數達到90分為優秀)。 練習題13:查找出考試分數標準差小于 10、且最高分與最低分之差小于20的各班(班級名稱)各門課程(課程名稱)的考試人數,考試分數的最高分、最低分、平均分、標準差、方差。 常用函數、連接 一、常用函數 P159 二、鏈接 P114 用于多表查詢,實現表之間的鏈接。 例6:在多表查詢中,下面的命令可查找出已修學分達到17分的學生的姓名、出生日期和班級:SELECT 姓名,出生日期,班級名稱 FROM 學生,班級 WHERE 學生.班級編號=班級.班級編號 AND 已修學分>=17 用INNER JOIN … ON …,可將該命令改寫為: SELECT 姓名,出生日期,班級名稱 FROM 學生 INNER JOIN 班級 ON 學生.班級編號=班級.班級編號 WHERE 已修學分>=17 或 SELECT 姓名,出生日期,班級名稱 FROM 學生 INNER JOIN 班級 ON 學生.班級編號=班級.班級編號 AND 已修學分>=17 解釋:這里的“學生.班級編號=班級.班級編號”是連接條件。如果在FROM短語中有兩個表,那么這兩個表必須具備可建立聯系的字段,否則無法查詢。如果FROM短語中的多個表中有同名字段,當使用這些字段名時,需要在字段名左邊加上表名和圓點,作為字段名的前綴。 練習題01:查找出已修學分低于17分的學生的姓名、性別和班主任。練習題02:查找出學生“王林”的班主任。 練習題03:查找出班主任“劉成河”班的全部男生的信息。 例7:在多表查詢中,下面的命令可查找出課程“中國歷史”考試及格的全部學生的學號、姓名:SELECT 學生.學號,姓名 FROM 學生,課程,成績 WHERE 分數>=60 AND 課程名稱=“中國歷史” AND 學生.學號=成績.學號 AND 成績.課程編號=課程.課程編號 用INNER JOIN … ON …,可將該命令改寫為: SELECT 學生.學號,姓名 FROM 學生 INNER JOIN(成績 INNER JOIN 課程 ON 成績.課程編號=課程.課程編號)ON 學生.學號=成績.學號 WHERE 分數>=60 AND 課程名稱=“中國歷史” 練習題04:查找出課程“中國歷史”考試及格的全部學生的學號、姓名、班級和分數。練習題05:查找出全部同學的所有考試的姓名、課程名稱、分數。查找結果的格式如下: 練習題06:計算出每個同學實際取得的學分(不是學生表中的已修學分)。查找結果的格式如下: 操作查詢 一、生成表查詢 P136 例1: SELECT 姓名, 出生日期, 班級名稱 INTO XYZ FROM 學生, 班級 WHERE 學生.班級編號=班級.班級編號 AND 已修學分>=17 例2: SELECT 班級名稱, 課程名稱, 分數 INTO 考試分數 FROM 課程 INNER JOIN((班級 INNER JOIN 學生 ON 班級.班級編號 = 學生.班級編號)INNER JOIN 成績 ON 學生.學號 = 成績.學號)ON 課程.課程編號 = 成績.課程編號 二、更新查詢 P137 例3:將每位同學的已修學分設置為0。 UPDATE 學生 SET 已修學分=0 將每位同學的已修學分設置為4。UPDATE 學生 SET 已修學分=4 省略WHERE短語,表示無條件修改全部記錄。例4:為每個女生增加2學分。 UPDATE 學生 SET 已修學分=已修學分+2 WHERE 性別= “女” 練習題01:(綜合練習)首先為“學生”表添加一個整型字段“年齡”,然后用UPDATE命令計算出每位同學的年齡并填入“年齡”字段。 例5:根據考試成績,計算出每位同學的實際已修學分,并填入“學生”表的“已修學分”字段。 UPDATE 學生 SET 已修學分=(SELECT SUM(學分)FROM 成績,課程 WHERE 學生.學號=成績.學號AND 分數>=60 AND 成績.課程編號=課程.課程編號) 練習題02:根據“學生”表,計算出每班的男生人數和女生人數,并填入“班級”表中。 三、追加查詢 P134 四、刪除查詢 P141 例6:刪除XS表中已修學分低于4分的記錄。 DELETE FROM XS WHERE 已修學分<4 例7:刪除沒有學生的班級。 DELETE FROM 班級 WHERE 班級編號 NOT IN(SELECT 班級編號 FROM 學生 WHERE 班級編號 IS NOT NULL) 練習題03:刪除沒有參加過任何考試的學生。 練習題04:刪除考試平均分數低于本班所有學生全部考試平均分數的同學。 考點7:查詢 1.若在“tEmployee”表中查找所有出生日期在“1970-1-1”和“1980-1-1”之間的記錄,可以在查詢設計視圖的準則行中輸入()。答案: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.下面顯示的是查詢設計視圖,從設計視圖所示的內容中判斷此查詢將顯示()。答案:B A)出生日期字段值 B)所有字段值 C)除出生日期以外的所有字段值 D)雇員ID字段值 3.在SQL查詢中“GROUP BY”的含義是()。答案:D A)選擇行條件 B)對查詢進行排序 C)選擇列字段 D)對查詢進行分組 4.若要將“產品”表中所有供貨商是“ABC”的產品單價下調50,則正確的SQL語句是()。答案:B A)UPDATE 產品 SET 單價=50 WHERE 供貨商=“ABC” B)UPDATE 產品 SET 單價=單價-50 WHERE 供貨商=“ABC” C)UPDATE FROM 產品 SET 單價=50 WHERE 供貨商=“ABC” D)UPDATE FROM 產品 SET 單價=單價-50 WHERE 供貨商=“ABC” 5.下面不是操作查詢的是()。答案:C A)刪除查詢 B)更新查詢 C)參數查詢 D)生成表查詢 6.在SQL語言的SELECT語句中,用于實現選擇運算的子句是()。答案:D A)FOR B)IF C)WHILE D)WHERE 7.在SQL查詢中,若要取得“學生”數據表中的所有記錄和字段,其SQL語法為()。答案:B A)SELECT 姓名 FROM 學生 B)SELECT * FROM 學生 C)SELECT 姓名 FROM 學生 WHILE 學號=02650 D)SELECT * FROM 學生 WHILE 學號=02650 8.假設某數據表中有一個工作時間字段,查找1999年參加工作的職工記錄的準則是()。答案: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)結構化查詢語言 B)數據定義語言 C)數據庫查詢語言 D)數據庫操縱與控制語言 10.在Access中已建立了“學生”表,表中有“學號”、“姓名”、“性別”和“入學成績”等字段。執行如下SQL命令“Select 性別, avg(入學成績)From 學生 Group by 性別”其結果是()。答案:B A)計算并顯示所有學生的性別和入學成績的平均值 B)按性別分組計算并顯示性別和入學成績的平均值 C)計算并顯示所有學生的入學成績的平均值 D)按性別分組計算并顯示所有學生的入學成績的平均值 11.假設“公司”表中有編號、名稱、法人等字段,查找公司名稱中有“網絡”二字的公司信息,正確的命令是()。答案:D A)SELECT * FROM 公司 FOR 名稱= “*網絡*” B)SELECT * FROM 公司 FOR 名稱 LIKE “*網絡*” C)SELECT * FROM 公司 WHERE 名稱= “*網絡*” D)SELECT * FROM 公司 WHERE 名稱 LIKE “*網絡*” 12.下圖是使用查詢設計器完成的查詢,與該查詢等價的SQL語句是()。 答案:A A)select 學號,數學 from sc where 數學>(select avg(數學)from sc) B)select 學號 where 數學>(select avg(數學)from sc) C)select 數學 avg(數學)from sc D)select 數學>(select avg(數學)from sc) 13.在查詢設計視圖中()。答案:A A)可以添加數據庫表,也可以添加查詢 B)只能添加數據庫表 C)只能添加查詢 D)數據庫表和查詢都不能添加 14.檢索價格在30萬~60萬元的產品,可以設置條件為()。答案:C A)“>30 Not <60” B)“>30 Or <60” C)“>30 And <60” D)“>30 Like <60” 15.下列關于SQL語句的說法中,錯誤的是()。答案:D A)INSERT語句可以向數據表中追加新的數據記錄 B)UPDATE語句用來修改數據表中已經存在的數據記錄 C)DELETE語句用來刪除數據表中的記錄 D)CREATE語句用來建立表結構并追加新的記錄 16.下列不屬于操作查詢的是()。答案:A A)參數查詢 B)生成表查詢 C)更新查詢 D)刪除查詢 17.在Access數據庫中創建一個新表,應該使用的SQL語句是()。答案:A A)Create Table B)Create Index C)Alter Table D)Create Database 18.下面顯示的是查詢設計視圖的“設計網格”部分:從所顯示的內容中可以判斷出該查詢要查找的是()。答案:A A)性別為“女”并且1980年以前參加工作的記錄 B)性別為“女”并且1980年以后參加工作的記錄 C)性別為“女”或者1980年以前參加工作的記錄 D)性別為“女”或者1980年以后參加工作的記錄 19.在一個操作中可以更改多條記錄的查詢是()。答案:B A)參數查詢 B)操作查詢 C)SQL查詢 D)選擇查詢 20.直接將命令發送ODBC數據,它使用服務器能接受的命令,利用它可以檢索或更改記錄的是()。答案:B A)聯合查詢 B)傳遞查詢 C)數據定義查詢 D)子查詢 21.要求按學生學號統計出每名學生的借閱次數,下列SQL語句中,正確的是()。答案:B A)Select 學號,Count(學號)from 借閱 B)Select 學號,Count(學號)from 借閱 Group By 學號 C)Select 學號,Sum(學號)from 借閱 D)Select 學號,Sum(學號)from 借閱 Order By 學號 22.在一個Access的表中有字段“專業”,要查找包含“信息”兩個字的記錄,正確的條件表達式是()。答案:B A)=left([專業],2)=“信息” B)like “*信息*” C)=“信息*” D)Mid([專業],1,2)=“信息” 23.Access支持的查詢類型有()。答案:A A)選擇查詢、交叉表查詢、參數查詢、SQL查詢和操作查詢 B)基本查詢、選擇查詢、參數查詢、SQL查詢和操作查詢 C)多表查詢、單表查詢、交叉表查詢、參數查詢和操作查詢 D)選擇查詢、統計查詢、參數查詢、SQL查詢和操作查詢 24.要從數據庫中刪除一個表,應該使用的SQL語句是()。答案:D A)ALTER TABLE B)KILL TABLE C)DELETE TABLE D)DROP TABLE 25.在Access中已建立了“教師”表,表中有“教師編號”、“職稱”、“性別”和“年齡”等字段。執行如下SQL命令:SELECT Count(“教師編號”)AS 各類職稱人數 FROM 教師 GROUP BY 職稱其結果是()。答案:B A)計算并顯示各類職稱人數的職稱和教師編號 B)按職稱分組,并計算教師編號的個數以各類職稱人數顯示 C)計算所有教師編號的個數,以各類職稱人數顯示 D)按各類職稱人數分組計算并顯示教師編號的個數和職稱 26.在SELECT語句中使用ORDER BY子句是為了指定()。答案:B A)查詢的表 B)查詢的結果順序 C)查詢的條件 D)查詢的字段 27.若要查詢成績為70~80分之間(包括70分,不包括80分)的學生的信息,查詢準則設置正確的是()。答案:C A)>69 or <80 B)Between 70 with 80 C)>=70 and <80 D)IN(70,79) 28.對“將信息系1999年以前參加工作的教師的職稱改為副教授”,合適的查詢為()。答案:B A)生成表查詢 B)更新查詢 C)刪除查詢 D)追加查詢 29.下圖是簡單查詢向導:其中按鈕和按鈕分別代表的意思是()。答案:A A)單擊按鈕一次選擇一個字段,單擊按鈕一次選擇全部字段 B)單擊按鈕一次選擇一個字段,單擊按鈕一次選擇全部字段 C)兩者的作用相同,都是選擇一個字段 D)以上說法均錯誤 30.下面對查詢功能的敘述中正確的是()。答案:C A)在查詢中,選擇查詢可以只選擇表中的部分字段,通過選擇一個表中的不同字段生成同一個表 B)在查詢中,編輯記錄主要包括添加記錄、修改記錄、刪除記錄和導入、導出記錄 C)在查詢中,查詢不僅可以找到滿足條件的記錄,而且還可以在建立查詢的過程中進行各種統計計算 D)以上說法均不對 31.與SELECT TAB1.* FROM TAB1 WHERE InStr([簡歷],“籃球”)<>0功能相同的語句是()。答案:C A)SELECT TAB1.* FROM TAB1 WHERE TAB1.簡歷 Like “籃球” B)SELECT TAB1.* FROM TAB1 WHERE TAB1.簡歷 Like “*籃球” C)SELECT TAB1.* FROM TAB1 WHERE TAB1.簡歷 Like “*籃球*” D)SELECT TAB1.* FROM TAB1 WHERE TAB1.簡歷 Like “籃球*” 32.在Access 數據庫的表設計視圖中,不能進行的操作是()。答案:D A)修改字段類型 B)設置索引 C)增加字段 D)刪除記錄 33.關于準則 Like![北京,上海,廣州],以下滿足條件的是()。答案:D A)北京 B)上海 C)廣州 D)杭州 34.現有某查詢設計視圖(如下圖所示),該查詢要查找的是()。 答案:A A)身高在160以上的女性和所有的男性 B)身高在160以上的男性和所有的女性 C)身高在160以上的所有人或男性 D)身高在160以上的所有人 35.Access中,以下不屬于查詢操作方式的是()。答案:C A)選擇查詢 B)參數查詢 C)準則查詢 D)操作查詢 36.“A Or B”準則表達式表示的意思是()。答案:B A)表示查詢表中的記錄必須同時滿足Or兩端的準則A和B,才能進入查詢結果集 B)表示查詢表中的記錄只需滿足Or兩端的準則A和B中的一個,即可進入查詢結果集 C)表示查詢表中記錄的數據介于A、B之間的記錄才能進入查詢結果集 D)表示查詢表中的記錄當滿足Or兩端的準則A和B不相等時即進入查詢結果集 37.若在“tEmployee”表中查找所有姓“王”的記錄,可以在查詢設計視圖的準則行中輸入()。答案:B A)Like “王” B)Like “王*” C)=“王” D)=“王*” 38.在SQL查詢中使用WHERE子句指出的是()。答案:D A)查詢目標 B)查詢結果 C)查詢視圖 D)查詢條件 39.將表A的記錄復制到表B中,且不刪除表B中的記錄,可以使用的查詢是()。答案:C A)刪除查詢 B)生成表查詢 C)追加查詢 D)交叉表查詢 40.要將“90分以上學生情況”表中所有記錄和“學生成績查詢”中80分以下的記錄,顯示內容為“學生編號”、“姓名”、“成績”3個字段。正確的表達式是()。答案:C A)SELECT學生編號,姓名,成績FROM學生成績查詢 WHERE 成績<80 JOIN SELECT學生編號,姓名,成績FROM 90分以上學生情況 B)SELECT學生編號,姓名,成績FROM學生成績查詢 WHERE 成績<80 UNION SELECT學生編號,成績,姓名FROM 90分以上學生情況 C)SELECT學生編號,姓名,成績FROM學生成績查詢 WHERE 成績<80 NUION SELECT學生編號,姓名,成績FROM 90分以上學生情況 D)SELECT學生編號,姓名,成績FROM學生成績查詢 WHERE 成績<80 NUION SELECT學生編號,成績FROM 90分以上學生情況 41.假設已在Access中建立了包含“書名”、“單價”和“數量”3個字段的“tOfg”表。以該表為數據源創建的窗體中,有一個計算訂購總金額的文本框,其控件來源為()。答案:B A)[單價]*[數量] B)=[單價]*[數量] C)[圖書訂單表]![單價]*[圖書訂單表]![數量] D)=[圖書訂單表]![單價]*[圖書訂單表]![數量] 查詢Oracle正在執行和執行過的SQL語句 --正在執行的select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT from v$session a, v$sqlarea bwhere a.sql_address = b.address ---執行過的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 (此方法好處可以查看某一時間段執行過的sql,并且 SQL_FULLTEXT 包含了完整的 sql 語句)其他 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較大的正在運行的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第三篇:查詢練習題
第四篇:access查詢練習題
第五篇:查詢Oracle正在執行和執行過的SQL語句