
第一题:基本操作
在考生文件夹下,打开数据库"宾馆",完成如下操作:
1.打开"客户"表,为"性别"字段增加约束规则:性别只能为"男"或"女",默认值为"女",表达式为:性别$"男女"。
2.为"入住"表创建一个主索引,索引名为fkkey,索引表达式为"客房号+客户号"。
3.根据各表的名称、字段名的含义和存储的内容建立表之间的永久联系,并根据要求建立相应的普通索引,索引名与创建索引的字段名相同,升序排序。
4.使用SQL的SELECT语句查询"客户"表中性别为"男"的客户号、身份证、姓名和工作单位字段及相应的记录值,并将结果存储到名为TABA的表(注意,该表不需要排序)。请将该语句存储到名为ONE.PRG的文件中。
答案:
【解题思路】在表设计器中完成字段有效性的设置,并按照题目的要求建立索引;在数据库设计器中为两表建立永久性联系,并且,两个表需在对应字段上建立主索引和普通索引。
【操作步骤】
(1)打开数据库"宾馆",在数据库设计器中右键单击"客户"表,打开表设计器,选择"性别"字段,在其字段有效性规则栏中输入:性别﹩"男女",在默认值栏中输入:"女"。
(2)在数据库设计器中右键单击"入住"表,打开表设计器,在"索引"选项卡中,索引名处输入:fkkey,类型选择"主索引",表达式处输入:客房号+客户号。
(3)分别为"入住"表建立索引名和索引表达式均为"客房号"和"客户号"的普通索引,为"客房"表建立索引名和索引表达式均为"类型号"的普通索引。在数据库设计器中建立4个表的联系:选中"客户"表中的主索引"客户号",按住鼠标拖动到"入住"表的普通索引"客户号"上,用同样的方法可以建立"客房"表和"入住"表的"客房号"之间的联系,"房价"表和"客房"表的"类型号"之间的联系。
(4)建立一个程序,编写如下代码:
SELECT 客户号,身份证,姓名,工作单位 FROM 客户 WHERE 性别="男" INTO TABLE TABA.DBF
保存程序名为one.prg,并运行该程序。
第二题:简单应用
在考生文件夹下,打开"宾馆"数据库,完成如下简单应用:
1.使用查询设计器设计一个名为TWO的查询文件,查询房价价格大于等于280元的每个客房的客房号、类型号(取自客房表)、类型名和价格。查询结果按类型号升序排列,并将查询结果输出到表TABB中。设计完成后,运行该查询。
2.修改命令文件THREE.PRG。该命令文件用来查询与"姚小敏"同一天入住宾馆的每个客户的客户号、身份证、姓名和工作单位,查询结果包括"姚小敏"。最后将查询结果输出到表TABC中。该命令文件在第3行、第5行、第7行和第8行有错误(不含注释行),打开该命令文件,直接在错误处修改,不可改变SQL语句的结构和短语的顺序,不能增加、删除或合并行。修改完成后,运行该命令文件。
答案:
【解题思路】在第2小题中,涉及"内外层嵌套查询"和"超连接查询"。JOIN语句的功能是对"客户"表和"入住"表进行联接查询,故需要使用联系条件,即ON短语;在SQL语句中,SELECT短语的功能是选择查询的字段,其后不能为空,且内层是查询的字段应该是"入住日期";由题意可知,内层查询的目的是找到满足条件的"入住日期"(姚小敏的入住日期,这一下还有哪些客户入住);将查询结果存入表中需使用的短语是INTO,而不是TO。
(1)【操作步骤】
步骤1:新建一个查询,将"房价"和"客房"表添加到查询中,并按题目要求添加字段。
步骤2:在"筛选"选项卡中设置筛选条件。
步骤3:在"排序依据"选项卡中中选择字段"客房表.类型号",在"排序选项"列表处选择"升序"。
步骤4:设置查询去向。
步骤5:保存查询名为two,最后运行该查询。
(2)【操作步骤】
打开程序文件THREE.PRG,对其中的命令进行修改,如下所示。
**********程序提供的代码**********
*该命令文件用来查询与"姚小敏"同一天入住宾馆的每个客户的客户号、身份证、姓名、
*工作单位。查询结果输出到表TABC中。
*该命令文件在第3行、第5行、第7行和第8行有错误,打开该命令文件,直接在错误处修改,不可
*改变SQL语句的结构和短语的顺序,不允许增加、删除或合并行。
OPEN DATABASE 宾馆
SELECT 客户.客户号,身份证,姓名,工作单位;
FROM 客户 JOIN 入住;
WHERE 入住日期 IN;
( SELECT ;
FROM 客户,入住;
WHERE 姓名 = "姚小敏");
TO TABLE TABC
*******************************
错误1:修改为 FROM 客户 JOIN 入住 ON 客户.客户号 = 入住.客户号;
错误2:修改为 ( SELECT 入住日期;
错误3:修改为 WHERE 客户.客户号 = 入住.客户号 AND 姓名 = "姚小敏");
错误4:修改为INTO TALBE TABC
保存并运行程序。
第三题:综合应用
在考生文件夹下,先打开"宾馆"数据库,然后创建一个名为test的表单文件,如下图所示。
该表单完成如下综合应用:
向表单中添加一个标签(Label1)、一个文本框(Text1)和两个命令按钮。
标签的标题为"退房日期大于或等于"。
文本框用于输入退房日期。
两个命令按钮的功能如下:
(1)"查询"按钮(Command1):在该按钮的Click事件代码中,通过SQL的SELECT命令查询退房日期大查询结果按类型号升序排列,并将查询结果输出到表TABB中。设计完成后,运行该查询。
2.修改命令文件THREE.PRG。该命令文件用来查询与"姚小敏"同一天入住宾馆的每个客户的客户号、身份证、姓名和工作单位,查询结果包括"姚小敏"。最后将查询结果输出到表TABC中。该命令文件在第3行、第5行、第7行和第8行有错误(不含注释行),打开该命令文件,直接在错误处修改,不可改变SQL语句的结构和短语的顺序,不能增加、删于或等于输入日期的客户的客户号、身份证、姓名、工作单位和该客户入住的客房号、类型名、价格信息,查询结果按价格降序排列,并将查询结果存储到表TABD中。表TABD的字段为客户号、身份证、姓名、工作单位、客房号、类型名和价格。
(2)"退出"按钮(Command2)的功能是关闭并释放表单。
表单设计完成后,运行该表单,查询退房日期大于或等于2005-04-01的顾客信息。
答案:
【解题思路】建立表单并向表单中添加控件,修改各控件的属性值。
【操作步骤】
步骤1:新建一个名为test的表单,通过表单控件工具栏向表单添加控件。
步骤2:通过属性窗口设置表单及相关控件的属性。
步骤3:为"查询"命令按钮的Click事件编写程序代码:
******"查询"按钮的Click事件代码*******
SET CENTURY ON
SET DATE TO YMD
SELECT 客户.客户号, 客户.身份证, 客户.姓名, 客户.工作单位, 客房.客房号, 房价.类型名, 房价.价格;
FROM 客户,房价,入住,客房;
WHERE 客户.客户号 = 入住.客户号;
AND 客房.客房号 = 入住.客房号;
AND 房价.类型号 = 客房.类型号;
AND 入住.退房日期>=ctod(ThisForm.Text1.value);
ORDER BY 房价.价格 DESC;
INTO TABLE tabd.dbf
*************************
步骤4:为"退出"命令按钮的Click事件编写程序代码:
ThisForm.Release。
步骤5:保存并运行该表单。
