IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 实验五:数据查询及更新 -> 正文阅读

[大数据]实验五:数据查询及更新

实验五:数据查询及更新

一、实验目的
1.掌握SELECT语句的基本语法和查询条件表示方法;
2.掌握数据表的连接查询、嵌套查询、集合查询的使用方法。
3.掌握创建及管理视图的方法;
二、实验学时
2学时
三、实验要求
1.了解SELECT语句的基本语法格式和执行方法;
2.掌握连接查询、嵌套查询和集合查询的语法规则;
3.掌握使用界面方式和命令方式创建及管理视图;
4.完成实验报告;
四、实验内容
1.以实验3数据库为基础,请使用T-SQL 语句实现进行以下操作:
1)查询选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;
2)查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;
3)按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。其中已修学分为考试已经及格的课程学分之和;
4)查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;
5)查询只被一名学生选修的课程的课程号、课程名;
6)使用嵌套查询出选修了“数据结构”课程的学生学号和姓名;
7)使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;
8)使用ANY、ALL 查询,列出其他院系中比WM系所有学生年龄小的学生的姓名;
9)使用集合查询查询选修1号课程同时选修2号课程的同学的学号与姓名;
补充题目:
1)显示选修02号课程的成绩前两名的学生学号及成绩。
2)显示选修各个课程的及格的人数,及格比率;
3)显示各个院系男女生人数,其中在结果集中列标题分别指定为“院系名称、男生人数、女生人数”;
4)列出有二门以上课程(含两门)不及格的学生的学号及该学生的平均成绩;
5)显示选修课程数最多的学号及选修课程数最少的学号;

2.以实验数据库为基础数据,进行如下数据更新。

  1. 修改student表,将cs系姓名为“李咏”的学生姓名为“李勇”;
  2. 将学号为“200515010”的学生信息重新设置为“王丹丹、女、20、MA”;
  3. 修改course表,将“数据处理”的学分改为3学分;
  4. 修改CS表,将选修课程“1”的同学成绩加5分;
  5. 删除数据表student中无专业的学生记录;
  6. 删除数据表course中学分低于1学分的课程信息;

答案

1.以实验3数据库为基础,请使用T-SQL 语句实现进行以下操作:

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

use student
select a.sno,a.sname,a.sdept,c.cno,b.grade
from XSKC.student a,XSKC.sc b,XSKC.course c
where a.sno=b.sno and b.cno=c.cno and (c.cname='数学' or c.cname='大学英语'  )

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

use student
select b.*
from XSKC.student a	,XSKC.student b
where a.sname='张力'and a.sage<>b.sage

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

use student
select a.sno,a.sname,a.sdept,sum(c.ccredit) 已修学分
from XSKC.student a	,XSKC.sc b ,XSKC.course c			/*,XSKC.sc b,XSKC.course c*/
where a.sno=b.sno and  b.cno=c.cno and b.grade>=60
group by a.sno,a.sname,a.sdept;

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

use student
select b.sno,b.sname,c.cno
from XSKC.student b,XSKC.sc c
where c.cno in (
select cno
from XSKC.sc
where sno in (select sno
from XSKC.student
where sname='张力')) and b.sno=c.sno  

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

use student
select cno,cname
from XSKC.course 
where cno in(
select cno 
from XSKC.sc
group by cno
having count(*)=1
)

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

use student
select sno,sname
from XSKC.student 
where sno in
(select sno from XSKC.sc sc where sc.cno in
(select c.cno from XSKC.course c  where  c.cname='数据结构'
))

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

use student
select sname,sage,sdept 
from XSKC.student 
where sage< 
	      (select Max(sage) 
		  from XSKC.student
		   where sdept='CS') and sdept!='CS' 

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

use student
select sname
from XSKC.student 
where sage < ALL 
	       (
		   select sage 
		   from XSKC.student
		   where sdept='WM') and sdept!='WM'

9)使用集合查询查询选修1号课程同时选修2号课程的同学的学号与姓名;

use student
select sno,sname
from XSKC.student s 
where sno in
			(select sno
			 from XSKC.sc
			 where cno='1'
			 intersect
			 select sno
			 from XSKC.sc
			 where cno='2'
) 

补充题目:
1)显示选修02号课程的成绩前两名的学生学号及成绩。

use student
select  top(2) sno,grade
from XSKC.sc
where cno='2'
order by grade desc

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

use student
select
COUNT(
case 
when grade>=60 then 1
end
)各课程及格人数,

CAST(100*count(case when grade>=60 
then 1 end)/count(*) as float)及格比率

from XSKC.sc
group by cno

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

use student
select sdept 院系,count(case when ssex='男' then 1 end ) 男生人数,count( case when ssex='女' then 1 end) 女生人数
from XSKC.student
where sdept is not null
group by sdept

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

use student
select s.sno,均分=avg(grade) 
from XSKC.student s,XSKC.sc sc
where s.sno in (
			select sno
			from XSKC.sc
			where grade<60
			group by sno
			having count(*)>=2
			)and s.sno=sc.sno
group by s.sno;

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

select sno 学号,COUNT(cno)选修课程数
from XSKC.sc
group by sno

having COUNT(cno)>=all (select COUNT(cno)from XSKC.sc group by sno)
or COUNT(cno)<=all(select COUNT(cno) from XSKC.sc group by sno)

2.以实验数据库为基础数据,进行如下数据更新。

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

use student
update dbo.student_test
set sname='李勇'
where sname='李咏'

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

use student
update dbo.student_test
set sname='王丹丹',ssex='女',sage=20,sdept='MA'
where sno='200515010'

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

use student
update dbo.course_test
set ccredit=3
where cname='数据处理'

4)修改CS表,将选修课程“1”的同学成绩加5分;

use student
update dbo.sc_test
set grade=grade+5
where cno='1'
  1. 删除数据表student中无专业的学生记录;
use student
delete
from dbo.student_test
where sdept is null
  1. 删除数据表course中学分低于1学分的课程信息
use student
delete
from dbo.course_test
where ccredit<1
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:05:37  更:2022-04-15 00:10:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:02:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码