表:


查询同时选修“01”号课程和“02”号课程的所有学生的学号;

select s1.sno
from sc s1, sc s2
where s1.sno = s2.sno and s1.cno = '01' and s2.cno = '02';

按照院系降序显示所有学生的 “院系,学号、姓名、性别、年龄”等信息,其中院系按照以下规定显示:院系为CS显示为计算机系,院系为IS显示为信息系,院系为MA显示为数学系,院系为EN显示为外语系,院系为CM显示为中医系,院系为WM显示为西医系,其他显示为院系不明;

select case sdeptwhen 'CS' then '计算机系'when 'IS' then '信息系'when 'MA' then '数学系'when 'EN' then '外语系'when 'CM' then '中医系'when 'WM' then '西医系'else '院系不明'end 院系, sno 学号, sname 姓名, ssex 性别, sage 年龄
from student
order by sdept desc;

查询所有院系(要求不能重复,不包括空值),并在结果集中增加一列字段“院系规模”,其中若该院系人数>=5则该字段值为“规模很大”,若该院系人数大于等于4小于5则该字段值为“规模一般”, 若该院系人数大于等于2小于4则该字段值为“规模稍小”,否则显示“规模很小”;

select sdept 院系,case when count(*) >= 5 then '规模很大'when count(*) >= 4 then '规模一般'when count(*) >= 2 then '规模稍小'else '规模很小'end 院系规模
from student
where sdept is not null
group by sdept;

查询学生信息表中的学生总人数及平均年龄,在结果集中列标题分别指定为“学生总人数,平均年龄”;

select count(*) 学生总人数, avg(sage) 平均年龄
from student;

查询选修的课程数大于3的各个学生的选修课程数;

select sno 学号, count(*) 选修课程数
from sc
group by sno
having 选修课程数 > 3;

查询平均成绩大于“赵菁菁”平均成绩的各个学生的学号、平均成绩;

select sno 学号, avg(grade) 平均成绩
from sc
group by sno
having avg(grade) >
(select avg(grade)from student, scwhere student.sno = sc.sno and student.sname = '赵菁菁'
)

查询每个院系的学生前两条记录,并组成新表ceshi;

create table ceshiselect * from student swhere sdept is not null and 2 >(select count(*) from studentwhere sdept = s.sdept and sno < s.sno)order by s.sdept;


查询选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;

select s.sno, s.sname, s.sdept, sc.cno, sc.grade
from student s, sc
where sc.sno = s.sno and s.sno in
(select s.sno from course c, student s, sc where sc.sno = s.sno and sc.cno = c.cno and (c.cname = '数学' or c.cname = '大学英语')
);

查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;

select *
from student
where sage <>
(select sagefrom studentwhere sname = '张力'
);

按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。其中已修学分为考试已经及格的课程学分之和;

select s.sno 学号, s.sname 姓名, s.sdept 所在院系, sum(c.ccredit) 已修学分
from student s, course c, sc
where s.sno = sc.sno and c.cno = sc.cno and sc.grade >= 60
group by s.sno;

查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;

select s.sno 学号, s.sname 姓名, sc.cno 课程号
from student s, sc
where s.sno = sc.sno and s.sno in
(select s.snofrom student s, scwhere s.sno = sc.sno and sc.cno in(select sc.cnofrom sc, student swhere s.sno = sc.sno and s.sname = '张力')
);

查询只被一名学生选修的课程的课程号、课程名;

select cno, cname
from course
where cno in
(select cnofrom scgroup by cnohaving count(*) = 1
);

使用嵌套查询出选修了“数据结构”课程的学生学号和姓名;

select sno, sname
from student
where sno in
(select s.snofrom student s, sc, course cwhere sc.sno = s.sno and sc.cno = c.cno and c.cname = '数据结构'
);

使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;

select sno, sage, sdept
from student
where sdept <> 'CS' and sage < any(select sage from student where sdept = 'CS'
);

显示选修各个课程的及格的人数,及格比率;

select cno, sum(case when grade >= 60 then 1 else 0 end) 及格人数,sum(case when grade >= 60 then 1 else 0 end) / count(*) 及格比率
from sc
group by cno;

使用ANY、ALL 查询,列出其他院系中比WM系所有学生年龄小的学生的姓名;

select sname
from student
where sage < all(select sagefrom studentwhere sdept = 'WM'
);

显示各个院系男女生人数,其中在结果集中列标题分别指定为“院系名称、男生人数、女生人数”;

select sdept 院系名称,sum(case ssex when '男' then 1 else 0 end) 男生人数,sum(case ssex when '女' then 1 else 0 end) 女生人数
from student
group by sdept;

列出有二门以上课程(含两门)不及格的学生的学号及该学生的平均成绩;

select sno, avg(grade)
from sc
group by sno
having sum(case when grade < 60 then 1 else 0 end) >= 2;

显示选修课程数最多的学号及选修课程数最少的学号;

select sno, count(*)
from sc
group by sno
having count(*) >= all(select count(*) from sc group by sno)or count(*) <= all(select count(*) from sc group by sno);

修改student表,将cs系姓名为“李咏”的学生姓名为“李勇”;

update student
set sname = '李勇'
where sname = '李咏' and sdept = 'CS';

