sql sever中学生选课库有student表包含sno(学生学号)、sname、ssex、sage、sdept(学生专业),sc表(学生选课表)中包含sno、cno(课程号)、grade,course表(课程表)包含cno、cname(课程名称)、cpno(课程号)、ccredit用SQL语句查询选修了全部课程的学生的姓名(采用分组统计查询实现)
时间: 2023-06-04 22:07:18 浏览: 141
SELECT s.sname
FROM student s
INNER JOIN sc ON s.sno = sc.sno
INNER JOIN course c ON sc.cno = c.cno
GROUP BY s.sname, s.sno
HAVING COUNT(DISTINCT c.cno) = (SELECT COUNT(*) FROM course)
相关问题
sql sever中学生选课库有student表包含sno(学生学号)、sname、ssex、sage、sdept(学生专业),sc表(学生选课表)中包含sno、cno(课程号)、grade,course表(课程表)包含cno、cname(课程名称)、cpno(课程号)、ccredit用SQL语句查询最低分大于70,最高分小于90的学生的学号;
请问您是想查询学生选课表中最低分大于70,最高分小于90的学生的学号吗?
如果是的话,您可以使用以下SQL语句进行查询:
SELECT sc.sno
FROM sc
WHERE sc.grade > 70 AND sc.grade < 90
GROUP BY sc.sno
HAVING MIN(sc.grade) > 70 AND MAX(sc.grade) < 90;
这个查询语句会首先筛选出成绩在70到90之间的选课记录,并按照学生学号进行分组。然后,通过使用HAVING子句,我们就可以筛选出最低分大于70且最高分小于90的学生的学号了。
SQL SEVER数据准备要求(利用SQL语言插入记录) : a)学生关系表Student中插入各学生自己所在班的全体学生的信息。 b)课程关系表Course插入至少6门课程信息, 至少有3门课有先修课,且至少有2门课有间接先修课(即课程的先修课也有先修课)。 c)选修关系表SC至少要6名同学有选课信息,且至少有3名同学选修所有课程。
好的,以下是插入记录的SQL语句:
a)
```
INSERT INTO Student (Sno, Sname, Ssex, Sage, Sdept)
SELECT Student.Sno, Student.Sname, Student.Ssex, Student.Sage, Student.Sdept
FROM Student, Class
WHERE Student.Classno = Class.Classno;
```
b)
```
INSERT INTO Course (Cno, Cname, Cpno)
VALUES ('C001', 'Database Management System', NULL),
('C002', 'Data Structure and Algorithm', NULL),
('C003', 'Operating System', 'C001'),
('C004', 'Computer Network', 'C002'),
('C005', 'Database Design and Implementation', 'C001'),
('C006', 'Programming Language Concepts', 'C002');
```
c)
```
INSERT INTO SC (Sno, Cno, Grade)
VALUES ('S001', 'C001', 80),
('S001', 'C002', 85),
('S001', 'C003', 90),
('S002', 'C001', 75),
('S002', 'C002', 80),
('S002', 'C003', 85),
('S003', 'C001', 90),
('S003', 'C002', 95),
('S004', 'C001', 80),
('S004', 'C002', 85),
('S004', 'C003', 90),
('S005', 'C001', 75),
('S006', 'C002', 80),
('S006', 'C003', 85),
('S007', 'C001', 90),
('S007', 'C002', 95),
('S007', 'C003', 100);
```
希望能够帮助到你!
阅读全文