createdatabase 教学;
use 教学;
createtable T
(tno char(5) primary key,
tname char(6),
title char(6)
);
createtable C
(cno char(5) primary key,
cname varchar(20),
tno char(5)
);
createtable S
(sno char(5) primary key,
sname char(6),
age int,
sex char(2)
);
createtable SC
(sno char(5),
cno char(5),
score int
);
insertinto T values('t1','张伟','讲师');
insertinto T values('t2','刘老师','副教授');
insertinto T values('t3','刘辉','教授');
insertinto T values('t4','王明中','教授');
insertinto C values('c1','英语','t1');
insertinto C values('c2','Java','t2');
insertinto C values('c3','数据库','t3');
insertinto C values('c4','物理','t4');
insertinto S values('s1','王珂',21,'男');
insertinto S values('s2','李淑琴',18,'女');
insertinto S values('s3','李敏',18,'女');
insertinto S values('s4','王海涛',18,'男');
insertinto S values('s5','赵子明',18,'男');
insertinto S values('s6','刘美丽',19,'女');
insertinto SC values('s1','c1',80);
insertinto SC values('s2','c1',82);
insertinto SC values('s3','c1',81);
insertinto SC values('s4','c1',85);
insertinto SC values('s5','c1',89);
insertinto SC values('s6','c1',90);
insertinto SC values('s1','c2',87);
insertinto SC values('s2','c2',87);
insertinto SC values('s3','c2',50);
insertinto SC values('s4','c3',53);
insertinto SC values('s5','c3',90);
insertinto SC values('s3','c4',74);
insertinto SC values('s6','c4',80);
select Sno,sname
from S
where Age >20and Sex='男';
selectdistinct C.Cno,Cname
from S,SC,C
where S.Sno =SC.Sno and SC.Cno=C.Cno and S.Sex='女';
SELECTdistinct T.Tno, T.Tname
FROM S, SC, C, T
WHERE S.Sno = SC.Sno AND SC.Cno = C.Cno AND C.Tno = T.Tno AND S.Sex = '女';
SELECT Sno
FROM SC
GROUPBY Sno
HAVINGCOUNT(Cno) >= 2;
SELECT Cno
FROM SC
WHERE Sno IN ('S3', 'S6')
GROUPBY Cno
HAVINGCOUNT(DISTINCT Sno) = 2;
SELECT Cno
FROM C
WHERE Cno NOTIN (
SELECT Cno
FROM S, SC
WHERE S.Sno = SC.Sno AND S.Sname = '王珂'
);
SELECT C.Cno, C.Cname
FROM C
WHERENOTEXISTS (
SELECT *
FROM S
WHERENOTEXISTS (
SELECT *
FROM SC
WHERE SC.Sno = S.Sno AND SC.Cno = C.Cno
)
);
SELECT Sno
FROM SC
WHERE Cno IN (
SELECT Cno
FROM C, T
WHERE C.Tno = T.Tno AND T.Tname LIKE'刘老师'
)
GROUPBY Sno
HAVINGCOUNT(DISTINCT Cno) = (
SELECTCOUNT(DISTINCT Cno)
FROM C, T
WHERE C.Tno = T.Tno AND T.Tname LIKE'刘老师'
);