一、 实验目的和要求

(1)掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解。

(2)熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。

(3)熟练掌握数据查询中的分组、统计、计算和组合的操作方法。

二、 实验内容和原理

1. 简单查询操作

该实验包括投影、选择条件表达、数据排序、使用临时表等。

2. 连接查询操作

该实验包括等值连接、自然连接、求笛卡尔积、一般连接、外连接、内连接、左连接、右连接和自连接等。

3. 在SQL Server查询分析器中使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。

4. 分组查询实验。该实验包括分组条件表达、选择组条件的表达方法。

5. 使用函数查询的实验。该实验包括统计函数和分组统计函数的使用方法。

6. 组合查询实验。

7. 计算和分组计算查询的实验。

三、 实验环境

硬件:计算机

软件:Windows 2000和SQL Server 2000

四、 算法描述及实验步骤

1. 基本操作实验

用Transact-SQL语句表示下列操作.在学生-课程库中实现其数据查询操作:

(1)求数学系学生的学号和姓名。

select sno,sname

from student

where sdept ='MA'

(2)求选修了高等数学的学生学号、姓名和成绩。

select sc.sno,sname,grade

from student,sc,course

where sc.cno=course.cno and cname='数学' and student.sno

=sc.sno

(3)求选修C1课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。

select sno,grade

from sc

where cno ='1'

order by grade desc,sno asc

(4)获选修课程C1且成绩在80~90分之间的学生学号、姓名及成绩,并将成绩乘以系数0.8输出。

select student.sno,sname,grade*0.8

"grade*0.8"

from sc,student

where cno ='1'and grade between 80 and 90 and student.sno

=sc.sno

(5)求数学系或计算机系姓张的学生的信息。

select *

from student

where (sdept ='CS' or sdept ='MA') and sname like'张%'

(6)求缺少了成绩的学生的学号和课程号。

select sno,cno

from sc

where grade is null

(7)求C1课程的成绩高于张三的学生学号和成绩。

select sno,cno

from sc

where cno ='1'and

grade >

(select grade

from sc,student

where sname ='张三' and student.sno =sc.sno and cno ='1')

(8)求其他系中比计算机系学生年龄都小的学生。

select *

from student

where sdept !='cs' and sage <

(

select min(sage)

from student

where sdept ='cs'

)

(9)查询选修了全部课程的学生的姓名。

select Sname

from student

where Sno IN

(select Sno from SC

group by Sno

having count(*) = (select count(*) from course )

)

(10)求至少选修了学生“张三”所选修的全部课程的学生学号和姓名。

select distinct scx.sno,sname

from sc scx,student

where scx.sno =student.sno and not exists

(select *

from sc scy,student

where sname ='张三'and scy.sno =student.sno and not exists

(select *

from sc scz

where scx.sno =scz.sno and scy.cno =scz.cno))

(11)查询每一门课的间接先行课(即先行课的先行课)。

select c1.cno,c2.cpno

from course c1,course c2

where c1.cpno =c2.cno

在图书-图书库中实现其查询操作。

(1)查找这样的图书类别:要求类别中最高的图书定价不低于全部按类别分组的图书平均定价的2倍。

select 类别

from 图书

group by 类别

having max(定价)>=all

(select avg(定价)*2

from 图书

group by 类别)

(2)求机械工业出版社出版的各类图书的平均定价,用GROUP BY表示。

select distinct 类别, avg(定价) '平均定价'

from 图书

where 出版社 ='机械工业出版社'

group by 类别

(3)列出计算机类图书的书号、名称及价格,最后求出册数和总价格。

SELECT 书号,书名,定价

FROM 图书

WHERE 类别='计算机' ORDER BY 书号 ASC

COMPUTE count (书号),SUM(定价)

(4)列出计算机类图书的书号、名称及价格,并求出各出版社这类书的总价格,最后求出全部册数和总价格。

select 书号,书名,定价

from 图书

where 类别='计算机'

order by 出版社

compute sum(定价) by 出版社

(5)查询计算机类和机械工业出版社出版的图书。

select 书号,书名

from 图书

where 类别='计算机'and 出版社 ='机械工业出版社'

(6)在图书-借阅库中实现其查询操作:将计算机类的书存入永久的计算机图书表中,将借书日期在1999年以前的借阅记录存入临时的超期借阅表。

SELECT *

INTO 计算机图书

FROM 图书

WHERE 类别='计算机'

GO

SELECT *

INTO #超期借阅

FROM 借阅

WHERE 借阅日期< '1999-01-01'

GO

(1)按表1的格式,建立职工部门库和职工表、部门,并向表中输入数据。

表1 职工和部门表数据

职工表 部门表

