基于SqlServer的DML(数据查询)实验,掌握select查询语句的使用、掌握有无条件查询、结果排序与分组、掌握视图用法

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

where Sname like ‘刘%’

在这里插入图片描述

9 查询课程名为“DB_设计”的课程号(Cno)和学分(Credits)。其命令为:

select Cno as 课程号 , Gredits as 学分 from Courses

where Cname=‘DB_设计’

在这里插入图片描述

10 查询以"DB_"开头,且倒数第2个汉字字符为“设”的课程的详细情况。其命令为:

select * from Courses

where Cname like ‘DB_%设_‘ESCAPE’’

在这里插入图片描述

11假设某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。试查询缺少成绩的学生的学号(Sno)和相应的课程号(Cno)。其命令为:

select Sno as 学生号,Cno as 课程号 from Reports

where Grade is NULL

在这里插入图片描述

12 查询全体学生情况,查询结果按所在系的系名(Sdpet)升序排列,同一系中的学生按年龄(Sage)降序排列。其命令为:

select * from Students

order by Sdept desc,Sage asc

在这里插入图片描述

13 查询学生总人数。其命令为:

select count(Sno) as 学生总人数 from Students

在这里插入图片描述

14 查询选修了课程的学生人数。其命令为:

select count(distinct Sno) as 人数 from Reports

where Cno in(select Cno from Courses where Pre_Cno is not null)

在这里插入图片描述

15 计算选修C01号课程的学生平均成绩。其命令为:

select avg(Grade)as C01课程平均成绩 from Reports

where Cno=‘C01’

在这里插入图片描述

16 查询选修C01号课程的学生最高分数。其命令为:

select max (Grade) as C01课程最高分 from Reports

where Cno=‘C01’

在这里插入图片描述

17 计算每门课程的平均成绩、最高分、最低分和总分。其命令为:

select Courses.Cname AS 课程名,avg(Reports.Grade) as 平均成绩,max(Reports.Grade) as 最高成绩,min(Reports.Grade) as 最低成绩

from Reports,Courses

group by Courses.Cname

在这里插入图片描述

第二部分:

1.从Students表中建立查询所有男(女)生信息的视图STU_SEX。视图的列名为SNO、SNAME、SSEX和SAGE。

代码: CREATE VIEW STU_SEX(SNO,SNAME,SSSEX,SAGE)

as Select Sno,Sname,Ssex,Sage from Students

在这里插入图片描述

2.从Courses表中建立查询所有课程先修课信息的视图课程Courses_PRE。视图的列名为课程号、课程名称和先修课名称。

代码:CREATE VIEW Courses_PRE(课程号,课程名称,先修课名称) AS

SELECT Cno,Cname,(select Cname from Courses as Courses1 where Courses1.Cno=Courses.Pre_Cno)

from Courses

在这里插入图片描述

3.从Reports表中建立查询成绩大于等于80信息的视图STU_CJ1。视图的列名为学号、课程号和成绩。

代码:CREATE VIEW STU_CJ1 as

select * FROM Reports

where Grade>80 OR Grade=80

在这里插入图片描述

4.从Students、Reports和Courses三个表建立查询学生选修情况的视图STU_CJ2。视图的列名为姓名、课程名称和成绩。

代码:CREATE VIEW STU_CJ2 as

select Students.Sname as 姓名,Courses.Cname as 课程名称,Reports.Grade as 成绩

from Students,Courses,Reports

where Reports.Sno=Students.Sno and Reports.Cno=Courses.Cno

在这里插入图片描述

5.从Students、Reports和Courses三个表建立查询学生选修情况并且成绩小于80的视图STU_CJ3。视图的列名为姓名、课程名称和成绩。

第5题是在第4题基础上修改的

代码:CREATE VIEW STU_CJ3(姓名,课程名称,成绩) as

select * from STU_CJ2

where 成绩<80

在这里插入图片描述

6.利用Transact-SQL命令修改视图STU_SEX。把视图的列名改为学号、姓名、性别

和年龄,加上“WITH CHECK OPTION”选项。

代码: alter view STU_SEX as

select Sno as 学号, Sname as 姓名, Ssex as 性别, Sage as 年龄 from Students

WITH CHECK OPTION

在这里插入图片描述

7.删除视图STU_CJ3。

drop view STU_CJ3

在这里插入图片描述

8.建立自动化系学生视图STU_Auto1,带有WITH CHECK OPTION。

Create view STU_Auto1 as

select * from Students where Sdept=‘自动化’

WITH CHECK OPTION

在这里插入图片描述

9.建立自动化系学生视图STU_Auto2。

该视图相比上一个视图不带WITH CHECK OPTION

Create view STU_Auto2 as

select * from Students where Sdept=‘自动化’

在这里插入图片描述

  1. 往STU_Auto1添加数据:

①学号为S15、姓名为陈婷、性别为女、年龄为21,自动化系;

insert into STU_Auto1 values(‘S15’,‘陈婷’,‘女’,21,‘自动化’)

②学号为S17、姓名为周奕、性别为女、年龄为21,计算机系。

插入失败

insert into STU_Auto1 values(‘S17’,‘周奕’,‘女’,21,‘计算机系’)

在这里插入图片描述

11.往STU_Auto2添加数据:

①学号为S18、姓名为陈大敏、性别为男、年龄为21,自动化系;

insert into STU_Auto2 values(‘S18’,‘陈大敏’,‘男’,21,‘自动化’)

②学号为S19、姓名为马小帅、性别为男、年龄为21,计算机系;

insert into STU_Auto2 values(‘S19’,‘马小帅’,‘男’,21,‘计算机系’)

注意:比较11题、10题,如遇到问题,分析原因,并解决之。

第11题中相比第10题中2条语句都能插入成功了,主要是因为第10题中第2条语句不满足视图创建时候WITH CHECK OPTION。语句中,要满足谓词也就是子查询中的条件Sdept=‘自动化’,如果想要解决问题可以修改视图,修改语句是把子查询语句中条件语句where Sdept=‘自动化’,语句去掉,或者插入时候Sdept,要满足部门名称都是自动化系的学生

修改语句是:alter view STU_Auto1 as

select * from Students

WITH CHECK OPTION

修改后:

在这里插入图片描述

12.在STU_Auto1上,修改陈婷的年龄为20。

update STU_Auto1 set Sage=20

总结

在这里,由于面试中MySQL问的比较多,因此也就在此以MySQL为例为大家总结分享。但是你要学习的往往不止这一点,还有一些主流框架的使用,Spring源码的学习,Mybatis源码的学习等等都是需要掌握的,我也把这些知识点都整理起来了

面试真题

Spring源码笔记

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

由于面试中MySQL问的比较多,因此也就在此以MySQL为例为大家总结分享。但是你要学习的往往不止这一点,还有一些主流框架的使用,Spring源码的学习,Mybatis源码的学习等等都是需要掌握的,我也把这些知识点都整理起来了

[外链图片转存中…(img-j09VeaPk-1713695069793)]

[外链图片转存中…(img-QMPhzZ1L-1713695069794)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-FQ2pbstY-1713695069794)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 15
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值