1、题目要求

已知关系模式:
S (SNO,SNAME)学生关系。SNO 为学号,SNAME 为姓名
C (CNO,CNAME,CTEACHER)课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师
SC(SNO,CNO,SCGRADE) 选课关系。SCGRADE 为成绩

  • 1.找出没有选修过“刘备”老师讲授课程的所有学生姓名
  • 2.列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
  • 3.列出既学过“c001”号课程,又学过“c002”号课程的所有学生姓名
  • 4.列出“c001”号课成绩比“s002”号同学该门课成绩高的所有学生的学号
  • 5.列出“c001”号课成绩比“c002”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩

2、建表语句

create table C
(
  cno      ),
  cname    ),
  cteacher )
)
;
comment on column C.cno
  is '课程号';
comment on column C.cname
  is '课程名';
comment on column C.cteacher
  is '任课教师';

create table S
(
  sno   ),
  sname )
)
;
comment on column S.sno
  is '学号';
comment on column S.sname
  is '姓名';

create table SC
(
  sno     ),
  cno     ),
  scgrade )
)
;
comment on column SC.scgrade
  is '成绩';

insert into C (cno, cname, cteacher)
values ('c001', '语文', '刘备');
insert into C (cno, cname, cteacher)
values ('c002', '数学', '关于');
insert into C (cno, cname, cteacher)
values ('c003', '英语', '张飞');
commit;

insert into S (sno, sname)
values ('s001', '小红');
insert into S (sno, sname)
values ('s002', '小明');
insert into S (sno, sname)
values ('s003', '小庄');
commit;

insert into SC (sno, cno, scgrade)
');
insert into SC (sno, cno, scgrade)
');
insert into SC (sno, cno, scgrade)
');
insert into SC (sno, cno, scgrade)
');
insert into SC (sno, cno, scgrade)
');
insert into SC (sno, cno, scgrade)
');
insert into SC (sno, cno, scgrade)
');
insert into SC (sno, cno, scgrade)
');
commit;

3、参考答案

--1.找出没有选修过“刘备”老师讲授课程的所有学生姓名
select sname
  from s
 where not exists (select *
          from sc, c
         where sc.cno = c.cno
           and c.cteacher = '刘备'
           and sc.sno = s.sno)

--2.列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
select s.sno, s.sname, Avg(sc.scgrade)
  from sc,
       s,
       (select sc.sno
          from sc

         group by sno
        ) A
 where sc.sno = A.sno
   and s.sno = A.sno
 group by s.sno, s.sname

--3.列出既学过“c001”号课程,又学过“c002”号课程的所有学生姓名
select *
  from s,
       (select sc.sno
          from sc, c
         where sc.cno = c.cno
           and c.cno in ('c001', 'c002')
         group by sc.sno
        ) A
 where s.sno = A.sno

--4.列出“c001”号课成绩比“s002”号同学该门课成绩高的所有学生的学号
select s.sno
  from s, sc sc1, sc sc2
 where sc1.cno = 'c001'
   and sc2.sno = 's002'
   and s.sno = sc1.sno
   and sc1.cno = sc2.cno
   and sc1.scgrade > sc2.scgrade

--5.列出“c001”号课成绩比“c002”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩
select sc1.sno, sc1.scgrade, sc2.scgrade
  from sc sc1, sc sc2
 where sc1.cno = 'c001'
   and sc2.cno = 'c002'
   and sc1.sno = sc2.sno
   and sc1.scgrade > sc2.scgrade

