MySQL单表查询

(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

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值