45道经典例题答案

声明啊 因为有些题目个人理解不太一样 所以给的答案也不太一样 希望谅解;

下面是题目

表结构:
drop table student;
drop table course;
drop table score;
drop table teacher;

CREATE TABLE STUDENT
(SNO VARCHAR(3) NOT NULL,
SNAME VARCHAR(4) NOT NULL,
SSEX VARCHAR(2) NOT NULL,
SBIRTHDAY DATE,
CLASS NUMBER NOT NULL);

CREATE TABLE COURSE
(CNO VARCHAR(5) NOT NULL,
CNAME VARCHAR(10) NOT NULL,
TNO VARCHAR(10) NOT NULL);

CREATE TABLE SCORE
(SNO VARCHAR(3) NOT NULL,
CNO VARCHAR(5) NOT NULL,
DEGREE NUMBER NOT NULL);

CREATE TABLE TEACHER
(TNO VARCHAR(3) NOT NULL,
TNAME VARCHAR(4) NOT NULL,
TSEX VARCHAR(2) NOT NULL,
TBIRTHDAY DATE NOT NULL,
PROF VARCHAR(6),
DEPART VARCHAR(10) NOT NULL);

INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (108 ,‘曾华‘ ,‘男‘ ,to_date(‘1977-09-01‘,‘yyyy-mm-dd‘),95033);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (105 ,‘匡明‘ ,‘男‘ ,to_date(‘1975-10-02‘,‘yyyy-mm-dd‘),95031);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (107 ,‘王丽‘ ,‘女‘ ,to_date(‘1976-01-23‘,‘yyyy-mm-dd‘),95033);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (101 ,‘李军‘ ,‘男‘ ,to_date(‘1976-02-20‘,‘yyyy-mm-dd‘),95033);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (109 ,‘王芳‘ ,‘女‘ ,to_date(‘1975-02-10‘,‘yyyy-mm-dd‘),95031);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (103 ,‘陆君‘ ,‘男‘ ,to_date(‘1974-06-03‘,‘yyyy-mm-dd‘),95031);

INSERT INTO COURSE(CNO,CNAME,TNO)VALUES (‘3-105‘ ,‘计算机导论‘,825);
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES (‘3-245‘ ,‘操作系统‘ ,804);
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES (‘6-166‘ ,‘数据电路‘ ,856);
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES (‘9-888‘ ,‘高等数学‘ ,100);

INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (103,‘3-245‘,86);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (105,‘3-245‘,75);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (109,‘3-245‘,68);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (103,‘3-105‘,92);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (105,‘3-105‘,88);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (109,‘3-105‘,76);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (101,‘3-105‘,64);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (107,‘3-105‘,91);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (108,‘3-105‘,78);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (101,‘6-166‘,85);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (107,‘6-106‘,79);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (108,‘6-166‘,81);

INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (804,‘李诚‘,‘男‘,to_date(‘1958-12-02‘,‘yyyy-mm-dd‘),‘副教授‘,‘计算机系‘);
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (856,‘张旭‘,‘男‘,to_date(‘1969-03-12‘,‘yyyy-mm-dd‘),‘讲师‘,‘电子工程系‘);
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (825,‘王萍‘,‘女‘,to_date(‘1972-05-05‘,‘yyyy-mm-dd‘),‘助教‘,‘计算机系‘);
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (831,‘刘冰‘,‘女‘,to_date(‘1977-08-14‘,‘yyyy-mm-dd‘),‘助教‘,‘电子工程系‘);