职工号

姓名

性别

年龄

部门

1010

李勇

20

11

1011

刘晨

19

1012

王敏

22

12

1013

张立

21

13

部门号

部门名称

电话

11

生产科

566

12

计划科

578

13

一车间

467

14

科研所

(2)用Transact-SQL语句表示职工和部门之间的内连接、左外部连接和右外部连接,在职工部门库中实现其数据内连接和各种外查询操作。

1.等值连接

select 职工表.*,部门表.*

from 职工表,部门表

where 职工表.部门=部门表.部门号

2.自然连接

select 职工号,姓名,性别,年龄,部门,部门名称

from 职工表,部门表

where 职工表.部门=部门表.部门号

3.左外连接

select 职工号,姓名,性别,年龄,部门,部门名称

from 职工表

left outer join 部门表 on(职工表.部门=部门表.部门号)

4.右外连接

select 职工号,姓名,性别,年龄,部门,部门名称

from 职工表

right outer join 部门表 on(职工表.部门=部门表.部门号)

五、 调试过程

1、 在查询求数学系或计算机系姓张的学生的信息时,出现如下错误提示:

代码如下:

select *

from student

where sdept ='CS' or sdept ='MA' and sname like'张%'

分析下,明白了代码应该改为如下:

select *

from student

where (sdept ='CS' or sdept ='MA') and sname like'张%'

2、 在查询求缺少了成绩的学生的学号和课程号时,出现如下错误提示:

代码如下:

select sno,cno

from sc

where grade = null

分析下原因,原来是 =和is的差别,改代码如下:

select sno,cno

from sc

where grade is null

六、 实验结果

1. 基本操作实验

用Transact-SQL语句表示下列操作.

在学生-课程库中实现其数据查询操作:

(1)求数学系学生的学号和姓名。

(2)求选修了高等数学的学生学号、姓名和成绩。

(3)求选修C1课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。

(4)获选修课程C1且成绩在80~90分之间的学生学号、姓名及成绩,并将成绩乘以系数0.8输出。

(5)求数学系或计算机系姓张的学生的信息。

(6)求缺少了成绩的学生的学号和课程号。

(7)求C1课程的成绩高于张三的学生学号和成绩。

(8)求其他系中比计算机系学生年龄都小的学生。

(9)查询选修了全部课程的学生的姓名。

(10)求至少选修了学生“张三”所选修的全部课程的学生学号和姓名。

(11)查询每一门课的间接先行课(即先行课的先行课)。

在图书-图书库中实现其查询操作。

(1)查找这样的图书类别:要求类别中最高的图书定价不低于全部按类别分组的图书平均定价的2倍。

(2)求机械工业出版社出版的各类图书的平均定价,用GROUP BY表示。

(3)列出计算机类图书的书号、名称及价格,最后求出册数和总价格。

(4)列出计算机类图书的书号、名称及价格,并求出各出版社这类书的总价格,最后求出全部册数和总价格。

(5)查询计算机类和机械工业出版社出版的图书。

(6)在图书-借阅库中实现其查询操作:将计算机类的书存入永久的计算机图书表中,将借书日期在1999年以前的借阅记录存入临时的超期借阅表。

2. 提高操作实验

(1)按表1的格式,建立职工部门库和职工表、部门,并向表中输入数据。

(2)用Transact-SQL语句表示职工和部门之间的内连接、左外部连接和右外部连接,在职工部门库中实现其数据内连接和各种外查询操作。

1.等值连接

2.自然连接

3.左外连接

4.右外连接

七、 总结

这次数据库实验主要是考察我们对简单查询和连接查询的掌握。虽然在理论学习的时候觉得很简单,凭空的去想想结果是什么样子的,但是不能够实践。从这次实验中,让我们将理论知识应用到实践中来,通过编写一些命令语句,结果就能呈现在我们眼前。

这次实验中要写的语句虽然很多,但是当我把它们一个一个的写出来,并运行成功的时候,觉得很有成就感。不过因为自己的粗心还有对一些语句书写的不够熟练,做实验用了很长时间。在这很长时间中,增加了我们对各种情况下查找命令语句的熟悉程度,使实验报告顺利的完成,觉得非常值得。

