烦请高手pengdali(大力)解决此问题

qingbai 2003-08-31 12:28:41
表模式以及数据如下:
--创建课程表
CREATE TABLE COURSES (
CNO SMALLINT NOT NULL,
CNAME CHAR (10) NOT NULL,
CPNO SMALLINT,
CCREDIT SMALLINT,
PRIMARY KEY (CNO)
);
GO
--创建学生表
CREATE TABLE STUDENTS (
SNO CHAR (10) NOT NULL,
SNAME CHAR (10) NOT NULL,
SSEX CHAR (2) NOT NULL,
SAGE SMALLINT,
SDEPT CHAR (10),
PRIMARY KEY (SNO)
);
GO
--创建成绩表
CREATE TABLE SC (
SNO CHAR (10) NOT NULL,
CNO SMALLINT NOT NULL,
GRADE DECIMAL(5,1) NOT NULL,
FOREIGN KEY (SNO) REFERENCES STUDENTS(SNO),
FOREIGN KEY (CNO) REFERENCES COURSES(CNO),
);
GO
--向课程表插入数据
INSERT INTO COURSES(CNO,CNAME,CPNO,CCREDIT) VALUES (1,'数据库', 5, 4);
INSERT INTO COURSES(CNO,CNAME,CPNO,CCREDIT) VALUES (2,'数学', NULL, 2);
INSERT INTO COURSES(CNO,CNAME,CPNO,CCREDIT) VALUES (3,'信息系统', 1, 4);
INSERT INTO COURSES(CNO,CNAME,CPNO,CCREDIT) VALUES (4,'操作系统', 6, 3);
INSERT INTO COURSES(CNO,CNAME,CPNO,CCREDIT) VALUES (5,'数据结构', 7, 4);
INSERT INTO COURSES(CNO,CNAME,CPNO,CCREDIT) VALUES (6,'数据处理',NULL, 2);
INSERT INTO COURSES(CNO,CNAME,CPNO,CCREDIT) VALUES(7,'pascal语言', 6, 4);
GO
--向学生表插入数据
INSERT INTO STUDENTS (SNO, SNAME, SSEX,SAGE, SDEPT) VALUES ('95001', '李勇', '男', 20, 'CS');
INSERT INTO STUDENTS (SNO, SNAME, SSEX, SAGE, SDEPT) VALUES ('95002', '刘晨', '女', 19, 'IS');
INSERT INTO STUDENTS (SNO, SNAME, SSEX, SAGE, SDEPT) VALUES ('95003', '王敏', '女', 18, 'MA');
INSERT INTO STUDENTS (SNO, SNAME, SSEX, SAGE, SDEPT) VALUES ('95004', '张立', '男', 19, 'IS');
INSERT INTO STUDENTS (SNO, SNAME, SSEX, SAGE, SDEPT) VALUES ('95005', '赵菲', '女', 20, 'CS');
GO
--向成绩表插入数据
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95001', 1, 92);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95001', 2, 85);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95001', 3, 88);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95002', 2, 90);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95002', 3, 80);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95003', 1, 91);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95003', 2, 90);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95003', 3, 82);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95003', 4, 70);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95003', 5, 75);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95003', 6, 85);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95003', 7, 86);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95004', 2, 94);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95004', 3, 84);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95005', 1, 78);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95005', 2, 95);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('95005', 3, 70);
GO

请您给写出查找只选修了‘95001’号同学所选全部课程的学生(也就是查找和‘95001’选课完全相同的学生)的SQL语句。在此先谢过!
...全文
54 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingbai 2003-08-31
  • 打赏
  • 举报
回复
to j9988:
谢谢您,您的解答完全正确!
j9988 2003-08-31
  • 打赏
  • 举报
回复
select * from students A where
not exists(select 1 from sc where sno=A.sno and cno not in
(select cno from sc where sno='95001'))
and not exists (select 1 from sc where sno='95001' and cno not in
(select cno from sc where sno=A.sno))

SNO SNAME SSEX SAGE SDEPT
---------- ---------- ---- ------ ----------
95001 李勇 男 20 CS
95005 赵菲 女 20 CS

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