题目:
1、 查询Student表中的所有记录的Sname、Ssex和Class列。
2、 查询教师所有的单位即不重复的Depart列。
3、 查询Student表的所有记录。
4、 查询Score表中成绩在60到80之间的所有记录。
5、 查询Score表中成绩为85,86或88的记录。
6、 查询Student表中“95031”班或性别为“女”的同学记录。
7、 以Class降序查询Student表的所有记录。
8、 以Cno升序、Degree降序查询Score表的所有记录。
9、 查询“95031”班的学生人数。
10、查询Score表中的最高分的学生学号和课程号。
11、查询‘3-105’号课程的平均分。
12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
13、查询最低分大于70,最高分小于90的Sno列。
14、查询所有学生的Sname、Cno和Degree列。
15、查询所有学生的Sno、Cname和Degree列。
16、查询所有学生的Sname、Cname和Degree列。
17、查询“95033”班所选课程的平均分。
18、假设使用如下命令建立了一个grade表:
create table grade
(low number,
upp number,
rank char(1));
insert into grade values(90,100,‘A‘);
insert into grade values(80,89,‘B‘);
insert into grade values(70,79,‘C‘);
insert into grade values(60,69,‘D‘);
insert into grade values(0,59,‘E‘);
commit;
现查询所有同学的Sno、Cno和rank列。
19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
20、查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。
21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
23、查询“张旭“教师任课的学生成绩。
24、查询选修某课程的同学人数多于5人的教师姓名。
25、查询95033班和95031班全体学生的记录。
26、查询存在有85分以上成绩的课程Cno.
27、查询出“计算机系“教师所教课程的成绩表。
28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
29、查询选修编号为“3-105“且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”的同学的Cno、Sno和Degree.
31、查询所有教师和同学的name、sex和birthday.
32、查询所有“女”教师和“女”同学的name、sex和birthday.
33、查询成绩比该课程平均成绩低的同学的成绩表。
34、查询所有任课教师的Tname和Depart.
35、查询所有未讲课的教师的Tname和Depart.
36、查询至少有2名男生的班号。
37、查询Student表中不姓“王”的同学记录。
38、查询Student表中每个学生的姓名和年龄。
39、查询Student表中最大和最小的Sbirthday日期值。
40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
41、查询“男”教师及其所上的课程。
42、查询最高分同学的Sno、Cno和Degree列。
43、查询和“李军”同性别的所有同学的Sname.
44、查询和“李军”同性别并同班的同学Sname.
45、查询所有选修“计算机导论”课程的“男”同学的成绩表

