上机的同学们看这里!!!
1.2
SELECT DISTINCT CNAME, C.C#
FROM C,SC,S
WHERE SEX=‘M’; --另一种写法:S.S#=SC.S# AND SC.C#=C.C# AND SEX=‘M’;
1.4 方法1
SELECT S#
FROM SC
GROUP BY S#
HAVING COUNT(*)>=2;
1.4 方法2
SELECT DISTINCT X.S#
FROM SC AS X, SC AS Y
WHERE X.S#=Y.S# AND X.C# <> Y.C#;
1.6
SELECT C#
FROM C
WHERE C# NOT IN(SELECT DISTINCT C#
FROM S,SC
WHERE S.S#=SC.S# AND SNAME=‘WANG’);
查看王同学选课
SELECT * FROM S,SC WHERE S.S#=SC.S#;
1.8
SELECT DISTINCT X.S# --选修刘老师全部课程的学生学号
FROM SC AS X
WHERE NOT EXISTS (SELECT *
FROM C, T
WHERE C.T#=T.T# AND TNAME='LIU’AND
NOT EXISTS(SELECT *
FROM SC AS Y
WHERE X.S#=Y.S# AND Y.C#=C.C# ));
/*
SELECT DISTINCT S#
FROM SC,C,T
WHERE SC.C#=C.C# AND C.T#=T.T# AND TNAME=‘LIU’; --选修刘老师课程的学生
*/
SELECT * FROM SC,C,T WHERE SC.C#=C.C# AND C.T#=T.T# AND TNAME=‘LIU’;–刘老师的课程
2.2
SELECT AVG(AGE)
FROM S,SC
WHERE S.S#=SC.S# AND SEX=‘F’ AND C#=‘C4’;
2.3
做错题了,组合查询第三题。。。
SELECT AVG(GRADE)
FROM T,SC,C
WHERE SC.C#=C.C# AND C.T#=T.T# AND TNAME=‘LIU’
GROUP BY C.C#; --但是有空值,结果就会有两个,平均值不计空值
2.4.
SELECT C# ,COUNT(DISTINCT S#)
FROM SC
GROUP BY C#
HAVING COUNT(*)>10
ORDER BY 2 DESC,1;
2.6
SELECT S#,C#
FROM SC
WHERE GRADE IS NULL;
2.8
WITH RESULT(AVG_AGE) AS
(SELECT AVG(AGE)
FROM S
GROUP BY SEX
HAVING SEX=‘F’)
SELECT SNAME,AGE
FROM S,RESULT
WHERE SEX=‘M’ AND AGE>RESULT.AVG_AGE;
3.1
ALTER TABLE S
ADD CHECK(AGE<30);
3.2
ALTER TABLE SC
ADD CHECK(GRADE>=0 AND GRADE<=100);
INSERT INTO SC
VALUES(‘S11’,‘C2’,101);
3.3.1①求某门课的平均成绩,并把结果存入数据库;
UPDATE
3.3.2②将选LIU老师所授课的全体学生的成绩置零。
正在上机,等会做完在补全