数据库实验上机ysu

上机的同学们看这里!!!

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老师所授课的全体学生的成绩置零。

正在上机,等会做完在补全

发布了15 篇原创文章 · 获赞 0 · 访问量 261

猜你喜欢

转载自blog.csdn.net/weixin_45074962/article/details/102522781