--创建学生表
create table tbl_student(
sid number,
sname varchar2(10),
sex varchar2(10),
age number,
dept number
);
--创建课程表
create table tbl_course(
cid number,
cname varchar2(10)
);
--创建成绩表
create table tbl_grade(
gid number,
sid number,
cid number,
grade number
);
insert into tbl_student (sid,sname)values(1,'张三');
insert into tbl_student (sid,sname)values(2,'李四');
insert into tbl_student (sid,sname)values(3,'王五');
insert into tbl_student (sid,sname)values(4,'赵六');
insert into tbl_course (cid,cname)values(1,'英语');
insert into tbl_course (cid,cname)values(2,'语文');
insert into tbl_course (cid,cname)values(3,'数学');
insert into tbl_grade (gid,sid,cid,grade) values(1,1,1,78);
insert into tbl_grade (gid,sid,cid,grade) values(2,1,2,74);
insert into tbl_grade (gid,sid,cid,grade) values(3,1,3,88);
insert into tbl_grade (gid,sid,cid,grade) values(4,2,1,98);
insert into tbl_grade (gid,sid,cid,grade) values(5,2,2,56);
insert into tbl_grade (gid,sid,cid,grade) values(6,2,3,48);
insert into tbl_grade (gid,sid,cid,grade) values(7,3,1,74);
insert into tbl_grade (gid,sid,cid,grade) values(8,3,2,97);
insert into tbl_grade (gid,sid,cid,grade) values(9,4,1,28);
insert into tbl_grade (gid,sid,cid,grade) values(10,4,2,79);
insert into tbl_grade (gid,sid,cid,grade) values(11,4,3,76);
commit;
--取出学生个数
select count(1)
from tbl_student
--计算每个学生的总成绩
select ts.sname,sum(grade)
from tbl_student ts,tbl_grade tg,tbl_course tc
where ts.sid=tg.sid
and tc.cid=tg.cid
group by ts.sname
--查询选修了"计算机原理"的学生学号和姓名
select ts.sid,ts.sname
from tbl_student ts,tbl_course tc
where tc.cname='计算机原理'
--查询周星驰同学选修了的课程名字
select ts.sname,tc.cname
from tbl_student ts,tbl_course tc
where ts.sname='周星驰'
--查询选修了五门课程的学生学号和姓名
select ts.sid,ts.sname
from tbl_student ts,
(select sid from tbl_grade group by sid having count(1)=5)tg
where ts.sid=tg.sid
--查询单科最高成绩的sql语句,查询的内容包括学生学号,学生姓名,课程编号,成绩
--先查询出课程编号和最高成绩 从成绩表中 想办法查出 学生学号和学生姓名
select cid,max(grade) from tbl_grade tg group by tg.cid
--先找学号??怎么着学号
select s.sid, s.sname, c.cname, t1.maxg
from (select g.sid, t.cid, t.maxg
from (select cid, max(grade)maxg from tbl_grade group by cid) t,
tbl_grade g
where t.cid = g.cid
and maxg = g.grade) t1,tbl_student s,
tbl_course c
where t1.cid = c.cid
and t1.sid = s.sid
--如果以60分为及格线,统计成绩及格的学生姓名及平均分,并按平均成绩排序
--先查询及格的学生姓名
select sid,avg(grade) from tbl_grade where grade>'60' group by sid
--删选
select s.sname, t.avg_g
from (select sid, avg(grade) avg_g
from tbl_grade
where grade > '60'
group by sid) t,
tbl_student s
where t.sid = s.sid
|