数据库-数据查询实验报告_第1页
数据库-数据查询实验报告_第2页
数据库-数据查询实验报告_第3页
数据库-数据查询实验报告_第4页
数据库-数据查询实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告课程名称数据库原理与应用实验名称 系另专业班级 指导教师学号 姓名 实验日期_实验名称:数据查询一、实验目的熟悉各种基本的数据查询的含义。掌握数据查询的SQL语句编写方法。能根据要求写出正确的查询语句。掌握基本的调试方法。二、实验环境硬件环境:微机软件环境: Windows, Sql server2000或更高版本三、实验内容及步骤题目 根据要求编写以下SQL查询语句第一题简单查询查询病人表,显示所有病人的病人编号、保险公司名称、电话号码(别名:病人电话)。查询病人表,显示病人编号、病人姓名(病人姓+病人名)、保险公司名称,并在每个“电话号码”前面 显示字符串“病人电话:”。查询病人表

2、,要求显示保险公司名称,并消除重复的值。查询病人表,要求只显示前五条的全部病人信息。查询病人表,要求显示最年轻的前6位病人的病人编号,病人姓名,病人年龄给医生表取别名:doctors,并显示医生表的所有信息要求查询在“人民保险公司”投保的所有病人的信息要求查询病人年龄在2060岁之间的所有病人信息要求查询姓“王”、姓“李”或姓“关”的所有病人的信息。(提示:用“in”或者用“or”两种方法查 询。)查询电话号码为空的病人信息要求按年龄从大到小显示病人信息要求先按病人姓的升序;如果姓一样,再按年龄的降序,来显示病人信息要求查询电话号码的最后一个数字为6的病人编号,病人姓名,电话号码要求查询倒数第

3、二个数字为7的病人编号,病人姓名,电话号码。要求查询除区号外的第二个数字为2的病人编号,病人姓名,电话号码。(注:手机号不算。)要求查询电话号码的最后一个数字为6、为3、为1的病人编号,病人姓名,电话号码。(注:至少两种 方法可以实现)要求查询电话号码的最后一个数字除1、3、6外的病人编号,病人姓名,电话号码。步骤(写出以上SQL语句)-1.查询病人表,显示所有病人的病人编号、保险公司名称、电话号码(别名:病人电话)。select病人编号,保险公司名称,电话号码病人电话from病人表go-2.查询病人表,显示病人编号、病人姓名(病人姓+病人名)、保险公司名称,并在每个电话号码前面显示字符 串病

4、人电话:”。select病人编号,病人姓+病人名病人姓名,保险公司名称,病人电话:,病人电话,电话号码from病人表go-3.查询病人表,要求显示保险公司名称,并消除重复的值。select distinct保险公司名称from 病人表go-4.查询病人表,要求只显示前五条的全部病人信息。select top 5 *from 病人表go-5.查询病人表,要求显示最年轻的前位病人的病人编号,病人姓名,病人年龄select top 5病人编号,病人姓+病人名病人姓名,病人年龄from 病人表order by 病人年龄ASCgo-6.给医生表取别名:doctors,并显示医生表的所有信息select

5、*from 医生表as doctorsgo-7.要求查询在人民保险公司投保的所有病人的信息select *from 病人表where保险公司名称=,人民保险公司,go-8.要求查询病人年龄在60岁之间的所有病人信息select *from 病人表where 病人年龄between 2 0 and 60go-9.要求查询姓王、姓李或姓关的所有病人的信息。(提示:用“in 或者用、or两种方法查询。)select *from 病人表where病人姓in(李,王,关)go-10.查询电话号码为空的病人信息select *from病人表where 电话号码is null go-11.要求按年龄从大到小

6、显示病人信息select *from病人表order by病人年龄DESC go-12.要求先按病人姓的升序;如果姓一样,再按年龄的降序,来显示病人信息select *from 病人表order by病人姓ASC,病人年龄DESC go-13.要求查询电话号码的最后一个数字为的病人编号,病人姓名,电话号码select病人编号,病人姓+病人名病人姓名,电话号码from 病人表where 电话号码like %6 go-14.要求查询倒数第二个数字为的病人编号,病人姓名,电话号码。select病人编号,病人姓+病人名病人姓名,电话号码from 病人表where 电话号码like %7_ go-15.

7、要求查询除区号外的第二个数字为的病人编号,病人姓名,电话号码。(注:手机号不算。)select病人编号,病人姓+病人名病人姓名,电话号码from 病人表where 电话号码like-_2% go-16.要求查询电话号码的最后一个数字为、为、为的病人编号,病人姓名,电话号码。(注:至少两种方法可以实 现)select病人编号,病人姓+病人名病人姓名,电话号码from 病人表where 电话号码like %6 or 电话号码like %3 or 电话号码like %1 goselect病人编号,病人姓+病人名病人姓名,电话号码from病人表where 电话号码like%6,3,1 go-17.要求

