数据库的查询(一)

一、实验目的

1.熟悉SQL Server数据库中的数据查询、统计、分组、排序等操作。

2.掌握使用查询分析器数据进行简单查询、连接查询、嵌套查询和组合查询

二、实验仪器

计算机、SQL Server 2019软件,U盘(学生自备)。

三、实验原理

1.启动数据库服务软件SQL Server 2019的查询分析器,用SELECT语句对表进行简单查询操作,整个查询过程只涉及到一个表,是最基本的查询语句。

2.用SELECT语句对表进行连接查询操作,连接查询涉及被连接和连接两个表,所以数据源一般为多个表。

3.用SELECT语句对表进行嵌套查询操作,一个Select…From…Where语句称为一个查询块,将一个查询块嵌套在另一个查询块的Where子句或Having短语的条件中的查询,就是嵌套查询。主要有使用In操作符、使用比较运算符的嵌套查询方式。

4.用SELECT语句对表进行组合查询操作,将SELECT语句的查询结果集再进行集合运算就构成了SQL的组合查询。组合查询操作符有Union(并操作)、Intersect(交操作)和Minus(差操作)。

  • 实验内容

1.具体操作任务

(1)打开数据库SQL Server 2019的查询分析器。

(2)用INSERT语句向表xs_kc中插入记录

利用以前建立的xs,kc,xs_kc进行查询。

2.简单查询

(1)查询全体学生的详细记录;

(2)查询所有选修过课的学生的学号;

(3)查询考试成绩不及格的学生的学号;

(4)查询通信工程和计算机科学系的学生的姓名和性别;

(5)查询所有姓王的学生的姓名、学号和性别;

(6)查询“计算机基础”课程的课程号和学分;

(7)查询选修了101号课程的学生的学号及其成绩,查询结果按分数降序排列;

(8)查询选修了102号课程的学生的最高分数;

(9)查询xs表中计算机科学系学生的学号、姓名、总学分,结果中各列的标题分别指定为number,name,mark;

(10)对xs表中数据只选择专业名和总学分;

(11)查询xs表中姓名、专业名和总学分,只返回结果集的前5行;

(12)查询xs表中总学分尚未确定的学生情况;

(13)查询通信工程专业总学分大于等于42分的学生情况;

  • 小结

    本次实验的重点在于查询数据,由于现实生活中数据的庞大性和所需要的数据的多样性,导致了查询语句也要满足各种需求。比如本次实验涉及到取最大值、去掉重复值、升降序操作等,尤其是在指定查询结果的标题时,由于对这个操作很陌生,所以不得不借助网络资源来完成学习并成功查询。这些查询语句虽然多样,但是也具有很多共性,它们的主体框架是一样的,所以只需要根据自己的需要来增加一定的操作即可。而这部分也是数据库的应用中非常重要的一部分,所以需要多练习多应用。

实验报告:

实验题目:数据库的查询(一)

  • 实验目的

1.熟悉SQL Server数据库中的数据查询、统计、分组、排序等操作。

2.掌握使用查询分析器数据进行简单查询、连接查询、嵌套查询和组合查询

  • 实验内容步骤

1.具体操作任务

(1)打开数据库SQL Server 2019的查询分析器。

(2)用INSERT语句向表xs_kc中插入记录,利用以前建立的xs,kc,xs_kc进行查询。

代码:insert into dbo.xs_kc

values 

(001101,101,74),

(001102,101,83),

(001103,102,91),

(001103,101,56),

(001104,103,88);

2.简单查询

(1)查询全体学生的详细记录;

代码:select *

from dbo.xs;


  1. 查询所有选修过课的学生的学号;

    

   代码:select distinct(sno)

from dbo.xs_kc;

  1. 查询考试成绩不及格的学生的学号;

代码:select distinct(sno)

from dbo.xs_kc

where grade<60;

  1. 查询通信工程和计算机科学系的学生的姓名和性别;

代码:select sname,ssex

from dbo.xs

where sdept='is' or sdept='CE';

  1. 查询所有姓王的学生的姓名、学号和性别;

代码:select sno,sname,ssex

from dbo.xs

where sname like '王%';

  1. 查询“计算机基础”课程的课程号和学分;

代码:select cno,Ccredit

from dbo.kc