实验三mysql查询_实验三 数据库的查询实验相关推荐

  1. MySQL学习笔记04【数据库的查询操作、今日内容、表的约束】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  2. python程序设计实验指导书第1版实验三十四_《python编程基础》实验指导书.doc

    <python编程基础>实验指导书 PAGE 南 阳 理 工 学 院 <python编程基础>实验指导书 (2014版) 软件学院·软件工程教研室 2011.3 目录 TOC ...

  3. mysql实训报告_mysql数据库技术》实验报告.doc

    mysql数据库技术>实验报告 MySQL数据库技术实验报告 系 别 班 级 学 号 姓 名 地点 地点机房 课程名称 MySQL数据库技术 实验名称 实验1 MySQL的使用 实 验 过 程 ...

  4. 第二部分 Mysql数据库管理_第二篇 数据库MySql

    <1> 在数据库系统中,SQL语句不区分大小写(建议用大写) .但字符串常量区分大小写.建议命令大写,表名库名小写: <2> SQL语句可单行或多行书写,以";&qu ...

  5. 逻辑与计算机设计基础实验报告,学位论文_逻辑与计算机设计基础课实验报告.doc...

    学位论文_逻辑与计算机设计基础课实验报告 学生学号 0121410870432实验成绩 学 生 实 验 报 告 书 实验课程名称逻辑与计算机设计基础开 课 学 院计算机科学与技术学院指导教师姓名肖敏学 ...

  6. mysql剪标_一种数据库检索机制的构建方法及系统与流程

    本发明属于网络存储技术领域,尤其涉及一种数据库检索机制的构建方法及系统. 背景技术: 随着互联网技术的发展,云端整套的服务解决方案也在与时俱进.传统的KTV应用数据的落地和使用方案比较单调低效,缺乏先 ...

  7. 外键查询_传统关系型数据库查询性能提高思路

    相信现阶段依然有许多的企业信息化项目依然采用单体架构,其数据存储主要方式依然以关系型数据库为主,比如oracle.mysql.postgresql等.企业初期,各种原因导致研发人员身兼数职,都是全栈的 ...

  8. 阿里云 mysql 强制查主库_mysql数据库权限查询

    mysql数据库权限查询 云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越.稳定可靠.弹性扩展的IaaS(Infrastructure as a Servi ...

  9. 图像存在hadoop比在mysql中_比较SQL数据库和Hadoop

    鉴于Hadoop是一个数据处理框架,而在当前大多数应用中数据处理的主力是标准的关系数据库,那又是什么使得Hadoop更具优势呢?其中一个原因是,SQL(结构化查询语言)是针对结构化数据设计的,而Had ...

  10. mysql long varchar2_案例:Oracle数据库long查询结果转换为varchar2类型方法的操作步骤...

    天萃荷净 将Oracle数据库查询出来的long结果转换为varchar2类型数据 来自Thomas Kyte <Oracle9i/10g/11g编程艺术> 12章节中.由于long的操作 ...

最新文章

  1. Confluence 6 创建小组的公众空间
  2. 中国博士把整个 CNN 都给可视化了,每次卷积 ReLU 池化都清楚
  3. python 锁 多进程
  4. 【商城购物车】购物车逻辑
  5. asp.net MD5加密函数(c#)
  6. 【转】重新打包DebianISO实现无人应答安装(UEFI+BIOS)
  7. 服务器主板点不亮排查
  8. shell ## %% 使用说明
  9. 开发人员最佳配色主题
  10. qpsk的映射过程_FPGA数字信号处理(28)QPSK星座映射与解映射
  11. 【深度学习】FPN 网络 Feature Pyramid Networks
  12. 解决AndroidStudio报错问题:Missing essential plugin
  13. HttpClient介绍
  14. 多少程序员的梦想职位,成为阿里P7真的就这么难吗-学会这些就够了
  15. 区块链学习系列:对称与非对称加密区别?
  16. app爬虫抓包不能抓到对应的http网络请求解决办法,以某团app为例
  17. 怎么利用计算机传输文件到邮箱,电脑和电脑怎么传文件_电脑和电脑之间如何传文件-win7之家...
  18. 瑞萨E1/E20烧录工具自检方法
  19. “闪婚”的代价:亿晶光电控股权陷“罗生门”
  20. 立创eda入门经验分享(2)——布线问题

热门文章

  1. 【项目管理】如何定义开放性问题和如何在项目中跟踪开放性问题
  2. MySQL业务账号需要哪些权限_MySQL 日常运维业务账号权限的控制
  3. Win32 API 列表5 (格式有点乱)
  4. MYSQL 视图 触发器 存储过程 事务 索引
  5. [BZOJ4152][AMPPZ2014]The Captain题解
  6. 加州大学戴维斯分校 计算机科学,UCDavis的Computer Science「加州大学戴维斯分校计算机科学专业」...
  7. 榆熙教育:店铺DSR评分如何理解?
  8. android 磁盘读写速度,手机微硬盘读取速度50MB/s eMMC技术浅析
  9. pycharm中TODO注释
  10. 【咸鱼教程】TextureMerger1.6.6 一:Egret MovieClip的制作和使用