8、查询电话号码的最后一个数字除、外的病人编号,病人姓名,电话号码。select病人编号,病人姓+病人名病人姓名,电话号码from 病人表where 电话号码not like%6,3,1 go第二题分组查询查询病人表,要求显示最大年龄值、最小年龄值、平均年龄值查询病人表,要求统计在“太平洋保险公司”投保的病人数查询一下病人表,要求统计有电话号码的病人数查询病人表,要求统计在各个保险公司投保的各自病人数。(两种方法:group by与compute by)查询病人表,要求统计投保人数2人以上(含2人)的保险公司名称与投保人数。查询病历表,要求统计一下病人编号为Pat0002的病人结算总金额。(注:结

9、算金额相同的只算一个记 入总金额中)查询病历表,要求统计一下病人编号为Pat0002的病人结算总金额。(注:结算金额相同的不记入总金 额中)步骤-1.查询病人表,要求显示最大年龄值、最小年龄值、平均年龄值select max(病人年龄)最大年龄,min(病人年龄)最小年龄,avg(病人年龄)平均年龄 from病人表go-2.查询病人表,要求统计在太平洋保险公司投保的病人数select count (保险公司名称)太平洋保险公司投保的病人数from病人表where保险公司名称=,太平洋保险公司,go-3.查询一下病人表,要求统计有电话号码的病人数select count (电话号码)有电话号码的

10、病人数from 病人表where 电话号码is not nullgo-4,查询病人表,要求统计在各个保险公司投保的各自病人数。(两种方法:group by与compute by)select count (保险公司名称)from 病人表where 保险公司名称is not nullgroup by 保险公司名称go-5.查询病人表,要求统计投保人数人以上(含人)的保险公司名称与投保人数。select保险公司名称,count (*)投保人数from 病人表group by 保险公司名称having count(*)=2go-6.查询病历表,要求统计一下病人编号为Pat0002的病人结算总金额。(

11、注:结算金额相同的只算一个记入总 金额中)select distinct sum(结算金额)结算总金额from 病历表where 病人编号=Pat0002go-7.查询病历表,要求统计一下病人编号为Pat0002的病人结算总金额。(注:结算金额相同的不记入总金额中) select sum(结算金额)as结算总金额from 病历表where 病人编号=Pat0002go 第三题多表联接查询查询所有有看过病的病人编号,病人姓名,住院日期,病历。查询所有病人的病人编号,病人姓名,住院日期,病历。(注:如果有的病人暂时还没有看过病,则相 应内容显示为NULL)显示“王太山”该病人的所有的看病资料(病人

12、编号,病人姓名,住院日期,病历)。统计一下“柳四二”该病人的看病次数,以及结算总金额。查询医生编号为docek001的医生看过的所有病人资料(病人编号,病人姓名,医生编号)。查询张明仁医生看过的所有病人资料(病人编号,病人姓名,医生姓名)。显示出院日期在2008年间每个病人的最高的一笔结算金额。(注:要显示的信息有-病人编号,病人姓 名,最高的结算金额)查询具有相同专业的医生。(注:显示的信息有-医生编号,医生姓名,科室)步骤-1.查询所有有看过病的病人编号,病人姓名,住院日期,病历。select病人表.病人编号,病人姓+病人名病人姓名,住院日期,病历from病人表,病历表where病人表.病

13、人编号=病历表.病人编号go-2.查询所有病人的病人编号,病人姓名,住院日期,病历。(注:如果有的病人暂时还没有看过病,则相应内容显 示NULL)select病人表.病人编号,病人姓+病人名病人姓名,住院日期,病历from病人表left outer join病历表on(病人表.病人编号=病历表.病人编号)go-3.显示王太山该病人的所有的看病资料(病人编号,病人姓名,住院日期,病历)。select病人表.病人编号,病人姓+病人名病人姓名,住院日期,病历from病人表,病历表where病人表.病人编号=病历表.病人编号and病人姓+病人名=王太山go-4.统计一下柳四二该病人的看病次数,以及结算

14、总金额。select count (病历)看病次数,count (结算金额)结算总金额from病人表,病历表where病人姓+病人名=柳四二go-5.查询医生编号为docek001,的医生看过的所有病人资料(病人编号,病人姓名,医生编号)。select病人表.病人编号,病人姓+病人名病人姓名,医生表.医生编号from病人表,医生表,病历表where病人表.病人编号=病历表.病人编号and医生表.医生编号=病历表.医生编号and医生表.医生编号= docek001go-6.查询,张明仁,医生看过的所有病人资料(病人编号,病人姓名,医生姓名)。select病人表.病人编号,病人姓+病人名病人姓名,

15、医生姓+医生名医生姓名from病人表,医生表,病历表where病人表.病人编号=病历表.病人编号and医生表.医生编号=病历表.医生编号and医生表.医生姓+医生表. 医生名=,张明仁,go-7.显示出院日期在年间每个病人的最高的一笔结算金额。(注:要显示的信息有-病人编号,病人姓名,最高的 结算金额)select病人表.病人编号,病人姓+病人名病人姓名,max(结算金额)最高的结算金额 from病人表,病历表where病人表.病人编号= 病历表.病人编号and出院日期between 2008-1-1 and 2 008-12-31group by病人表.病人编号,病人姓+病人名 go-8.查

