(1)现有数据库teaching,其中包括学生信息信息表–S(sno,sname,sex,birth,xb,tel),课程信息表–C(cno,cname,teacher,xf),成绩信息表–SC(sno,cno,pscj,qmcj),请按要求完成下列数据查询: 查询所有学生的学号和姓名信息。
select sno as 学号,sname as 姓名
from s;
或者
select sno ,sname from s;
(2)查询所有"生态系"学的信息。
select *
from s
where xb=‘生态系’
(3)查询所有“数学系”的男生信息。
select *
from s
where xb=‘数学系’ and sex=‘男’;
(4)查询所有2000年出生学生的信息。(至少两种方法实现)
方法1:select * from s
where birth>=‘2000-01-01’ and birth <=‘2000-12-31’;
方法2:select * from s
where year(birth)=2000;
方法3:select * from s
where birth between ‘2000-01-01’ and ‘2000-12-31’;
(5)查询李姓老师带课信息。
select *
from c
where teacher like ‘李%’;
(6)查询所有选修课程学生期末成绩90分及以上学生的学号和课程号。
select sno as 学号,cno as 课程号
from sc
where qmcj>=90
(7)查询学号为“j1010”、“j1020”、“j1030”、“j1040”学生的基本信息(使用谓词运算符)
select *
from s
where s.学号 in(‘j1010’,‘j1020’,‘j1030’,‘j1040’);
(8)查询选修课程学生的人数。
select count(distinct s .学号) as 选修人数
from sc
(9)查询所有学生的成绩,并按照期末成绩进行降序排序显示。
select *
from sc
order by 期末成绩 desc;
(10)查询所有男生的人数和女生的人数。
select sex,count(*) as 人数
from s
group by sex;
(11)查询没有选修“数据库技术”学生的姓名和系部
方法一:
SELECT 姓名,系部
FROM S
WHERE 学号 NOT IN ( -
SELECT 学号 FROM C,SC WHERE C.课程号=SC.课程号 AND 课程名=‘数据库技术’
)
或者
方法二:
SELECT 姓名,系部
FROM S,C,SC -
WHERE S.学号=SC.学号 AND SC.课程号=C.课程号 AND 课程名!=’ 数据库技术’
(12)查询显示选修了“数据库技术”课程学生的平均成绩。
SELECT 课程名,AVG(成绩) AS 平均成绩
FROM 选课信息,课程信息
WHERE 选课信息.课程号=课程信息.课程号 AND 课程名=‘数据库技术’
(13)查询显示被选修了的各课程名称及其选修人数
方法一:
SELECT 课程名称 ,COUNT(*) AS 选修人数
FROM 选课信息,课程信息
WHERE 选课信息.课程号=课程信息.课程号
GROUP BY [选课信息.]课程名称
方法二:
SELECT 课程名称 ,COUNT(*) AS 选修人数
FROM sc,c
WHERE sc.课程编号=c.课程编号
GROUP BY [c.]课程名称
(14)将选课信息表中成绩低于60分的学生分别增加5分。
update 选课信息
set 成绩=成绩+5
where 成绩<60
(15)查询所有目前年龄不到18岁的学生的姓名、所在系部及年龄
ELECT 姓名, 班级, YEAR(GETDATE())-YEAR(出生日期) as 年龄
FROM 学生信息
WHERE YEAR(GETDATE())-YEAR(出生日期)<18
(16)创建一个视图,V_avg用于查询每个学生的学号,姓名及平均成绩 ,并且按照平均分降序排序
create VIEW V_avg
as
select s.学号,s.姓名,AVG(sc.期末成绩) as 平均成绩
from s.sc
where s.学号=sc.学号 and sc.期末成绩 is not null
group by s.学号
order by AVG (sc.期末成绩)desc