嗯 来一波答案

  1 --select t.*, t.rowid from STUDENT t;
  2
  3
  4 --查询Student表中的所有记录的Sname、Ssex和Class列。
  5 --select t.Sname,t.Ssex,t.Class from student t;
  6
  7 --查询Student表的所有记录。
  8 --select * from student order by class;
  9
 10 -- 查询Score表中成绩在60到80之间的所有记录。
 11 --select *from score t where t.degree between 60 and 80
 12
 13  --查询Score表中成绩为85,86或88的记录。
 14  --select * from score t where t.degree in (85,86,88);
 15
 16 --6、 查询Student表中“95031”班或性别为“女”的同学记录。
 17 --select *from student t where t.class=‘95031‘or t.ssex=‘女‘
 18
 19 --7、 以Class降序查询Student表的所有记录。
 20 --select *from student t order by class desc
 21
 22 --8、 以Cno升序、Degree降序查询Score表的所有记录。
 23 --select * from score t order by t.cno ,t.degree desc
 24
 25 --9、 查询“95031”班的学生人数。
 26 --select t.class, count(t.class) from student t where t.class=‘95031‘ group by class
 27
 28 --10、查询Score表中的最高分的学生学号和课程号。
 29 --select t.sno, t.cno from score t where t.degree=(select max(degree)from score)
 30
 31 --11、查询‘3-105’号课程的平均分。
 32 --select avg(t.degree) from score t where t.cno=‘3-105‘
 33
 34 --12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
 35 --select avg(t.degree)from score t where t.cno like ‘3%‘ group by t.cno having count(t.cno)>=5
 36
 37 --13、查询最低分大于70,最高分小于90的Sno列。
 38 -- select t.sno from score t where t.degree between 70 and 90
 39
 40 --14、查询所有学生的Sname、Cno和Degree列。
 41 --select sname, cno, degree from student ,score where student.sno=score.sno
 42
 43 --15、查询所有学生的Sno、Cname和Degree列。
 44 --select sno,cname,degree from course,score where  score.cno=course.cno
 45
 46 --16、查询所有学生的Sname、Cname和Degree列。
 47 --select sname,cname,degree from course,score ,student where course.cno=score.cno and score.sno=student.sno
 48
 49 --17、查询“95033”班所选课程的平均分。
 50 --select cno, avg(degree)from score ,student where student.class = ‘95033‘and student.sno=score.sno group by cno
 51
 52 --18、假设使用如下命令建立了一个grade表:
 53 /*create table grade
 54 (low number,
 55 upp number,
 56 rank char(1));
 57 insert into grade values(90,100,‘A‘);
 58 insert into grade values(80,89,‘B‘);
 59 insert into grade values(70,79,‘C‘);
 60 insert into grade values(60,69,‘D‘);
 61 insert into grade values(0,59,‘E‘);
 62 commit;*/
 63 --现查询所有同学的Sno、Cno和rank列。
 64 --select sno ,cno, rank from score,grade where degree between low and upp
 65
 66 --查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
 67 --select x.Cno,x.Sno,x.degree from score x,score y
 68 --where x.cno=‘3-105‘ and x.degree>y.degree and y.sno=‘109‘and y.cno=‘3-105‘;
 69
 70 -- 20查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。
 71 --select * from score s where sno in (select sno from score group by sno having count(*)>1)
 72 --and degree not in (select max(degree) from score group by sno  )
 73
 74
 75
 76 --21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录
 77 --select t.cno, t.sno,t.degree from score t  where  t.cno = ‘3-105‘ and t.degree>(select degree from score a where
 78 --a.sno=‘109‘ and a.cno=‘3-105‘)
 79
 80 --22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
 81 --select sno, sname, sbirthday from student where to_char(sbirthday,‘yyyy‘)=(select to_char (sbirthday,‘yyyy‘) from
 82  --student where sno=‘108‘)
 83
 84 --23、查询“张旭“教师任课的学生成绩。\
 85 --select sno,degree from score s ,teacher t ,course where t.tname=‘张旭‘ and course.tno=t.tno
 86
 87 --24、查询选修某课程的同学人数多于5人的教师姓名。
 88 --select  tname from  teacher where tno in (select c.tno from course c, score s where c.cno=s.sno
 89  --group by c.tno having count(c.tno)>5)
 90
 91 --25、查询95033班和95031班全体学生的记录。
 92
 93 --select * from student where class in (‘95033‘,‘95031‘)
 94
 95 --26、查询存在有85分以上成绩的课程Cno.
 96 --select cno from score where degree>85 group by cno
 97
 98 --27、查询出“计算机系“教师所教课程的成绩表。
 99 --select degree,sno,cno ,t.depart from score, teacher t where cno in ( select c.cno from course c ,teacher t
100 --where c.tno=t.tno and t.depart=‘计算机系‘)  and t.depart=‘计算机系‘
101
102 --28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
103 --select tname, prof from teacher where depart=‘计算机系‘ and prof not in
104 --(select prof from teacher where depart = ‘电子工程系‘)
105
106 --29、查询选修编号为“3-105“且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
107
108
109 --select  * from score s where s.cno=‘3-105‘ and
110 --s.degree >all (select s.degree from score s where s.cno=‘3-245‘)order by s.degree desc;
111
112 --30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”的同学的Cno、Sno和Degree.
113
114 --select * from score where cno=‘3-105‘ and degree>all(select degree from score where cno=‘3-245‘);
115
116 --31、查询所有教师和同学的name、sex和birthday.
117 /*select tname,tsex,tbirthday from teacher union
118 select sname,ssex,sbirthday from student; */
119
120 --32、查询所有“女”教师和“女”同学的name、sex和birthday.
121
122 --select tname,tsex,tbirthday from teacher where tsex=‘女‘ union
123 --select sname, ssex,sbirthday from student where ssex = ‘女‘
124
125 --33、查询成绩比该课程平均成绩低的同学的成绩表。
126 --select * from score  a where degree<
127 --(select avg(degree) from score b where a.cno=b.cno);
128
129 --34、查询所有任课教师的Tname和Depart.
130 --select tname ,depart from teacher a where exists
131 --(select * from course b where a.tno=b.tno);
132 --35、查询所有未讲课的教师的Tname和Depart.
133 --select tname ,depart from teacher a  where not exists
134 --(select * from course b where a.tno=b.tno);
135
136 --36、查询至少有2名男生的班号。
137  -- select class from student where ssex=‘男‘group by class having count(*)>=2;
138 --37、查询Student表中不姓“王”的同学记录。
139 --select * from student where sname not like‘王%‘;
140
141 --38、查询Student表中每个学生的姓名和年龄。
142
143 --select sname as 姓名,(to_char(sysdate,‘yyyy‘)-to_char(sbirthday,‘yyyy‘)) as 年龄 from student
144
145
146 --39、查询Student表中最大和最小的Sbirthday日期值。
147
148 --select sname,sbirthday  from student where sbirthday =(select min (sbirthday) from student)union
149 --select sname,sbirthday  from student where sbirthday =(select max(sbirthday) from student)
150
151 --40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
152 --select * from student s order by class desc , sbirthday desc;
153
154
155 --41、查询“男”教师及其所上的课程。
156 -- select x.tname,y.cname from teacher x,course y where x.tno=y.tno and x.tsex=‘男‘;
157
158 --42、查询最高分同学的Sno、Cno和Degree列。
159
160 --select * from score where degree=(select max(degree)from score);
161
162 --43、查询和“李军”同性别的所有同学的Sname.
163 --select sname from student where ssex=(select ssex from student where sname=‘李军‘);
164
165 --44、查询和“李军”同性别并同班的同学Sname.
166 --select sname from student where ssex=(select ssex from student where sname=‘李军‘) and
167  --class=(select class from student where sname=‘李军‘)
168
169 --45、查询所有选修“计算机导论”课程的“男”同学的成绩表
170
171 select * from score where sno in(select sno from student where ssex=‘男‘) and
172  cno=(select cno from course where cname=‘计算机导论‘); 
时间: 2024-10-15 18:48:01