16、询具有相同专业的医生。(注:显示的信息有-医生编号,医生姓名,科室)select one .医生编号, one . 医生姓+ one . 医生名医生姓名 ,one. 科室from 医生表one, 医生表twowhere one .科室= two .科室group by one .医生编号,one .科室,one .医生姓,one .医生名having count (one .科室)1go第四题子查询使用两种子查询的方法。要求查询病历表,要求统计一下病人编号为Pat0002的病人结算总金额。(注: 结算金额相同的不记入总金额中)请用“相关子查询作为表达式”方法写出SELECT语句,来统计并显示每

17、个医生的医生编号、医生姓 名以及每个医生看过的病人数。要求:如果还没看过病人的医生,则显示看过的病人数为0。请用“派生表”的子查询方法写出SELECT语句,来统计并显示每个医生的医生编号、医生姓名以及 每个医生看过的病人数。要求:如果还没看过病人的医生,则显示看过的病人数为0。请用“相关子查询作为表达式”的子查询方法写出SELECT语句,来统计并显示每个医生的医生编号、 医生姓名以及每个医生看过的病人数。要求:如果还没看过病人的医生,不显示信息。请用“派生表”的子查询方法写出SELECT语句,来统计并显示每个医生的医生编号、医生姓名以及 每个医生看过的病人数。要求:如果还没看过病人的医生,不显

18、示信息。查询具有相同专业的医生。(注:显示的信息有-医生编号,医生姓名,科室)(提示:可使用in或exists 关键字实现。)查询看过所有医生的病人信息查询至少看过病人编号为Pat0004看过的全部医生的病人编号查询结算总金额最多的病人编号,病人姓名和相应的结算总金额步骤-1.使用两种子查询的方法。要求查询病历表,要求统计一下病人编号为Pat0002的病人结算总金额。(注:结 算金额相同的不记入总金额中)-第一种方法:select sum (结算金额)as结算总金额from 病历表where结算金额not in(select 结算金额from 病历表where 病人编号=Pat0002grou

19、p by 结算金额 having count (结算金额)1)and 病人编号=Pat0002go-第二种方法: select sum (结算金额) as 结算总金额from病历表where结算金额=any(select结算金额from病历表where 病人编号=Pat0002group by结算金额having count (结算金额)=1)and 病人编号=Pat0002go-2.请用相关子查询作为表达式方法写出SELECT语句,来统计并显示每个医生的医生编号、医生姓名以及每个医 生看过的病人数。要求:如果还没看过病人的医生,则显示看过的病人数为。select b.医生编号,b.医生姓+b

20、 .医生名as医生姓名,该医生看过的病人数,=(select count (病人编号)from 病历表as a where a.医生编号=b.医生编号)from医生表as border by b.医生编号go-3.请用派生表的子查询方法写出SELECT语句,来统计并显示每个医生的医生编号、医生姓名以及每个医生看过 的病人数。要求:如果还没看过病人的医生,则显示看过的病人数为。select a.医生编号,a.医生姓+a.医生名as医生姓名,isnull (b .该医生看过的病人数,0 )from 医生表as a left outer join(select医生编号,count (*) as该医生

21、看过的病人数from 病历表group by 医生编号) as bon a.医生编号=b.医生编号go-4.请用相关子查询作为表达式的子查询方法写出SELECT语句,来统计并显示每个医生的医生编号、医生姓名以 及每个医生看过的病人数。要求:如果还没看过病人的医生,不显示信息。select病历表.医生编号,医生姓+医生名as医生姓名,count (*)as该医生看过的病人数from 病历表inner join 医生表on病历表.医生编号=医生表.医生编号group by病历表.医生编号,医生姓+医生名unionselect医生表.医生编号,医生姓+医生名as医生姓名,病人编号=0from 病历表

22、right outer join 医生表on病历表.医生编号=医生表.医生编号where病人编号is nullgo-5.请用派生表的子查询方法写出SELECT语句,来统计并显示每个医生的医生编号、医生姓名以及每个医生看过 的病人数。要求:如果还没看过病人的医生,不显示信息。select a.医生编号,a .医生姓+a.医生名as医生姓名,b.该医生看过的病人数from 医生表as a inner join(select医生编号,count (*)as该医生看过的病人数from 病历表group by 医生编号) as bon a.医生编号=|.医生编号go -6.查询具有相同专业的医生。(注:显示的信息有-医生编号,医生姓名,科室)(提示:可使用in或exist s关 键字实现。)select distinct a.医生编号,a.医生姓+a.医生名as医生姓名,a .科室from 医生表as a inner join 医生表as bon a. 科室=b.科室where a.医生编号=医生编号and

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论