本人不做数据库方面开发,但要做个题,请高手指导。
学生表结构:学号(主键)姓名
成绩表结构:学好(主键1)课程号(主键2)成绩
(1)求所有同学所有课程的总分。
(2)写一个针对每个同学计算所有科目平均成绩的存储过程。
(3)构造触发器完成以下功能:当增加一个新同学时,自动在Score表中增加一个学号;当删除某个学生档案时,相应的该学生的成绩记录全部删除。
(4)写一个完整的游标程序,用来提取李斯各门课程的成绩。(SQL语法)另外有一个表包含书名和作者
内容:
书名 作者
book1 author1
book1 author2
写个SQL得到结果
book1 author1,author2
多谢。时间紧迫。给个结果,要分另外开帖给。系统一次只允许给100。
学生表结构:学号(主键)姓名
成绩表结构:学好(主键1)课程号(主键2)成绩
(1)求所有同学所有课程的总分。
(2)写一个针对每个同学计算所有科目平均成绩的存储过程。
(3)构造触发器完成以下功能:当增加一个新同学时,自动在Score表中增加一个学号;当删除某个学生档案时,相应的该学生的成绩记录全部删除。
(4)写一个完整的游标程序,用来提取李斯各门课程的成绩。(SQL语法)另外有一个表包含书名和作者
内容:
书名 作者
book1 author1
book1 author2
写个SQL得到结果
book1 author1,author2
多谢。时间紧迫。给个结果,要分另外开帖给。系统一次只允许给100。
解决方案 »
- 据说低于三张表连接就用ON?
- 数据文件没有同步到从库的问题
- 为什么a表里的所有数据被更新?
- ORACLE宕机日志分析
- 数据库是 9I的啊 wmsys.wm_concat 这个方法 在9I能好用么?
- 如何PL-SQL中SQL WINDOW 执行字符串型SQL
- group by substr()的问题
- oracle(8.1.6)的联机帮助.是怎样搞的?
- 基于B/S结构(java+weblogic+oracle)如果事物处理比较好?分不够会一直往上加!
- 急急急!oracle导入dmp文件报1400错误,怎么解决?
- 如何使用EXP命令导出某个表的一部分数据?(顶者有分,解决后立刻给分结贴。)
- 返回从第n条记录开始的m条记录,这种语句在oracle中该怎么写
---------- --------------------
1 zhangsan
2 lisi SQL> select *from subject; XKH XK
---------- --------------------
1 math
2 chinese SQL> select *from score; XH XKH CJ
---------- ---------- ----------
1 1 80
1 2 90
2 1 91
2 2 83 SQL> select * from student join (select xh,sum(cj) from score group by xh) using(xh); XH XM SUM(CJ)
---------- -------------------- ----------
1 zhangsan 170
2 lisi 174
(2)
create or replace procedure averageScore(xh number) as
avgScore number;
begin
select avg(cj) into avgScore from score where xh=1;
dbms_output.put_line(avgScore);
end;(3)
create or replace trigger triStudent
before insert or delete on student for each row
declare
cursor c_subject is select xkh from subject;
begin
--原文:"当增加一个新同学时,自动在Score表中增加一个学号",不是很理解那样做的目的,这里设置新同学所有学科成绩为空
if inserting then
for r_subject in c_subject loop
execute immediate 'insert into score values('||:new.xh||','||r_subject.xkh||',null)';
end loop;
end if; if deleting then
delete score where xh=:old.xh;
end if ;
end;(4)
declare
cursor c_score is select s.xk,t.cj from subject s,(select * from score where xh=(select xh from student where xm='lisi')) t where s.xkh=t.xkh ;
begin
for r_score in c_score loop
dbms_output.put_line(r_score.xk||':'||r_score.cj);
end loop;
end;
-------------------------------
math:91
chinese:83