--通过PLSQL创建上述表,并独立把所有SQL语句写一遍
CREATE TABLE STUDENT (SNO VARCHAR2(40) PRIMARY KEY,NAME VARCHAR2(40),SEX VARCHAR2(40),AGE NUMBER(3),CLASS VARCHAR2(40));
CREATE TABLE COURSE (CNO VARCHAR2(40) PRIMARY KEY,CNAME VARCHAR2(40));
CREATE TABLE GRADE(SNO VARCHAR2(40) PRIMARY KEY,CNO VARCHAR2(40) PRIMARY KEY,SCORE NUMBER(5,2));
--插入班级代码为“培训一班”,学号为“001”,姓名为“郑和”的学生记录
INSERT INTO STUDENT(SNO,NAME,CLASS) VALUES ('001','王华','培训一班');
--将学号为“006”的学生姓名改为“王华”
UPDATE STUDENT SET NAME = '王华' WHERE SNO = 006;
--将所有“001”的班级代码改为“009”
UPDATE STUDENT SET CLASS = '009' WHERE CLASS = '001';
--删除学号为‘004’的学生记录及其所有课程成绩记录
DELETE FROM STUDNET WHERE SNO = '004';
DELETE FROM GRADE WHERE SNO = '004';
--查询班级代码为“培训一班”的所有学生“数据结构”课程的成绩
SELECT SCORE FROM GRADE WHERE
SNO LIKE (
SELECT SNO FROM STUDENT WHERE CLASS = ' 培训一班'
)
AND
CNO LIKE (
SELECT CNO FROM COURSE WHERE CNAME = '数据结构'
);
--查询“数据结构”课程成绩在60分到80分之间的学生姓名、班级代码、成绩
SELECT SNO,NAME,CLASS FROM STUDENT WHERE SNO LIKE (
SELECT SNO FROM GRADE WHERE SCORE BETWEEN 60 and 80
);
--查询“数据结构”课程最高分的学生姓名、学号、成绩
SELECT SNO,NAME,CLASS FROM STUDENT WHERE SNO LIKE (
SELECT SNO FROM GRADE WHERE SCORE =(
SELECT MAX(SCORE) FROM GRADE WHERE CNO LIKE (
SELECT CNO FROM COURSE WHERE CNAME = '数据结构'
)
)
);
--查询班级“培训一班”的“数据结构”课程平均分数、最高分数、最低分数
SELECT AVG(G.SCORE),MAX(G.SCORE),MIN(G.SCORE)
FROM STUDENT S,COURSE C,GRADE G
WHERE S.SNO = G.SNO AND C.CNO = G.CNO AND S.CLASS = '培训一班' AND C.CNAME = '数据结构';
--统计所有班级所有课程的成绩总分数,输出结果是:班级代码、总分数
SELECT S.SNO,SUM(SCORE)
FROM STUDENT S,GRADE G
WHERE S.SNO = G.SNO GROUP BY S.SNO;
--统计姓“张”的学生所有课程的平均分数,输出结果是:学生姓名、平均分数
SELECT S.NAME,AVG(G.SCORE)
FROM STUDENT S,GRADE G
WHERE S.SNO = G.SNO GROUP BY S.NAME;
--查询所有学生的姓名、学号长度、学号最后两位数字
SELECT NAME,LENGTH(SNO),SUBSTR(SNO,LENGTH(SNO)-1,2) FROM STUDENT;