第一篇: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.查询和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'; SQL语句练习题 1、请从表EMP中查找工种是职员CLERK或经理MANAGER的雇员姓名、工资。select ename,sal from emp where job='CLERK' or job='MANAGER'; 2、请在EMP表中查找部门号在10-30之间的雇员的姓名、部门号、工资、工作。select ename,deptno,sal,job from emp where deptno between 10 and 30; 3、请从表EMP中查找姓名以J开头所有雇员的姓名、工资、职位。 select ename,sal,job from emp where ename like 'J%'; 4、请从表EMP中查找工资低于2000的雇员的姓名、工作、工资,并按工资降序排列。select ename,job,sal from emp where sal<=2000 order by sal desc; 5、请从表中查询工作是CLERK的所有人的姓名、工资、部门号、部门名称以及部门地址的信息。 select ename,sal,emp.deptno,dname,loc from emp,dept where emp.deptno=dept.deptno andjob=’CLERK’; 6、查询表EMP中所有的工资大于等于2000的雇员姓名和他的经理的名字。select a.ename,b.ename from emp a,emp b where a.mgr=b.empno(+)and a.sal>=2000; 7、查询所有雇员的姓名、SAL与COMM之和。 select ename,sal+nvl(comm,0)“sal-and-comm” from emp; 8、查询所有81年7月1日以前来的员工姓名、工资、所属部门的名字 select ename,sal,dname from emp,dept where emp.deptno=dept.deptno hiredate<=to_date(‘1981-07-01’,’yyyy-mm-dd’); 9、查询列出来公司就职时间超过24年的员工名单 select ename from emp where hiredate<=add_months(sysdate,-288); 10、查询于81年来公司所有员工的总收入(SAL和COMM) select sum(sal+nvl(comm,0))from emp where to_char(hiredate,’yyyy’)=’1981’; 11、查询显示每个雇员加入公司的准确时间,按××××年××月××日 时分秒显示。select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss')from emp; 12、查询列出各部门的部门名和部门经理名字 select dname,ename from emp,dept where emp.deptno=dept.deptno and job=’MANAGER’; and 笛卡尔积 部门表 笛卡尔积产生结果: 行数 两个表相乘 列数: 行数相加 原因 条件等值连接 select **** from tab1, tab2 where tab1.a = tab2.a select count(e.ename) from emp e, dept d 3* where e.deptno = d.deptno SQL> / COUNT(E.ENAME) -------------- 多表查询关键点: 等值连接 eg:查询员工信息,员工号,姓名,月薪,部门名称 select e.empno, e.ename, e.sal, d.dname from emp e, dept d 3* where e.deptno = d.deptno SQL> / EMPNO ENAME SAL DNAME -------------------------------------------- 7369 SMITH 800 RESEARCH 7499 ALLEN 1600 SALES 7521 WARD 1250 SALES 7566 JONES 2975 RESEARCH 7654 MARTIN 1250 SALES 7698 BLAKE 2850 SALES 7782 CLARK 2450 ACCOUNTING 7788 SCOTT 3000 RESEARCH 7839 KING 5000 ACCOUNTING 7844 TURNER 1500 SALES 7876 ADAMS 1100 RESEARCH 7900 JAMES 950 SALES 7902 FORD 3000 RESEARCH 7934 MILLER 1300 ACCOUNTING 已选择14行。 不等值连接: eg:查询员工信息,员工号,姓名,月薪, 薪水级别 select e.empno, e.ename, e.sal, s.grade from emp e, salgrade s where e.sal >= s.losal and e.sal <=s.hisal select e.empno, e.ename, e.sal, s.grade from emp e, salgrade s where e.sal between s.losal and s.hisal 外连接 eg:按部门统计员工人数: 部门号 部门名称 各部门人数 分析1: 10 20 30 ====> 分组 分析2: 因为各部门人数 是在员工表中..多表查询 步骤1 select d.deptno, d.dname, count(e.empno) from dept d, emp e where d.deptno = e.deptno group by d.deptno, d.dname DEPTNO DNAME COUNT(E.EMPNO) ------------------------------------- ACCOUNTING 3 RESEARCH 5 SALES 6 步骤2 外连接....分析:为什么40号部门没有统计出来 原因: 因员工表里面 没有40号部门的员工(现象) where d.deptno = e.deptno(sql)问题的本质 40 =====>期望: 在连接条件不成立的条件下,也要把部门编号40 给显示出来....外连接...select d.deptno, d.dname, count(e.empno) from dept d, emp e where d.deptno = e.deptno(+) group by d.deptno, d.dname 左外连接:(+)写在=号的右边 自连接:--查询员工信息 ,老板信息 显示: ****的老板是**** 自连接: 把一张表看成两张表,自连接 --员工表的老板 是 老板表的员工 select e.ename, b.ename from emp e, emp b where e.mgr = b.empno select e.ename|| '的老板是' || b.ename from emp e, emp b where e.mgr = b.empno ====> 需求 把员工表的每一条记录都显示出来 select e.ename|| '的老板是' || b.ename from emp e, emp b where e.mgr = b.empno(+) select e.ename|| '的老板是' || nvl(b.ename, '他自己') from emp e, emp b where e.mgr = b.empno(+) SMITH的老板是FORD MPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO----------------------------------------------------------------------------7369 SMITH CLERK 7902 17-12月-80 800 20 7499 ALLEN SALESMAN 7698 20-2月-81 1600 300 30 7521 WARD SALESMAN 7698 22-2月-81 1250 500 30 7566 JONES MANAGER 7839 02-4月-81 2975 20 7654 MARTIN SALESMAN 7698 28-9月-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-5月-81 2850 30 7782 CLARK MANAGER 7839 09-6月-81 2450 10 7788 SCOTT ANALYST 7566 19-4月-87 3000 20 7839 KING PRESIDENT 17-11月-81 5000 10 7844 TURNER SALESMAN 7698 08-9月-81 1500 0 30 7876 ADAMS CLERK 7788 23-5月-87 1100 20 7900 JAMES CLERK 7698 03-12月-81 950 30 7902 FORD ANALYST 7566 03-12月-81 3000 20 7934 MILLER CLERK 7782 23-1月-82 1300 10 14行。 《网络数据库》讲稿 查询练习题 简单的单表查询 例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:删除考试平均分数低于本班所有学生全部考试平均分数的同学。第二篇:Oracle基础练习题及答案(子查询)
第三篇:SQL语句练习题(包含有多表查询)-答案
第四篇:黑马程序员c语言教程:多表查询
第五篇:查询练习题