数据库--SQL练习_参考答案
根据student数据库的内容完成如下任务:
1、在student数据库中,新建一个表:teacher(教师编号,教师姓名),其中,教师编号为char(5),教师姓名char(10),设置主键。
2、向curriculum表添加一列任课教师编号char(5),并与teacher表建立联系。
向原来curriculum表中的记录添加任课教师信息,要求教师“t0003叶钊”必须负责至少两门课程。
以下查询请写出SQL语句:
3、查询姓“刘”的学生的个数;
lect count(*) from student_info where 姓名like …刘%?
4、查询同名同姓学生名单,并统计同名人数;
lect distinct 姓名,count(姓名) from student_info group by姓名
5、向grade表中插入一些记录,这些记录要求符合以下条件:没有上过编号“0001”课程的同学学号、“0002”号课的平均成绩;
Inrt grade(学号,课程编号,分数)
lect学号,'0002',(Select avg(分数) from grade where 课程编号='0002') from Student_info where 学号not in (Select 学号from grade where 课程编号='0001');
6、查询课程编号“0002”的成绩比课程编号“0001”课程低的所有同学的学号、姓名;
lect a.学号from (lect学号,分数from grade where课程编号='0001') a,(lect学号,分数from grade where课程编号='0002') b
网站访问量查询where a.分数>b.分数and a.学号=b.学号
7、查询没有学全所有课的同学的学号、姓名;
lect student_info.学号,student_info.姓名
from student_info, grade
where student_info.学号=grade.学号group by student_info.学号, student_info.姓名having count(grade. 课程编号) <(lect count(课程编号) from curriculum);
8、创建视图查询各门课程的平均成绩,并按各科平均成绩从低到高和及格率的百分数从高到低顺序;
微信英文create view view1
as
SELECT grade.课程编号AS课程号,课程名称,A VG(分数) A S平均成绩,
100*SUM(CASE WHEN isnull(分数,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS及格百分数FROM grade inner join curriculum on grade.课程编号= curriculum..课程编号GROUP BY grade课程编号, 课程名称
ORDER BY avg(分数),100*SUM(CASE WHEN isnull(分数,0)>=60 THEN 1 ELSE0
END)/COUNT(*) DESC
9、查询各科成绩前三名的学生学号、课程号、分数:(不考虑成绩并列情况) ;
SELECT t1.学号as学生ID,t1.课程编号as课程ID,分数
FROM SC t1
WHERE分数IN (SELECT TOP 3 score FROM grade
多读书读好书WHERE t1.课程编号=课程编号ORDER BY分数DESC) ORDER BY t1.课程编号商品的定义
10、查询没学过“叶钊”老师讲授的任一门课程的学生姓名;
lect student_info.姓名
做手术英语
from student _info
桐城派代表人物where student_info.学号not in(lect distinct grade.学号from grade, curriculum,teacher where grade.课程编号=curriculum.课程编号and teacher.教师编号=curriculum.任课教师编号and teacher.教师姓名='叶钊');
11、把“叶钊”老师教的课的成绩都更改为此课程的平均成绩。石头的拼音怎么写
update grade t分数=(lect avg(SC_2.分数) from grade SC_2
where SC_2.课程编号= grade.课程编号)
from grade,curriculum, teacher where curriculum.课程编号= grade.课程编号and teacher.教师编号= curriculum.任课教师编号and teacher.教师姓名='叶钊';