oracle面试题1的更多相关文章

  1. oracle 笔试题

    ORACLE笔试题一.单选题1.在Oracle中,以下不属于集合操作符的是( ). A. UNION B. SUM C. MINUS D. INTERSECT2.在Oracle中,执行下面的语句:SE ...

  2. 部分常见ORACLE面试题以及SQL注意事项

    部分常见ORACLE面试题以及SQL注意事项 一.表的创建: 一个通过单列外键联系起父表和子表的简单例子如下: CREATE TABLE parent(id INT NOT NULL, PRIMARY ...

  3. Oracle笔试题库 附参考答案

    1.  下列不属于ORACLE的逻辑结构的是(C) 区 段 数据文件 表空间 2. 下面哪个用户不是ORACLE缺省安装后就存在的用户(A) A . SYSDBA B. SYSTEM C. SCOTT ...

  4. 转://云和恩墨的两道Oracle面试题

    真题1. 对于一个NUMBER(1)的列,如果查询中的WHERE条件分别是大于3和大于等于4,那么这二者是否等价? 答案:首先对于查询结果而言,二者没有任何区别.从这一点上讲无论是指定大于3还是指定大 ...

  5. oracle sql试题

    转载 数据准备 create table student(  sno varchar2(10) primary key,  sname varchar2(20),  sage number(3),  ...

  6. 【Java EE 学习 28 下】【Oracle面试题2道】【Oracle练习题3道】

    一.已知程序和数据 create table test1 (id int primary key, name ), money int); ,); ,); ,); ,); 要求根据下图写出相应的sql ...

  7. oracle 面试题

    1.对数据库SQL2005.ORACLE熟悉吗?   SQL2005是微软公司的数据库产品.是一个RDBMS数据库,一般应用在一些中型数据库的应用,不能跨平台.   ORACLE是ORACLE公司的数 ...

  8. Oracle笔试题库之问答题篇-总共60道

    1.把表A从表空间TSP1更改成表空间TSP2的方法 解答:alter table A move tablespace TSP2 2.删除表的列: 解答:alert table 表名 drop 列名 ...

  9. Oracle面试题(基础篇)

    1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windo ...

  10. Oracle面试题及答案整理

    一下题目根据此表变换 1.表:table1(FId,Fclass,Fscore),用最高效最简单的SQL列出各班成绩最高的列表,显示班级,成绩两个字段. select stu_class, max(s ...

随机推荐

  1. Java并发(思维导图)【待评估、删除】

    1, 2, 3,常用函数 Semaphore import java.util.concurrent.Semaphore;Semaphore name=new Semaphore(n); name.a ...

  2. 给postmessage加上callback方法

    postmessage双向通信中,是不能使用回调函数的. window.postmessage({msg:'hello',callback:function(e){ do something with ...

  3. StoneTab标签页CAD插件 3.2.1

    //////////////////////////////////////////////////////////////////////////////////////////////////// ...

  4. SpringBoot与缓存、消息、检索、任务、安全与监控

    一.Spring抽象缓存 Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口 ...

  5. 对数据库ID进行散裂化计算

    import basehash class Hasher: """ 对数据库ID进行散列化计算 """ base36 = basehash. ...

  6. 前端必学TypeScript之第一弹,st基础类型!

    TypeScript 是微软开发的 JavaScript 的超集,TypeScript兼容JavaScript,可以载入JavaScript代码然后运行.TypeScript与JavaScript相比 ...

  7. docker-compose deploy replicaSet in standalone MongoDB cluster and with auth

    经过两天的折腾,终于实现了自己想要的效果,就是通过docker-compose 部署最新的mongodb replicaSet, 主要是为了测试 4.2 最新的多文档事务,下面将整个步骤分享一下: d ...

  8. 使用jMeter构造大量并发HTTP请求进行微服务性能测试

    比如我开发好了一个微服务,想测试其在大并发请求下的性能表现如何. 比较方便的一个做法是使用工具jMeter来构造这些请求. 创建一个新的工程: 创建一个新的Thread Group,下图意思是这个工程 ...

  9. PAT Basic 1059 C语言竞赛 (20 分)

    C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……). 1.排名为素数的学生将 ...

  10. VS---《在VS2010中 使用C++创建和使用DLL》(001)

    VS---<在VS2010中 使用C++创建和使用DLL>(001) 需要学习制作和使用动态库,现在知道:DLL调用有两种方式,一种是静态调用,另外一种是动态调用.详细的还不算明白,等后期 ...