綜合題:
1. 有如下表結構,
學生基本信息表
CREATE Student(
[Studentid][int] primary key,--主鍵,學號
StudentName char(10) NOT NULL –學生姓名
)
CREATE TABLE student(
studentid CHAR(4) PRIMARY KEY,
studentname char(10)
);
課程信息表
CREATE Subject(
[SubjectID] [int] primary key, --主鍵,課程編號
SubjectName char(20) NOT NULL --課程名
)
CREATE TABLE subject(
subjectid CHAR(4) PRIMARY KEY,
subjectname char(20) NOT NULL
);
成績表
CREATE Grade(
Studentid , --聯合主鍵,學生編號
SubjectID, --聯合主鍵,課程編號
Grade NOT NULL, --成績
primary key (studentid,subjectid)
)
CREATE TABLE grade(
studentid CHAR(4),
subjectid CHAR(4),
grade CHAR(4),
PRIMARY KEY (studentid,subjectid)
);
2.添加如下數據
insert into student values (101,'張三');
insert into student values (102,'李雲');
insert into student values (103,'未');
insert into subject values ('A01','C++');
insert into subject values ('A02','ASP');
insert into subject values ('A03','JAVA');
insert into grade values (101,'A01',59);
insert into grade values (101,'A02',72);
insert into grade values (101,'A03',90);
insert into grade values (102,'A01',75);
insert into grade values (102,'A02',91);
insert into grade values (103,'A01',71);
3.查詢如下信息:
(1)學號 學生姓名 課程名稱 成績 (要全部學生信息)
(2)學號 學生姓名 課程名稱 成績(只顯示每科最高分)
(3)學號 學生姓名 課程名稱 成績 (成績大於60時的顯示及格,小於60時的顯示不及格)
(4)學號 學生姓名 (查詢出選課超過1門以上學生的信息)
CREATE VIEW vw_sub_grade AS
SELECT g.studentid,s.subjectid,s.subjectname,g.grade
FROM subject s,grade g
WHERE s.subjectid=g.subjectid;
SELECT * FROM vw_stu_sub
CREATE VIEW vw_stu_sub AS
SELECT s.studentid,s.studentname,,v.subjectid,v.subjectname,v.grade
FROM student s,vw_sub_grade v
WHERE s.studentid=v.studentid;
1.SELECT v.studentid,v.studentname,v.subjectname,v.grade FROM vw_stu_sub v
2.
SELECT v.studentid,v.studentname,v.subjectname,v.grade FROM vw_stu_sub v WHERE v.grade IN (SELECT MAX(grade) FROM grade GROUP BY subjectid)
3.SELECT studentid,studentname,subjectname,decode(sign(grade-60),-1,'不及格','及格') FROM vw_stu_sub
4.SELECT studentid,studentname FROM vw_stu_sub GROUP BY studentid,studentname HAVING COUNT(subjectname) >= 2