将学号为“200515010”的学生信息重新设置为“王丹丹、女、20、MA”;

update student
set sname = '王丹丹', ssex = '女', sage = 20, sdept = 'MA'
where sno = '200515010';

修改course表,将“数据处理”的学分改为3学分;

update course
set ccredit = 3
where cname = '数据处理';

修改sc表,将选修课程“01”的同学成绩加5分;

update sc
set grade = grade + 5
where cno = '01';

删除数据表student中无专业的学生记录;

delete
from student
where sdept is null;

sql 数据查询练习 实验题相关推荐

  1. Hive SQL数据查询基础

    教材第四章Hive SQL数据查询基础实验 提示:如果感觉sogou.500w.utf8文件太大,执行hive命令太耗时间,可以执行以下命令,截取前1万行数据,生成一个新的数据文件sogou.1w.u ...

  2. 《数据库原理》实验六 SQL数据查询实验

    本系列传送门: 实验二 SQL Server SSMS工具创建和管理数据库及数据表 实验三 SQL Server SSMS工具添加数据 实验四 SQL的数据定义语句 实验五 数据库完整性约束的实现与验 ...

  3. SQL 数据查询(5)—— 集合查询、基于派生表的查询、数据更新、视图

    文章目录 集合查询 基于派生表的查询 数据更新 插入数据 插入元组 插入子查询的结果 修改数据 删除数据 删除一个元组的值 删除多个元组的值 空值的处理 空值的产生 空值的算术运算.比较运算和逻辑运算 ...

  4. MySQL学习记录 (二) ----- SQL数据查询语句(DQL)

    相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...

  5. SQL数据查询之——单表查询

    一.SQL数据查询的一般格式 数据查询是数据库的核心操作.SQL提供了SELECT语句进行数据查询,其一般格式为: SELECT [ALL | DISTINCT]<目标列表达式>[,< ...

  6. 浅显易懂 SQLite3 笔记(03)— SQL数据查询(超级详细)

    文章目录 前言 一.单表查询 1. 选择表中的若干列(投影) 2. 选择表中的若干元组(选择) 3.ORDER BY 子句 4.聚集函数 5.GROUP BY 子句 二.连接查询 1.等值连接 2.自 ...

  7. 学习SQL数据查询,这一篇就够了!

    [任务概述] 建立数据库的目的主要是为了对数据库进行操作,以便能够从中提取有用的信息,而数据查询则是数据库操作的核心. 扩展阅读:<学习SQL数据更新,这一篇就够了!> 文章目录 一.SQ ...

  8. SQL数据查询——单表查询(二)

    集合查询+单表查询相关实例 集合查询 1.UNION 2.INTERSECT 3.EXCEPT 相关实例 实例1 实例2 集合查询 SQL SERVER集合操作主要包括 并操作 UNION 交操作 I ...

  9. EZDML的SQL数据查询功能介绍

    EZDML自带了一个SQL查询工具,当然它比较简单,不能代替我们常用的开发工具,但在救急时也能当个临时工,同时它跟模型结合来做一些数据查询操作也非常方便.接下来我们以之前导入过的MES模型为例简单介绍 ...

最新文章

  1. python接口自动化用例管理_python接口自动化测试(六)-unittest-单个用例管理
  2. java生日正则表达式_Java编程基础15——正则表达式常用工具类
  3. 青蛙学Linux—Zabbix Agent的主动模式和被动模式
  4. php自动加载机制简述,PHP自动加载机制实例详解
  5. java初学者必看经典
  6. xenomai linux测试,Xenomai 实时线程 select 测试
  7. 开源安卓播放器:Dolphin Player 简单分析
  8. Win32汇编——过程控制(进程调试和进程隐藏)
  9. PWN--collision
  10. 在服务器上log4net没写日志
  11. AppStore下载Xcode的文件
  12. ci框架 乱码 mysql_CodeIgniter(CI)发邮件标题中文乱码解决方案
  13. 腾讯手游助手选择不了服务器失败,腾讯手游助手启动模拟器失败的解决方法
  14. 这2个方法能将CAJ免费完整转换成Word
  15. Jenkins基础:Jenkinsfile使用实例:12:使用docker.build构建镜像
  16. 煤矿矿长相当于什么级别?
  17. 未来的电子计算机作文300字,未来的校园科幻作文300字(精选3篇)
  18. 关于微信小程序 Error: errCode: -501001 resource system error | errMsg: Environment not found; 错误解决方案
  19. 解码保存全部BMP图像
  20. 如何保存视频会议画面内容?视频会议截图功能

热门文章

  1. 红米note电信版root
  2. ERROR 1045 (28000): Access denied for user ‘byf‘@‘localhost‘ (using password: YES) 配置文件修改后依然无法登录问题
  3. C. Discrete Acceleration
  4. wait for stopper event to be increased 等待事件
  5. linux 线程迁移_迁移线程如何在Linux内核内部工作
  6. kali突然连不上网络的解决方案
  7. ADAS系统传感器应该如何布置?
  8. 【20G】Kaggle数据集强势分析“绝地求生”,攻略吃鸡!
  9. 社群团购,一个单品一天卖了200万,爆品模型打造的3个核心点
  10. 哈哈日语 | 超实用商务日语问题