【实验四】【使用Select 语句查询数据】

数据

这里为了体现查询语句的效果,下面根据查询语句的要求设计数据,结果如下:

KC表:
在这里插入图片描述

XSQK表:
在这里插入图片描述

XS_KC表:
在这里插入图片描述

  1. 打开“SQL Server Management Studio”窗口。
  2. 单击“标准”工具栏的“新建查询”按钮,打开“查询编辑器”窗口
  3. 在窗口中输入以下SQL查询命令并执行:

一、简单查询

a.在KC表中,查询第2学期开课的课程、授课教师

select  课程名, 授课教师, 开课学期
from  kc
where  开课学期=2

在这里插入图片描述

b.在XSQK表中,查询女同学的姓名和电话号码

select  姓名, 性别, 联系电话
from  xsqk
where  性别='女'

在这里插入图片描述

c.在XS_KC表中,查询成绩在80分以上的学号、课程号和成绩

select  学号, 课程号, 成绩
from  xs_kc
where  成绩>=80

在这里插入图片描述

d.在XS_KC表中,查询在80以上和不及格学生的信息

select  学号, 课程号, 成绩
from  xs_kc
where  成绩>=80  or 成绩<60

在这里插入图片描述

e.在XSQK表中,查询不在1980年7、8、9月出生的学生信息

select  学号, 姓名, 出生日期
from  xsqk
where  出生日期 not  between '1980-07-07' and '1980-09-30'

在这里插入图片描述

f. 在XSQK表中,查询陈姓且单名的信息

select  *
from  xsqk
where  姓名  like  '陈_'

在这里插入图片描述

g.在XSQK表中,查询学号中含有1的记录信息

select  *
from  xsqk
where  学号 like '%1%'

在这里插入图片描述

h.在XSQK表中,查询电话号码中非末位含有4或6的记录信息

select  *
from  xsqk
where  联系电话  like  '%[4,6]%[^4,6]'

在这里插入图片描述

i.在KC表中,查询第一、三、五学期开设的课程信息

select  *
from  kc
where  开课学期 in (1, 3, 5)

在这里插入图片描述

j.查询XSQK表,输出学号、姓名、出生日期、并使查询结构按出生日期升序排列

select 学号, 姓名, 出生日期
from  xsqk    order  by  出生日期

在这里插入图片描述

二、汇总查询

a.在KC表中,统计每学期的总分数

select  开课学期, sum(学分)  as  '各学期的学分合计'
from  kc
group by  开课学期

在这里插入图片描述

b.在XS_KC表中,统计每个学生的选修课程的门数

select  学号, count(*)  as  '每个学生选修的课程门数'
from  xs_kc
group by  学号

在这里插入图片描述

c.将XS_KC表中的数据记录按学号分类汇总,输出学号和平均分

select 学号, avg(成绩)  as  '学生的平均分'
from  xs_kc
group by  学号

在这里插入图片描述

d.查询平均分大于70且小于80的学生学号和平均分

select  学号, avg(成绩)  as  '学生的平均分'
from  xs_kc
group by  学号
having  avg(成绩)  between  70  and  80

在这里插入图片描述

e.查询XS_KC表,输出学号、课程号、成绩,并使查询结果首先按照课程号的升序排列,当课程号相同时再按照成绩降序排列,并将查询结果保存到新表TEMP_KC中

select  学号, 课程号, 成绩
into  temp_kc
from  xs_kc
order by  课程号, 成绩 desc

在这里插入图片描述
这里因为数据没有考虑周全,暂时没有体现“当课程号相同时再按照成绩降序排列”。

f.查询选修了“101”课程的学生的最高分和最低分

select  max(成绩)  as  '101课程的最高分', min(成绩)  as  '101课程的最低分'
from  xs_kc
where  课程号='101'

在这里插入图片描述

g.统计每个学期所开设的课程门数

select  开课学期, count(*)  as  '每学期开设的课程门数'
from  kc
group by  开课学期

在这里插入图片描述

h.查询各专业的学生人数

select  专业名, count(专业名)  as  '各专业人数'
from  xsqk
group by  专业名

在这里插入图片描述

三、连接查询和子查询

a.查询不及格学生的学号、课程名、授课教师、开课学期的信息

select  学号, xs_kc.课程号, 授课教师, 开课学期, 成绩
from  kc, xs_kc
where  kc.课程号=xs_kc.课程号  and 成绩<60

在这里插入图片描述

b.按学号分组汇总总分高于100的学生记录,并按总分的降序排列

select  学号, sum(成绩)  as  '各学生的总分'
from  xs_kc
group by  学号
having  sum(成绩)>=100
order by  sum(成绩)  desc

在这里插入图片描述

c.使用子查询求恰好有两门课程不及格的学生信息

select  学号, 姓名
from  xsqk
where  (select  count(课程号)
from  xs_kc
where   xsqk.学号=xs_kc.学号 and 成绩<=60 )=2

在这里插入图片描述

d.使用子查询查询每门课程的最高分的学生记录

