以下操作基于包含如下3个关系的"学生﹣选课﹣课程"数据库。 学生表 Stu 字段 StlD StName StSex Birthdate CLName Telephone Address 类型 char (10) varchar (20) char (2) datet ime varchar (30) varchar (20) varchar (150) 是否 NULL No No Yes No Yes Yes Yes 备注 学号,主键姓名 性别 出生日期班级名称电话家庭地址 成绩表 SC 字段 St1D CNo Score 类型 char (10) char (10) int 是否 NULL No No Yes 备注 学号,主键课程编号,主键成绩 课程表 Course 字段 类型 CNo char (10) CName varchar (30) CType char (4) CCredit smallint 是否 NULL No No Yes No 备注 课程编号,主键课程名称 课程类型学分 请按以下要求进行查询,写出对应的 T - SQL 语句。 (1)查询家庭地址是湖南省的学生的姓名、性别和班级名称。(2)统计出班级人数在30人及以上的班级名称及人数。 (3)查询考试分数在95分及以上的学生学号、姓名、班级名称、电话号码。 (4)查询已选课的女学生的学号、姓名、课程名和分数。
时间: 2024-02-13 07:03:37 浏览: 22
(1)
SELECT StName, StSex, CLName
FROM Stu
WHERE Address LIKE '%湖南省%';
(2)
SELECT CLName, COUNT(*) AS NumOfStudents
FROM Stu
GROUP BY CLName
HAVING COUNT(*) >= 30;
(3)
SELECT StlD, StName, CLName, Telephone
FROM Stu
INNER JOIN SC ON Stu.StlD = SC.StlD
WHERE Score >= 95;
(4)
SELECT Stu.StlD, Stu.StName, Course.CName, SC.Score
FROM Stu
INNER JOIN SC ON Stu.StlD = SC.StlD
INNER JOIN Course ON SC.CNo = Course.CNo
WHERE Stu.StSex = '女';
相关问题
数据库给学生表的stu_grade字段创建一个普通索引idx_grade。
你可以使用以下 SQL 语句在学生表的stu_grade字段上创建普通索引idx_grade:
```
CREATE INDEX idx_grade ON student(stu_grade);
```
其中,`idx_grade`是索引的名称,`student`是表名,`stu_grade`是需要创建索引的字段名。这样就可以提高在stu_grade字段上的查询效率了。
在学生选课数据库中新建一个名为stu_view2的视图,该视图可以用来查看每个学生选修课程的门数和平均成绩;
可以使用以下 SQL 语句创建名为stu_view2的视图:
```
CREATE VIEW stu_view2 AS
SELECT s.id AS stu_id, COUNT(e.course_id) AS course_num, AVG(e.grade) AS avg_grade
FROM students s
LEFT JOIN enrollments e ON s.id = e.student_id
GROUP BY s.id;
```
上述 SQL 语句中,首先使用 LEFT JOIN 将学生表(students)和选课表(enrollments)连接起来,以便查询每个学生选修的课程信息。然后使用 COUNT 函数统计每个学生选修的课程门数,使用 AVG 函数计算每个学生的平均成绩。最后使用 GROUP BY 将结果按照学生 id 分组。
通过创建这个视图,可以方便地查看每个学生选修课程的门数和平均成绩,避免了重复的查询操作。例如,可以使用以下 SQL 语句查询学生 id 为1的选课信息:
```
SELECT *
FROM stu_view2
WHERE stu_id = 1;
```
查询结果将显示学生 id 为1的选修课程门数和平均成绩。