使用SQL语言写出以下几个语句:创建了学生表S,课程表C,选课表SC。查询每个系的学生人数,结果包含系名和人数,按人数升序排列。 9. 查询每名学生所选课程的平均成绩和总学分,结果显示姓名、总成绩、总学分三列。 10. 查询选修了2门以上(含2门)课程的学生姓名。 11. 查询计算机系(CS)的男同学的选课情况,结果包含姓名、课程名两列。 12. 查询没有选修2号课的学生姓名。(要求用嵌套查询)。
时间: 2024-04-23 18:22:06 浏览: 126
SQL语句创建学生信息数据库表的示例实用文档.doc
1. 创建表S、C、SC的SQL语句:
```
CREATE TABLE S (
Sno CHAR(10) PRIMARY KEY,
Sname VARCHAR(20) NOT NULL,
Ssex CHAR(2),
Sage INT,
Sdept VARCHAR(20)
);
CREATE TABLE C (
Cno CHAR(10) PRIMARY KEY,
Cname VARCHAR(20) NOT NULL,
Tno CHAR(10),
Credit INT
);
CREATE TABLE SC (
Sno CHAR(10),
Cno CHAR(10),
Grade INT,
PRIMARY KEY (Sno, Cno),
FOREIGN KEY (Sno) REFERENCES S(Sno),
FOREIGN KEY (Cno) REFERENCES C(Cno)
);
```
2. 查询每个系的学生人数的SQL语句:
```
SELECT S.Sdept, COUNT(*) AS count
FROM S
GROUP BY S.Sdept
ORDER BY count ASC;
```
3. 查询每名学生所选课程的平均成绩和总学分的SQL语句:
```
SELECT S.Sname, SUM(SC.Grade * C.Credit) AS total_score, SUM(C.Credit) AS total_credit
FROM S, SC, C
WHERE S.Sno = SC.Sno AND SC.Cno = C.Cno
GROUP BY S.Sno;
```
4. 查询选修了2门以上(含2门)课程的学生姓名的SQL语句:
```
SELECT S.Sname
FROM S, SC
WHERE S.Sno = SC.Sno
GROUP BY S.Sno
HAVING COUNT(*) >= 2;
```
5. 查询计算机系(CS)的男同学的选课情况的SQL语句:
```
SELECT S.Sname, C.Cname
FROM S, SC, C
WHERE S.Sno = SC.Sno AND SC.Cno = C.Cno AND S.Sdept = 'CS' AND S.Ssex = '男';
```
6. 查询没有选修2号课的学生姓名的SQL语句(使用嵌套查询):
```
SELECT S.Sname
FROM S
WHERE S.Sno NOT IN (
SELECT SC.Sno
FROM SC
WHERE SC.Cno = '2'
);
```
阅读全文