1. 查询所有没有选修课程的学生的学号、姓名。 2. 查询选修课程的人数。 3. 查询选课人数大于等于3人的课程编号、课程名称、人数。 4. 在查询的FROM子句中实现表与表之间的连接有哪几种方式?对应的关键字分别是什么?
时间: 2024-09-30 21:06:04 浏览: 118
软件工程专业课程设计——学生选课系统设计.doc
5星 · 资源好评率100%
1. 要查询所有没有选修课程的学生的学号和姓名,假设我们有两个表:`Students`(包含学生信息如`StudentID`, `Name`) 和 `Courses`(包含选课信息如`StudentID`, `CourseID`),可以使用LEFT JOIN或者NOT EXISTS操作,SQL语句可能像这样:
```sql
SELECT S.StudentID, S.Name
FROM Students S
LEFT JOIN Courses C ON S.StudentID = C.StudentID
WHERE C.CourseID IS NULL;
```
2. 查询选修课程的人数,可以用COUNT函数来计算每个学生的课程数量,如果只有一个课程ID,则表示有人选课,SQL如下:
```sql
SELECT COUNT(*)
FROM Courses;
```
3. 查询选课人数大于等于3人的课程信息,可以按课程分组并计数,然后筛选出人数大于等于3的课程:
```sql
SELECT CourseID, CourseName, COUNT(StudentID) as NumOfStudents
FROM Courses
GROUP BY CourseID, CourseName
HAVING COUNT(StudentID) >= 3;
```
4. 在查询的FROM子句中实现表与表之间的连接主要有三种方式:
- INNER JOIN: 使用ON关键字指定匹配条件,只返回两个表中都有匹配记录的结果;
- LEFT JOIN (或LEFT OUTER JOIN): 返回左表的所有记录以及右表匹配到的记录,如果没有匹配则用NULL填充;
- RIGHT JOIN (或RIGHT OUTER JOIN): 反之,返回右表的所有记录以及左表匹配到的记录。
对应的SQL关键字分别是:
- INNER JOIN: `JOIN`
- LEFT JOIN: `LEFT JOIN` 或 `LEFT OUTER JOIN`
- RIGHT JOIN: `RIGHT JOIN` 或 `RIGHT OUTER JOIN`
阅读全文