select  *
from  xs_kc  a
where 成绩=(select  max(成绩)
from  xs_kc  b
where  b.课程号=a.课程号)

在这里插入图片描述

e.使用子查询查询每个学生的最低分的课程记录

select  *
from  xs_kc  a
where 成绩=(select  min(成绩)
from  xs_kc  b
where  b.学号=a.学号)

在这里插入图片描述

  • 6
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、实验目的 1.掌握SQL Server 2005的安装。 2.掌握SQL Server Management Studio的启动和使用。 3.掌握SQL Server 2005服务器的配置和注册。 4.掌握SQL Server 2005查询的基本使用。 5.掌握应用SQL Server Management Studio创建数据库的方法。 6.掌握应用SQL Server Management Studio修改和查看数据库的方法。 7.掌握应用SQL Server Management Studio删除数据库的方法。 8.掌握应用Transact-SQL语句创建数据库的方法。 9.掌握应用Transact-SQL修改和查看数据库的方法。 10.掌握通过Transact-SQL删除数据库的方法。 11.掌握SQL Server 2005数据库和操作系统物理文件的关系。 12.掌握数据库的分离和附加方法。 二、实验内容 1.完成SQL Server 2005开发版的安装。 提示:若计算机系统中已经安装有SQL Server 2005系统,则在安装时需要选择安装命名实例。安装过程中身份验证模式选择“混合模式”并设置sa账户的密码。 2.利用SQL Server配置管理器启动、停止SQL Server服务(包括默认实例和命名实例),配置SQL Server服务为自动启动。 3.利用SQL Server配置管理器配置进行SQL Server 2005网络配置,启用默认实例和命名实例的TCP/IP协议。 4.利用SQL Server外围配置器配置数据库引擎的服务及远程连接,设置为“本地连接和远程连接”,选择“同时使用TCP/IP和named pipes”。 5.利用SQL Server Management Studio注册安装的命名实例。 6.利用SQL Server Management Studio注册远程服务器。 提示:注册远程服务器时需要使用混合验证模式,利用sa账户和密码登录远程服务器。 7.启动SQL Server Management Studio,连接到服务器。新建一个查询,在其中输入如下代码: DECLARE @position int, @string char(5) SET @position = 1 SET @string = 'China' WHILE @position <= DATALENGTH(@string) BEGIN SELECT SUBSTRING(@string, @position, 1) 字符, ASCII(SUBSTRING(@string, @position, 1)) ASCII码 SET @position = @position + 1 END
1、使用SQL Server 2000企业管理器和查询分析器工具(即用Transact-SQL语句)创建一个“图书读者数据库”(Book_Reader_DB); 2、使用企业管理器查看Book_Reader_DB的数据库属性,并进行修改,使之符合你的要求; 3、使用企业管理器和在查询分析器中用Transact-SQL语句的两种方法建立图书、读者和借阅三个表,其结构为: 图书(书号,类别,出版社,作者,书名,定价,备注); 读者(编号,姓名,单位,性别,话); 借阅(书号,读者编号,借阅日期)。 要求:① 对每个属性选择合适的数据类型;② 定义每个表的主码、是否允许空值和默认值等列级数据约束;③ 对每个表的名字和表中属性的名字尽可能用英文符号标识。 4、实现相关约束:①使用企业管理器来建立上述三个表的联系,即实现:借阅表与图书表之间、借阅表与读者表之间的外码约束;② 实现读者性别只能是“男”或“女”的约束。 5、分别用企业管理器和查询分析器修改表的结构。在“图书”表中,增加两个字段,分别为“数量”和“购买日期”。在“借阅”表中增加一个“还书日期”字段。 6、用企业管理器在上述三个表中输入部分虚拟数据。 7、在查询分析器中实现基于单个表的查询select * from Book ② select * from book where Bclass=’计算机’ ③ select count(*) from book group by Bclass ④ select * from Reader ⑤ select * from Borrow ⑥ select rno, count(bno) from Borrow group by rno order by rno ⑦ select bno, count(rno) from Borrow group by bno order by bno 做实验时,还可以虚拟用户的一些其它查询要求,并用Transact-SQL语句予以实现。 上述每项实验内容相应的实验步骤必须进行详细的记录,并将其整理后写在实验报告中。
会计学 1 计算机数据库基础及应用 计算机数据库基础及应用PPT学习教案全文共14页,当前为第1页。 任务一 定位记录 定位记录的3种方法: 1.在浏览窗口中定位记录 2.使用命令定位记录 3.菜单定位记录 任务概述 第1页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第2页。 在浏览窗口中定位记录 打开学生情况表的浏览窗口,直接单击记录选择器即可实现定位记录。 如图所示: 第2页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第3页。 2.使用命令定位记录 命令:Go <数值表达式> 功能:将记录指针定位到指定的位置。 说明:<数值表达式>的值为要指向记录 的记录号,其取值为正数。 特殊格式:go top " bottom 功能:将指针定位到首记录或尾记录。 (1)绝对定位 第3页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第4页。 例1: 绝对定位 Use xsqk Go bottom Go 3 Go top use &&定位到尾记录 &&定位到3号记录 &&定位到首记录 第4页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第5页。 (2)相对定位 命令:skip [<数值表达式>] 功能:以当前记录为基点,将记录指针向前 或向后移动指定条记录。 说明: a.若< 数值表达式> 为正,则向记录号 大方向移;超过记录号范围 b.若< 数值表达式> 为负,则向记录号 小的方向移; c.若为1,可简写为Skip。 第5页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第6页。 例2: 相对定位记录 Use xsqk Skip Skip 3 Skip -2 use &&定位到5号记录 &&定位到3号记录 &&定位到下一条记录即2号记录 第6页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第7页。 (4)条件定位 命令:locate [<范围>][<for条件>] continue 功能:在当前数据表中按记录顺序依次查找满足条件 的第1条记录,然后使用continue命令继续查找。 说明:若没找到满足条件的记录,指针指到文件尾。 查找测试函数:Found() 功能:测试最后一次条件查找是否找到,找到为.T. 反之为.F. 第7页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第8页。 3.菜单定位记录 具体操作步聚: 打开要操作的表。 单击"显示"—>"浏览"菜单,打开浏览窗口。 单击"表"—>"转到记录"菜单,弹出下一级菜单。 根据而要选择相应的菜单项。 第8页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第9页。 菜单项与命令操作的对应关系如图: 第一个(T) 最后一个(B) 下一个(N) 上一个(p) 记录号(R) 定位 (L) ————go top ————go bottom ————ship ————skip -1 ————go n ————locate for 第9页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第10页。 练习与思考 1.填空题 (1)定位记录就是将指针移到相应的记录上,按定位的方式分为____________________ _______,其命令关键字分别是 (2)Go top 命令的作用是 2.判断题 ( )(1)相对定位是以当前记录为基准,向上或向下移 动记录指针。 ( )(2)表文件头就是表的首记录,文件尾就是尾记录。 ( )(3)当数据表刚打开时,记录指针指妻文件头, Bof()的值为.T. ( )(4) go <数值表达式> 中,数值表达式的值不能超过最大记录号。 3. 写出下列 第10页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第11页。 (3)相关函数 Record() 功能:测试当前记录的记录号。 说明:当指针指到文件头或表中无记录时,函数值为 1。 当指针指到文件尾时,函数值为最大记录号加 1。 Reccount() 功能:测试当前表的记录总数。 说明:当表无记录时,函数值为 0。 Bof () 功能:测试记录指针是否到了文件头。是为.T. 反之为.F. Eof() 功能:测试记录指针是不到了文件尾。是为.F. 反之为.F. 表中无记录时,bof()和eof()都为真。 第11页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第12页。 数据表文件中的记录范围与记录指针的移动关系如图所示: 文件头 首记录 . . . 第i条记录 . . . 尾记录 文件尾 skip -1 Go top Go i Go bottom skip Bof()=.T.
一、实验目的 1. 了解使用SELECT语句进行汇总查询的方法; 2. 熟悉使用COUNT()、SUM()、AVG()、MAX()、MIN()等函数进行汇总查询的方法; 3. 掌握使用GROUP BY子句进行分组汇总查询的方法; 4. 理解使用HAVING子句进行分组汇总查询的方法。 二、实验环境 1. MySQL 5.7及以上版本; 2. Navicat for MySQL。 三、实验内容 1. COUNT()函数 COUNT()函数用于统计某一列或行的记录数。SELECT COUNT(*) FROM table_name;可以统计表中的总记录数,而SELECT COUNT(column_name) FROM table_name;则可以统计某一列的记录数。 示例: 统计学生表中的总记录数: SELECT COUNT(*) FROM student; 统计学生表中“性别”列为“男”的记录数: SELECT COUNT(*) FROM student WHERE gender='男'; 2. SUM()函数 SUM()函数用于对某一列的值进行求和。 示例: 统计学生表中“成绩”列的总和: SELECT SUM(score) FROM student; 3. AVG()函数 AVG()函数用于对某一列的值进行平均值计算。 示例: 统计学生表中“成绩”列的平均值: SELECT AVG(score) FROM student; 4. MAX()函数 MAX()函数用于求某一列的最大值。 示例: 统计学生表中“成绩”列的最大值: SELECT MAX(score) FROM student; 5. MIN()函数 MIN()函数用于求某一列的最小值。 示例: 统计学生表中“成绩”列的最小值: SELECT MIN(score) FROM student; 6. GROUP BY子句 GROUP BY子句用于对查询结果进行分组汇总。它可以对某一列或多列进行分组,然后对每一组进行汇总计算。 示例: 统计学生表中“性别”列的男女人数: SELECT gender, COUNT(*) FROM student GROUP BY gender; 7. HAVING子句 HAVING子句用于在GROUP BY子句的基础上进行筛选,通常与聚合函数一起使用。 示例: 统计学生表中每个“班级”中成绩大于80分的学生数: SELECT class, COUNT(*) FROM student WHERE score>80 GROUP BY class HAVING COUNT(*)>1; 以上为本次实验的全部内容。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值