另一套Oracle SQL练习题

题干:

 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       李四
时间: 2024-10-12 21:32:20

另一套Oracle SQL练习题的相关文章

Oracle SQL部分练习题

SQL练习题 注:查询列表不建议用 “*” 1.列出至少有一个雇员的所有部门: a. select * from dept where deptno in(select distinct deptno from emp); b. (oracle11gCBO 新特性 in(多个值)会智能过滤掉重复字段,通过执行计划验证): select * from dept where deptno in (select deptno from emp group by deptno having count(

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第1/5套:SQL语言之基础入门及环境准备.主要学习Oracle数据库SQL语言基础介绍.PL/SQL语言介绍.数据库SQL对象与数据类型介绍.SQL语言实战环境准备等. Oracle SQL语言之基础及环境准备,课程内容详细如下: Oracle数据库SQL语言基础介绍Oracle数据

Oracle SQL语言DDL和对象管理_超越OCP精通Oracle视频教程培训27

Oracle SQL语言DDL和对象管理_超越OCP精通Oracle视频教程培训27 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第2/5套:Oracle SQL语言DDL和对象管理.主要学习Oracle数据库模式对象和表中可用的数据类型,表/临时表的创建与使用,索引/约束的创建与管理,视图/同义词/序列的创建和使用,触发器/存储过程/包的创建和使用. Oracle SQL语言DDL和对象管理,课程内容详细如下

Oracle SQL语言DML语句与事务_超越OCP精通Oracle视频教程培训28

Oracle SQL语言DML语句与事务_超越OCP精通Oracle视频教程培训28 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第3/5套:Oracle SQL语言DML语句与事务.主要学习Oracle数据库SQL语句INSERT命令,学习使用UPDATE命令,学习使用DELETE命令,学习创建PL/SQL对象,事务概念与控制,锁的检测和锁争用,了解撤销数据. Oracle SQL语言DML语句与事务管理,课

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第4/5套:Oracle SQL语言之查询语句.主要学习Oracle数据库SQL查询限制排序.Oracle SQL联接查询.Oracle SQL子查询等. 视频学习地址: http://edu.51cto.com/course/course_id-8047.html Oracle SQL语

Oracle SQL语言之常用函数_超越OCP精通Oracle视频教程培训30

Oracle SQL语言之常用函数_超越OCP精通Oracle视频教程培训30 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第5/5套:Oracle SQL语言之常用函数.主要学习Oracle数据库SQL聚合函数,分组函数,字符函数,转换函数,日期字符数字转换,日期函数,集合函数,分析函数等. Oracle SQL语言之常用函数,课程内容详细如下: 聚合函数-数据统计 分组函数-使用group by与havin

经典SQL练习题

今天在网上找了几道经典的SQL练习题做了一下,虽然都不难,但是对打基础是很有好处的,在明白的基础上可以进一步做分析,来研究一下各种解法的优劣,甚至进行简单的优化..现在将题目和答案分享一下.我使用的是MYSQL 5.0,但是绝大部分都是标准SQL.表结构:CREATE TABLE STUDENT(SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL,SSEX VARCHAR(2) NOT NULL, SBIRTHDAY DATETIME,CLASS

(转)经典SQL练习题

今天在网上找了几道经典的SQL练习题做了一下,虽然都不难,但是对打基础是很有好处的,在明白的基础上可以进一步做分析,来研究一下各种解法的优劣,甚至进行简单的优化..现在将题目和答案分享一下.我使用的是MySQL 5.0,但是绝大部分都是标准SQL.表结构:CREATE TABLE STUDENT(SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL,SSEX VARCHAR(2) NOT NULL, SBIRTHDAY DATETIME,CLASS

oracle sql语句取得本周本月本年的数据

[sql] --国内从周一到周日 国外是周日到周六  select to_char(sysdate-1,'D') from dual;--取国内的星期几 去掉减一取国外的星期-- [sql] --取本周时间内的数据  select * from table  where DTIME >=trunc(next_day(sysdate-8,1)+1) and DTIME<=trunc(next_day(sysdate-8,1)+7)+1 ;     select * from table  whe