create table sporter(
sporterid number,
name varchar2(20),
sex varchar2(5),
department varchar2(20)
);
insert into sporter values(1001,'李盼','女','计算机系');
insert into sporter values(1002,'王玥','女','数学系');
insert into sporter values(1003,'丁赛','男','计算机系');
insert into sporter values(1004,'汪丽','女','物理系');
insert into sporter values(1005,'李娜','女','心理系');
insert into sporter values(1006,'王骋','女','化学系');
select * from sporter;
create table item(
itemid varchar2(20),
itemname varchar2(20),
loc varchar2(50)
);
insert into item values('x001','男子五千米','一操场');
insert into item values('x002','男子标枪','一操场');
insert into item values('x003','男子跳远','二操场');
insert into item values('x004','女子跳高','二操场');
insert into item values('x005','女子三千米','三操场');
select* from item;
create table grade(
sporterid number,
itemid varchar2(20),
mark number
);
insert into grade values(1001,'x001',6);
insert into grade values(1002,'x001',4);
insert into grade values(1003,'x001',2);
insert into grade values(1004,'x001',0);
insert into grade values(1001,'x003',4);
insert into grade values(1002,'x003',6);
insert into grade values(1004,'x003',2);
insert into grade values(1004,'x004',6);
insert into grade values(1006,'x004',4);
select * from grade;
1.求出总积分最高的系名及总积分
select * from(
select s.department,sum(g.mark)
from sporter s,grade g
where s.sporterid = g.sporterid
group by s.department
order by sum(g.mark) desc )
where rownum=1;
2.查询在一操场进行比赛的项目名称及其冠军的姓名
select *from(
select i.itemname,s.name,g.mark
from sporter s,item i,grade g
where i.itemid=g.itemid and s.sporterid = g.sporterid
and i.loc='一操场'
order by g.mark desc)
where rownum = 1;
3.找出参加了王玥所参加过的项目的其他同学的姓名
select distinct s.name
from sporter s,grade g
where s.sporterid=g.sporterid
and g.itemid in(
select i.itemid
from sporter s,item i,grade g
where s.sporterid=g.sporterid
and i.itemid=g.itemid
and s.name='王玥')
and s.name<>'王玥';
4.经查,王玥因为使用了违禁药品,其成绩都记为0分,请在数据库中做出相应修改
update grade set mark = 0 where sporterid=1002;
5.经组委会协商,需要删除女子跳高比赛项目
delete from item where itemid='x004';