VF 第6章 实验报告

更新时间:2023-06-02 23:12:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

VF 第6章 实验报告

《Visual FoxPro》实验报告(5)

实验班级: 学号: 姓名: 成绩:

1

VF 第6章 实验报告

2

VF 第6章 实验报告

一、单表查询练习 1、查询病人的姓名和年龄,用“年龄”作为列标题,并按年龄降序排列。 输入语句: select 姓名,year(date())-year(出生日期) as 年龄 from patient order by 年龄 desc 2、查询处于工作中的女医生的全部信息。 输入语句: select * from doctor where 性别="女" and 工作中=.t. 3、查询处方表所含的各种药品编号、药名以及总数量。 输入语句: select distinct 药品编号,药品名称,sum(数量) as 总数量 from prescription group by 药品编 号,药品名称 4、 查询病人表中的病人属于几个科室。 输入语句: select count(distinct 所属科室) from patient 5、 查询处方表金额(价格*数量)排在前三位的药品编号、医生编号和金额。 输入语句: select top 3 药品编号,医生编号, 价格*数量 as 金额 from prescription order by 金额 desc 6、 在病人表中查询每个医生看病人数并列出医生编号。 输入语句: select 主治医生,count(病人编号) from patient group by 主治医生

实 验 步 骤 及 结 果

7、 查询 D003 医生所开药品的总金额和医生编号。 输入语句: select 医生编号,sum(数量*价格) as 总金额 from prescription where 医生编号="D003" 8、 查询“白”姓 女病人的信息。 输入语句: select * from patient where 姓名 like"白%" and 性别="女" 二、内、外连接练习 1、查询 40 到 50 岁的病人姓名,所属的科室名。 输入语句: select patient.姓名, department.科室名 from patient inner join department on patient.所属科 室=department.科室编号 where year(date())-year(出 生日期) >= 40 and year(date())-year(出生日 期)<=50

2、查询每位病人的姓名、性别、所开药品的总金额(价格*数量) 。输入语句: select 姓名,性别,sum(prescription.价格*数量) as 总金额 from patient inner join prescription on patient.病人编号=prescription.病人编号 group by 病人编号

VF 第6章 实验报告

3、列出所有 doctor.dbf 中的医生信息及其所看病人信息。 输入语句: select * from doctor left join patient on doctor.医生编号=patient.主治医生 group by patient.主 治医生 4、Medicine 表的所有药品的药品编号,药名,数量(标题为 “库存” )以及该药品被医生开出的 金额合计(标题为“总金额”,用价格*数量求得) 输入语句: select medicine.药品编号,medicine.药品名称,库存,sum(prescription.价格*数量) as 总金额 from medicine left join prescription on medicine.药品编号=prescription.药品编号 group by prescription. 药品编号 三、 嵌套查询 1、 用 not in 和 not exist 两种方法查询 prescription 表还没有开出的 medicine 表的药品信息。 输入语句:(not in ) select * from medicine where 药品编号 not in (select 药品编号 from prescription ) 输入语句

:(not exists ) select * from medicine where not exists (select * from prescription where prescription.药品编号 =medicine.药品编号)

实 验 步 骤 及 结 果

2、查询超过 M004 库存(数量)的药品信息。 输入语句: select * from medicine where 库存>all(select 库存 from medicine where 药品编号="M004") 四、本地视图建立练习 1、建立工作中的医生信息视图 V1 输入语句: create view v1 as select * from doctor where 工作中=.t. 2、 建立各科室病人数、平均年龄视图 V2,列出科室、病人数、平均年龄。 输入语句: create view v2 as select 科室名,count(病人编号) as 病人数,avg(year(date())-year(出生日期))as; 平均年龄 from patient inner join department on department.科室编号=patient.所属科室 group by 科室 名 3、 建立各科室医生视图 V3,列出科室名称、医生姓名,性别。 输入语句: create view v3 as select 科室名,姓名,性别 from doctor inner join department on doctor.科室 =department.科室编号 4、 建立库存量(字段为“数量” )小于 300 的药品编号和药名及数量视图。 输入语句: create view v4 as select 药品编号,药品名称,库存 from medicine where 库存<300

