数据库系统--T-SQL数据查询功能-单表查询(超详细/设计/实验/作业/练习)

课程名:数据库系统

内容/作用:设计/实验/作业/练习

学习:T-SQL数据查询功能-单表查询

一、前言

(1)熟悉使用Select…from语句进行单表数据查询;
(2)能将这些更新操作应用于实际操作中去。
(3)掌握Where语句、order by语句、group by语句、having语句的使用方法

二、环境与设备

1、设备:Windows 10
2、软件:MySQL 8.0和Navicat 12 for MySQL

三、原理

  数据库与表之间的关系:数据库是由各种数据表组成的,数据表是数据库中最重要的对象,用来存储和操作数据的逻辑结构。
  SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,是一个综合的、通用的、功能极强的,同时又简洁易学的语言。

select distinct  输出字段名列表
from 表名
where 筛选条件
group by 字段名|表达式|输出字段名的序号
having 分组后的条件
limit	<偏移量(起始行号),行数>
order by 排序字段名|输出字段名的序号 acs|desc(升序|降序)

注意:	(1)若输出表中全部字段,则可使用*代替
		(2)查询结果消除重复值distinct
		(3)limit语句中的偏移量(起始行号)默认从0开始
		(4)字段重命名:字段名|表达式   as  新名字
		(5)聚合函数的使用:count-个数、sum-求和、avg-平均值、max-最大值、min-最小值

常用函数:year()-求年份   now()—返回系统日期时间

四、内容

  题目:

–1、从教务管理数据库“EDUC”的学生表“Student”中查询出男生的学号、姓名、性别的数据信息。
–2、从教务管理数据库“EDUC”的课程表“Course”中查询出前3行数据。
–3、从教务管理数据库“EDUC”的学生表“Student”中查询出所有女生的信息。
–4、 从教务管理数据库“EDUC”的课程表“Course”中查询出学校各类学分信息。
–5、从教务管理数据库“EDUC”的学生表“Student”中查询出前3行数据。
–6、从教务管理数据库“EDUC”的课程“Course”表里查询出学分对应的课程学时(假设每18学时计1学分),显示前5行。
–7、从学生表“Student”中统计出男生的人数。
–8、从选课表“Sc”中统计出选课过的课程门数。
–9、从学生表“Student”中统计出学生的总数、录取分数“AScores”的最高分、最低分、总分(无实际意义,仅为举例)和平均分。
–10、查询年龄只有22岁的学生信息,列出学号,姓名,年龄
–11、查询1995年和1996年出生的学生信息,结果包含学号,姓名出生年份
–12、查询入校成绩在450-500之间的学生信息,列出学号,姓名,入校成绩
–13、 查询姓王的学生信息,列出姓名
–14、查询课程名中包含“面向”两字的课程信息。列出课程名
–15、查询出生日期为空的学生信息
–16、查询入校成绩大于450的男生信息
–17、查询同时选修了1610和1611课程的学生,列出学号
–18、查询选课成绩不及格和选课成绩优秀(>=90)的选课信息
–19、分别统计男生和女生的人数,结果显示性别和人数
–20、查询各门课程的选课人数,结果显示课程号和人数
–21、查询每个学生的选课门数,结果显示学号和选课门数
–22、查询选课人数超过2人(大于等于2)的课程信息,列出其课程号

–23、统计选修的各门课程成绩情况,要求列出各门课程的课程号、最高分、最低分、总分和平均分
–25、查询每门课程及格的学生人数,列出课程号和及格人数
–26、查询1996年后出生的学生信息,列出各年份出生的学生人数,结果包含:年份、人数;同时按人数降序排列

  答案:

//-----1,从教务管理数据库“EDUC”的学生表“Student”中查询出男生的学号、姓名、性别的数据信息。

select 
  sno as 学号,sname as 姓名,year(birthdate) as 年份
from student

//-----2、从教务管理数据库“EDUC”的课程表“Course”中查询出前3行数据。

select *
from course
limit 0,3

//-----3、从教务管理数据库“EDUC”的学生表“Student”中查询出所有女生的信息。

select *
from student
where sex='女'

//-----4、 从教务管理数据库“EDUC”的课程表“Course”中查询出学校各类学分信息。

select *
from course
where credit

//-----5、从教务管理数据库“EDUC”的学生表“Student”中查询出前3行数据。

select *
from student
limit 0,3

//-----6、从教务管理数据库“EDUC”的课程“Course”表里查询出学分对应的课程学时(假设每18学时计1学分),显示前5行。

select *
from course
where credit
limit 0,5

//-----7、从学生表“Student”中统计出男生的人数。

select count(sex)
from student
where sex='男'

//-----8、从选课表“Sc”中统计出选课过的课程门数。

select count(distinct cid)
from sc
where cid

//-----9从学生表“Student”中统计出学生的总数、录取分数“AScores”的最高分、最低分、总分(无实际意义,仅为举例)和平均分。

select count(sno),max(ascore),min(ascore),sum(ascore),avg(ascore)
from student

//----10、查询年龄只有22岁的学生信息,列出学号,姓名,年龄

select sno,sname,2021-year(birthdate) as 年龄
from student

–11、查询1995年和1996年出生的学生信息,结果包含学号,姓名出生年份

select sno,sname,year(birthdate)
from student
where year(birthdate) between 1995 and 1996

–12、查询入校成绩在450-500之间的学生信息,列出学号,姓名,入校成绩

select sno,sname,ascore
from student
where ascore between 450 and 500

–13、 查询姓王的学生信息,列出姓名

select sname,sno,sex
from student
where sname like '王%'

–14、查询课程名中包含“面向”两字的课程信息。列出课程名

select cname
from course
where cname like '%面向%'

–15、查询出生日期为空的学生信息

select *
from student
where birthdate = ''

–16、查询入校成绩大于450的男生信息

select ascore
from student
where sex='男' AND ascore>450

–17、查询同时选修了1610和1611课程的学生,列出学号

select sno,count(sno)
from sc
where cid='1610'or cid='1611'
group by sno
having count(sno)=2

–18、查询选课成绩不及格和选课成绩优秀(>=90)的选课信息

select *
from sc
where scores<60 or scores>90

–19、分别统计男生和女生的人数,结果显示性别和人数

select sno,count(*)
from student
group by sex

–20、查询各门课程的选课人数,结果显示课程号和人数

select cid,count(cid)
from sc
group by cid

–21、查询每个学生的选课门数,结果显示学号和选课门数

select sno,count(sno)
from sc
group by sno

–22、查询选课人数超过2人(大于等于2)的课程信息,列出其课程号

select cid,count(cid)
from sc
group by cid
having count(sno)>2

–23、统计选修的各门课程成绩情况,要求列出各门课程的课程号、最高分、最低分、总分和平均分

select cid,max(scores),min(scores),sum(scores),avg(scores)
from sc
group by cid

–25、查询每门课程及格的学生人数,列出课程号和及格人数

select cid,count(sno)
from sc
where scores>60
group by cid

–26、查询1996年后出生的学生信息,列出各年份出生的学生人数,结果包含:年份、人数;同时按人数降序排列

select year(birthdate) as 年份,count(year(birthdate)) as 人数
from student
where year(birthdate)>1996
group by year(birthdate)
order by count(year(birthdate)) desc
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员老茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值