45道经典例题答案的相关文章

100多道经典的JAVA面试题及答案解析

面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码的可理解性. 面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会逐个分析这些特性. 封装 封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内部的数据.在Java当中,有3种修饰符:public,private和protected.每一种修

几道经典的SQL笔试题目

几道经典的SQL笔试题目(有答案) (1)表名:购物信息 购物人      商品名称     数量 A            甲          2 B            乙          4 C            丙          1 A            丁          2 B            丙          5 …… (其他用户实验的记录大家可自行插入) 给出所有购入商品为两种或两种以上的购物人记录 答:select * from 购物信息 wher

[Python]Python 经典例题

Python 经典例题 1 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数. #!/usr/bin/python # -*- coding: UTF-8 -*- from sys import stdout for j in range(2,1001): k = [] n = -1 s = j for i in range(1,j): if j % i == 0: n += 1 s -= i k.append(i) if

50道经典的JAVA编程题(目录)

50道经典的JAVA编程题(目录) 题目来源于:http://blog.sina.com.cn/s/blog_60fafdda0100wb21.html [程序1] TestRabbit.java 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... [程序2] FindPrimeNumber.java 题目:判断101-20

到底什么是dp思想(内含大量经典例题,附带详细解析)

期末了,通过写博客的方式复习一下dp,把自己理解的dp思想通过样例全部说出来 说说我所理解的dp思想 dp一般用于解决多阶段决策问题,即每个阶段都要做一个决策,全部的决策是一个决策序列,要你求一个 最好的决策序列使得这个问题有最优解 将待求解的问题分为若干个相互联系的子问题,只在第一次遇到的时候求解,然后将这个子问题的答案保存 下来,下次又遇到的时候直接拿过来用即可 dp和分治的不同之处在于分治分解而成的子问题必须没有联系(有联系的话就包含大量重复的子问题,那 么这个问题就不适宜分治,虽然分治也

AC自动机【模板】+经典例题

AC自动机模板 经典例题 Keywords Search HDU - 2222 [求目标串中出现了几个模式串] [(注意:模式串可能会重复)] 模板: 1 const int maxn=26; 2 struct Trie 3 { 4 int next[500010][maxn]; 5 int fail[500010],end[500010]; 6 int root,L; 7 int newnode() //初始化 8 { 9 for(int i=0;i<26;i++) 10 next[L][i]

JavaScript 开发的45个经典技巧

JavaScript 开发的45个经典技巧 分类 编程技术 JavaScript 是一个绝冠全球的编程语言,可用于Web开发.移动应用开发(PhoneGap.Appcelerator).服务器端开发(Node.js和 Wakanda)等等.JavaScript还是很多新手踏入编程世界的第一个语言.既可以用来显示浏览器中的简单提示框,也可以通过nodebot或 nodruino来控制机器人.能够编写结构清晰.性能高效的JavaScript代码的开发人员,现如今已成了招聘市场最受追捧的人. 在这篇文

java--------动态的经典例题

多态一: 什么是动态: 同一行为的多种不同表达,或者同一行为的多种不同实现就叫做多态. 1)Person,Student,Teacher之间的关系 2)有一个"车"的父类,宝马继承自车,奔驰继承自车.那么反过来,车可以是宝马,也可以是奔驰,具有不同的形态,这种现象就叫多态.  如,我要上街买个东西,请你给我一辆车,这时你传给我的车(一个Car对象,形参)的一个实例(实参)就是多态(可以有不同的实现,宝马.奔驰.自行车等都可以). 3) "笔"是父类,钢笔.铅笔.圆珠

基本SQL练习题--选课经典例题

为管理岗位业务培训信息,建立3个表: S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号.学员姓名.所属单位.学员年龄 C (C#,CN ) C#,CN 分别代表课程编号.课程名称 SC ( S#,C#,G ) S#,C#,G 分别代表学号.所选修的课程编号.学习成绩 1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名 --实现代码: Select SN,SD FROM S Where [S#] IN( Select [S#] FROM C,SC Whe