码迷,mamicode.com
首页 > 数据库 > 详细

另一套Oracle SQL练习题

时间:2015-11-04 17:34:32      阅读:523      评论:0      收藏:0      [点我收藏+]

标签:

题干:

 1 create table student(
 2 sno varchar2(10) primary key,
 3 sname varchar2(20),
 4 sage number(2),
 5 ssex varchar2(5)
 6 );
 7 create table teacher(
 8 tno varchar2(10) primary key,
 9 tname varchar2(20)
10 );
11 create table course(
12 cno varchar2(10),
13 cname varchar2(20),
14 tno varchar2(20),
15 constraint pk_course primary key (cno,tno)
16 );
17 create table sc(
18 sno varchar2(10),
19 cno varchar2(10),
20 score number(4,2),
21 constraint pk_sc primary key (sno,cno)
22 );
23 /*******初始化学生表的数据******/
24 insert into student values (s001,张三,23,);
25 insert into student values (s002,李四,23,);
26 insert into student values (s003,吴鹏,25,);
27 insert into student values (s004,琴沁,20,);
28 insert into student values (s005,王丽,20,);
29 insert into student values (s006,李波,21,);
30 insert into student values (s007,刘玉,21,);
31 insert into student values (s008,萧蓉,21,);
32 insert into student values (s009,陈萧晓,23,);
33 insert into student values (s010,陈美,22,);
34 commit;
35 /******************初始化教师表***********************/
36 insert into teacher values (t001, 刘阳);
37 insert into teacher values (t002, 谌燕);
38 insert into teacher values (t003, 胡明星);
39 commit;
40 /***************初始化课程表****************************/
41 insert into course values (c001,J2SE,t002);
42 insert into course values (c002,Java Web,t002);
43 insert into course values (c003,SSH,t001);
44 insert into course values (c004,Oracle,t001);
45 insert into course values (c005,SQL SERVER 2005,t003);
46 insert into course values (c006,C#,t003);
47 insert into course values (c007,JavaScript,t002);
48 insert into course values (c008,DIV+CSS,t001);
49 insert into course values (c009,PHP,t003);
50 insert into course values (c010,EJB3.0,t002);
51 commit;
52 /***************初始化成绩表***********************/
53 insert into sc values (s001,c001,78.9);
54 insert into sc values (s002,c001,80.9);
55 insert into sc values (s003,c001,81.9);
56 insert into sc values (s004,c001,60.9);
57 insert into sc values (s001,c002,82.9);
58 insert into sc values (s002,c002,72.9);
59 insert into sc values (s003,c002,81.9);
60 insert into sc values (s001,c003,59);
61 commit;

题目及解答

  1 SQL> --1、查询“c001”课程比“c002”课程成绩高的所有学生的学号;
  2 SQL> select a.sno from sc a, sc b where a.cno = c001 and b.cno = c002 and a.score > b.score and a.sno = b.sno;
  3 SNO
  4 ----------
  5 s002
  6 
  7 SQL> --2、查询平均成绩大于60 分的同学的学号和平均成绩;
  8 
  9 SQL> select sno, avg(score) from sc group by sno having avg(score) > 60;
 10 SNO        AVG(SCORE)
 11 ---------- ----------
 12 s003             81.9
 13 s004             60.9
 14 s001             73.6
 15 s002             76.9
 16 
 17 SQL> --3、查询所有同学的学号、姓名、选课数、总成绩;
 18 SQL> select s.sno, s.sname, count(cno), sum(score) from sc c, student s where c.sno = s.sno group by s.sno, s.sname;
 19 SNO        SNAME                COUNT(CNO) SUM(SCORE)
 20 ---------- -------------------- ---------- ----------
 21 s001       张三                          3      220.8
 22 s003       吴鹏                          2      163.8
 23 s004       琴沁                          1       60.9
 24 s002       李四                          2      153.8
 25 
 26 SQL> ----4、查询姓“刘”的老师的个数;
 27 SQL> select count(1) from teacher where tname like 刘% group by tname;
 28   COUNT(1)
 29 ----------
 30          1
 31 
 32 SQL> ----5、查询没学过“谌燕”老师课的同学的学号、姓名;
 33 SQL> select sno, sname from student where sno not in (select sno from  sc c, teacher t, course o where  c.cno = o.cno and o.tno = t.tno and t.tname = 谌燕);
 34 SNO        SNAME
 35 ---------- --------------------
 36 s005       王丽
 37 s006       李波
 38 s007       刘玉
 39 s008       萧蓉
 40 s009       陈萧晓
 41 s010       陈美
 42 6 rows selected
 43 
 44 SQL> --6、查询学过“c001”并且也学过编号“c002”课程的同学的学号、姓名
 45 SQL> select s.sno, s.sname from sc a, sc b, student s where a.cno = c001 and b.cno = c002 and s.sno =a.sno;
 46 SNO        SNAME
 47 ---------- --------------------
 48 s001       张三
 49 s001       张三
 50 s001       张三
 51 s002       李四
 52 s002       李四
 53 s002       李四
 54 s003       吴鹏
 55 s003       吴鹏
 56 s003       吴鹏
 57 s004       琴沁
 58 s004       琴沁
 59 s004       琴沁
 60 12 rows selected
 61 
 62 SQL> select * from sc a, sc b where a.cno = c001 and b.cno = c002;
 63 SNO        CNO         SCORE SNO        CNO         SCORE
 64 ---------- ---------- ------ ---------- ---------- ------
 65 s001       c001        78.90 s001       c002        82.90
 66 s002       c001        80.90 s001       c002        82.90
 67 s003       c001        81.90 s001       c002        82.90
 68 s004       c001        60.90 s001       c002        82.90
 69 s001       c001        78.90 s002       c002        72.90
 70 s002       c001        80.90 s002       c002        72.90
 71 s003       c001        81.90 s002       c002        72.90
 72 s004       c001        60.90 s002       c002        72.90
 73 s001       c001        78.90 s003       c002        81.90
 74 s002       c001        80.90 s003       c002        81.90
 75 s003       c001        81.90 s003       c002        81.90
 76 s004       c001        60.90 s003       c002        81.90
 77 12 rows selected
 78 
 79 SQL> select * from sc a, sc b where a.cno = c001 and b.cno = c002 and a.sno = b.sno;
 80 SNO        CNO         SCORE SNO        CNO         SCORE
 81 ---------- ---------- ------ ---------- ---------- ------
 82 s001       c001        78.90 s001       c002        82.90
 83 s002       c001        80.90 s002       c002        72.90
 84 s003       c001        81.90 s003       c002        81.90
 85 
 86 SQL> select s.sno, s.sname from sc a, sc b, student s where a.cno = c001 and b.cno = c002 and a.sno =b.sno and s.sno =a.sno;
 87 SNO        SNAME
 88 ---------- --------------------
 89 s001       张三
 90 s002       李四
 91 s003       吴鹏
 92 
 93 SQL> -- 7、查询学过“谌燕”老师所教的所有课的同学的学号、姓名;
 94 SQL> select o.cno from  teacher t, course o where o.tno = t.tno and t.tname = 谌燕;
 95 CNO
 96 ----------
 97 c001
 98 c002
 99 c007
100 c010
101 
102 SQL> select s.sno, s.sname from student s, teacher t, course o, sc c where o.tno = t.tno and s.sno = c.sno and c.cno = o.cno and t.tname = 谌燕;
103 SNO        SNAME
104 ---------- --------------------
105 s001       张三
106 s001       张三
107 s002       李四
108 s002       李四
109 s003       吴鹏
110 s003       吴鹏
111 s004       琴沁
112 7 rows selected
113 
114 SQL> -- 8、查询课程编号“c002”的成绩比课程编号“c001”课程低的所有同学的学号、姓名;
115 SQL> select s.sno, s.sname from student s, sc a, sc b where a.cno = c002 and b.cno = c001 and a.score < b.score and a.sno = b.sno
116   2  and s.sno = a.sno;
117 SNO        SNAME
118 ---------- --------------------
119 s002       李四
120 
121 SQL> -- 9、查询所有课程成绩小于60 分的同学的学号、姓名;
122 SQL> select s.sno, s.sname from student s, sc c where 
123   2  c.score < 60 and s.sno = c.sno;
124 SNO        SNAME
125 ---------- --------------------
126 s001       张三
127 
128 SQL> -- 10、查询没有学全所有课的同学的学号、姓名;
129 SQL> select s.sno, s.sname from student s, sc c where s.sno = c.sno
130   2  group by s.sno, s.sname having count (c.cno) < (select count(cno) from course);
131 SNO        SNAME
132 ---------- --------------------
133 s001       张三
134 s003       吴鹏
135 s004       琴沁
136 s002       李四
137 
138 SQL> -- 11、查询至少有一门课与学号为“s001”的同学所学相同的同学的学号和姓名;
139 SQL> select s.sno s.sname from student s, sc c where s.sno = c.sno
140   2  and c.cno in(select cno from sc where sno = s001);
141 select s.sno s.sname from student s, sc c where s.sno = c.sno
142 and c.cno in(select cno from sc where sno = s001)
143 ORA-00923: 未找到要求的 FROM 关键字
144 
145 SQL> select distinct(s.sno), s.sname from student s, sc c where s.sno = c.sno
146   2  and c.cno in(select cno from sc where sno = s001);
147 SNO        SNAME
148 ---------- --------------------
149 s001       张三
150 s001       张三
151 s001       张三
152 s002       李四
153 s002       李四
154 s003       吴鹏
155 s003       吴鹏
156 s004       琴沁
157 8 rows selected
158 
159 SQL> select distinct(s.sno), s.sname from student s, sc c where s.sno = c.sno
160   2  and c.cno in(select cno from sc where sno = s001);
161 SNO        SNAME
162 ---------- --------------------
163 s001       张三
164 s003       吴鹏
165 s004       琴沁
166 s002       李四
167 
168 SQL> -- 12、查询至少学过学号为“s001”同学所有一门课的其他同学学号和姓名;
169 SQL> select distinct(s.sno), s.sname from student s, sc c where s.sno = c.sno
170   2  and c.cno in(select cno from sc where sno = s001) and s.sno <> s001;
171 SNO        SNAME
172 ---------- --------------------
173 s003       吴鹏
174 s004       琴沁
175 s002       李四

 

另一套Oracle SQL练习题

标签:

原文地址:http://www.cnblogs.com/dirgo/p/4936406.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!