VF 第6章 实验报告

五、本地视图使用练习 1、用 V1 查询工作中的医生信息 输入语句: select * from v1 2、用 V2 查询病人平均年龄排在前两位的各科室病人、病人数、平均年龄。 输入语句: select top 2 *from v2 order by 平均年龄 3、用 V3 查询不同科室的男女医生人数,列出科室名称、性别,医生数。 输入语句: select 科室名,性别,count(姓名) as 医生数 from v3 group by 性别 4、查询库存量小于 300 的药品编号和数量视图。 输入语句: select * from v4 六【附加题】 用一个带有 4 个 page 的页框实现以下 4 个查询,这里给出各页的编辑和运行界面,请据此编程, 保存为 sy6 步骤: (1)添加页框,页数为 4,标题分别为“按科室查询、按医生查询、按病人查询、按药 品查询” (2)设置数据环境,将所需的表放到数据环境中 (3)添加文本框,标题为“科室编号、医生编号、病人编号、药品编号” (4)添加列表框,设置数据类型为字段,数据源为所需表 (5)添加表格,数据源为 temp 表 (6)添加命令按钮,标题为“查询” ,编写程序 1. 按科室查询(选中 list 框中科室和查询按钮,查询科室医生和病人情况) 步骤: “查询”按钮事件代码设计: this.parent.grid1.recordsource="" select department.科室编号,department.科室名,doctor.姓名; count(patient.病人编号) as 病人数; from doctor, department, patient where department.科室编号=doctor.科室; and doctor.医生编号=patient.主治医生; and department.科室编号=alltrim(this.parent.list1.value) group by doctor.医生编号 into cursor temp; this.parent.g

rid1.recordsource="temp" thisform.refresh 2、按医生查询(查询医生所开药品情况) 步骤: “查询”按钮事件代码设计: this.parent.grid1.recordsource="" select doctor.医生编号,姓名,doctor.性别,药品名称,价格, sum(prescription.数量) as 数量; from doctor, prescription;

实 验 步 骤 及 结 果

VF 第6章 实验报告

where doctor.医生编号= prescription.医生编号; and doctor.医生编号=alltrim(this.parent.list1.value) group by prescription.药品数量 into cursor temp; this.parent.grid1.recordsource="temp" thisform.refresh 3、按病人查询(查询某病人所开药品及主治医生) 步骤: “查询”按钮事件代码设计: this.parent.grid1.recordsource="" select patient.病人编号,姓名,性别,主治医生, prescription.药品名称,数量,价格,doctor,姓名 as 主 治医生; from prescription, patient; where patient.病人编号= prescription.病人编号; and doctor.医生编号=patient.主治医生; and patient.病人编号=alltrim(this.parent.list1.value) group by prescription.药品数量 into cursor temp; this.parent.grid1.recordsource="temp" thisform.refresh 4、按药品查询(查询某药品库存及开出数量情况) 步骤: “查询”按钮事件代码设计: this.parent.grid1.recordsource="" select medicine.药品编号,药品名称,价格,库存, prescription.数量; from prescription, medicine; where medicine.药品编号= prescription.药品编号; and medicine.药品编号=alltrim(this.parent.list1.value) group by medicine.药品编号 into cursor temp; this.parent.grid1.recordsource="temp" thisform.refresh 问题: 1、 设置数据环境时,会出现索引错误,要求删除索引? 2、 视图对于“附加题”有作用吗? 3、 出现了语句逻辑正确,但提示有不能识别的命令?

实 验 步 骤 及 结 果

VF 第6章 实验报告

7

本文来源:https://www.bwwdw.com/article/e601.html

Top