where cname='计算机基础'; 

  1. 查询选修了101号课程的学生的学号及其成绩,查询结果按分数降序排列;

代码:select sno,grade

from dbo.xs_kc

where cno='101'

order by grade desc; 

  1. 查询选修了102号课程的学生的最高分数;

代码:select max(grade)

from dbo.xs_kc

where cno='102';

  1. 查询xs表中计算机科学系学生的学号、姓名、总学分,结果中各列的标题分别指定为number,name,mark;

代码:select sno as'number',sname as'name',scredit as'mark'

from dbo.xs

where sdept='is';

  1. 对xs表中数据只选择专业名和总学分;

代码:select sdept,scredit

from dbo.xs;

  1. 查询xs表中姓名、专业名和总学分,只返回结果集的前5行;

代码:select top 5 sname,sdept,scredit

from dbo.xs ;

  1. 查询xs表中总学分尚未确定的学生情况;

代码:select * 

from dbo.xs

where scredit is null;

  1. 查询通信工程专业总学分大于等于42分的学生情况;

代码:select * 

from dbo.xs

where scredit>=42 and sdept='CE';

三、实验数据的记录及处理

以上操作内容使用SQL语句编程并运行成功后,将程序进行记录,并写在报告纸上。

1.(2)代码

insert into dbo.xs_kc

values

(001101,101,74),

(001102,101,83),

(001103,102,91),

(001103,101,56),

(001104,103,88);

2.(1)代码:

select *

from dbo.xs;

2.(2)代码:

select distinct(sno)

from dbo.xs_kc;

2.(3)代码:

select distinct(sno)

from dbo.xs_kc

where grade<60;

2.(4)代码:

select sname,ssex

from dbo.xs

where sdept='is' or sdept='CE';

2.(5)代码:

select sno,sname,ssex

from dbo.xs

where sname like '王%';

2.(6)代码:

select cno,Ccredit

from dbo.kc

where cname='计算机基础';

2.(7)代码:

select sno,grade

from dbo.xs_kc

where cno='101'

order by grade desc;

2.(8)代码:

select max(grade)

from dbo.xs_kc

where cno='102';

2.(9)代码:

select sno as'number',sname as'name',scredit as'mark'

from dbo.xs

where sdept='is';

2.(10)代码:

select sdept,scredit

from dbo.xs;

2.(11)代码:

select top 5 sname,sdept,scredit

from dbo.xs ;

2.(12)代码:

select *

from dbo.xs

where scredit is null;

2.(13)代码:

select *

from dbo.xs

where scredit>=42 and sdept='CE';

四、思考题

1.top主要应用场合是什么?

答:TOP关键字在SQL语言中用来限制返回结果集中的记录条数,其使用方法有两种形式:

  1. 返回确定数目的记录个数,其语法格式: SELECT TOP n <列名表> FROM <表名> [查询条件],其中,n为要返回结果集中的记录条数
  2. 返回结果集中指定百分比的记录数,其语法格式: SELECT TOP n PERCENT <列名表> FROM <表名> [查询条件],其中,n为所返回的记录数所占结果集中记录数目的百分比数
  1. 可以代替between用法的语句或符号是什么?举例说明。

答:可以用 <= 和 >= 来代替BETWEEN AND 

 例如:查询年龄在20—23岁(包括20和23岁)之间的学生的姓名,系别和年龄:

SELECT Sname,sdept,sage

FROM xs

WHERE sage BETWEEN 20 AND 23;

可以替换为:

SELECT Sname,sdept,sage

FROM xs

WHERE sage >= 20 AND sage <= 23;

五、实验过程中遇到的问题及解决方法

本次实验是为了完成数据库中的数据查询、统计、分组、排序等操作,在查询所有选修过课的学生的学号的操作时,由于存在一个学生选修了多门课程,所以需要使用distinct语句去掉重复值;查询通信工程和计算机科学系的学生的姓名和性别时,由于两个系是并列的关系,所以要使用or来连接,而初次写代码时误用了and;‘like’和‘=’之间还是存在区别的,这一点通过实验可以发现;最陌生的一点就是在进行指定查询后的数据的列名的操作,这个语句之前并不知道,所以在网络上进行了查询,最后找到了对应的语句成功的完成了查询。本次实验由于用到了很多新的查询方式,所以课本上的例题和网络资源成为了我解决问题的主要信息来源。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值