1、“查询查询”(Query)(Query),是指向一个数据库发出的检,是指向一个数据库发出的检索信息的请求,它根据给定的条件提取特定的记录。索信息的请求,它根据给定的条件提取特定的记录。查询的运行结果是一个基于表和视图的动态的数查询的运行结果是一个基于表和视图的动态的数据集合。据集合。查询的数据源可以是查询的数据源可以是一个或多个相关的一个或多个相关的自由表、自由表、数据库表或视图。数据库表或视图。一个查询可以用一条一个查询可以用一条SELECT-SQLSELECT-SQL语句来完成。一语句来完成。一个个查询查询可可保存为一个扩展名为保存为一个扩展名为.QPR.QPR的文件的文件即查询文件即查询
2、文件。查询查询文件中保存的是实现查询的文件中保存的是实现查询的SELECT-SQLSELECT-SQL命令,而命令,而非查询的结果。查询和视图设计器在本质上都是非查询的结果。查询和视图设计器在本质上都是SELECT-SQLSELECT-SQL命令的可视化设计方法。命令的可视化设计方法。1.使用界面方法使用界面方法 1)查询向导)查询向导 2)查询设计器)查询设计器 用用 create query 命令打开查询设计器窗口。命令打开查询设计器窗口。选择选择“文件文件”菜单中的菜单中的“新建新建”或常用工具栏中的或常用工具栏中的“新建新建”按钮。按钮。在在“项目管理器项目管理器”窗口中的窗口中的“数
3、据数据”选项卡中选择选项卡中选择“查询查询”,并选择并选择“新建新建”按钮。按钮。2.命令方法命令方法 用用modify command 命令进入编辑窗口命令进入编辑窗口;输入输入select-sql语句。语句。【例【例1 1】查询教师表中工龄满查询教师表中工龄满3030年的教工年的教工的工号和姓名的工号和姓名,查询结果按工号的降序排列,查询结果按工号的降序排列,显示在浏览窗口中。显示在浏览窗口中。注意:注意:在使用查询设计器前,先打开数据库!在使用查询设计器前,先打开数据库!1、打开查询设计器、打开查询设计器2、“添加表或视图添加表或视图”3、定义查询的输出内容、定义查询的输出内容4、设置筛
4、选条件、设置筛选条件5、设置排序依据、设置排序依据6、保存查询文件、保存查询文件运行查询文件运行查询文件【例【例2 2】基于学生表,查询各班级的男女基于学生表,查询各班级的男女生人数及各自所占比例,要求输出字段为:生人数及各自所占比例,要求输出字段为:班级(班级(bjbhbjbh)、男生人数、男生比例、女生)、男生人数、男生比例、女生人数、女生比例,按班级的升序排列,在主人数、女生比例,按班级的升序排列,在主窗口中显示前窗口中显示前30%30%的记录。的记录。1、打开查询设计器、打开查询设计器2、添加表或视图添加表或视图3、定义查询的输出内容、定义查询的输出内容4、设置分组依据、设置分组依据5
5、、设置排序依据、设置排序依据6、对查询结果的、对查询结果的其它设置其它设置7、设定、设定查询去向查询去向8、保存查询文件、保存查询文件运行查询文件运行查询文件l浏览:浏览:在浏览窗口显示查询结果在浏览窗口显示查询结果l临时表:临时表:在临时只读表中存储查询结果在临时只读表中存储查询结果l INTO CURSORINTO CURSOR TEMP01TEMP01l表:表:将查询结果作为表保存将查询结果作为表保存l INTO TABLEINTO TABLE TAB01.DBFTAB01.DBF l图形:图形:使查询结果用于使查询结果用于Microsoft GraphMicrosoft Graphl屏
6、幕:屏幕:在在VFPVFP主窗口或当前窗口中显示查询结果主窗口或当前窗口中显示查询结果 TO SCREEN/TO PRINTER/TO FILETO SCREEN/TO PRINTER/TO FILE F01.TXTF01.TXTl报表:报表:将结果输出到报表文件将结果输出到报表文件(.FRX.FRX)l标签:标签:将结果输出至标签文件将结果输出至标签文件(.LBX.LBX)“查询去向查询去向”对话框对话框【例【例3】查询成绩在】查询成绩在80分以上(含分以上(含80分)分)的课程代号、课程名、学生学号和成绩,且要的课程代号、课程名、学生学号和成绩,且要求结果按课程代号升序排序,课程相同时按成
7、求结果按课程代号升序排序,课程相同时按成绩的降序排序。(绩的降序排序。(P111 例例4.1)1、添加数据源:、添加数据源:KCKC表表和和CJCJ表表 2、确定、确定联接类型联接类型 3、设置输出内容、设置输出内容 4、设置筛选条件、设置筛选条件 5、设置排序依据、设置排序依据【例【例4】基于课程表和成绩表,查询每门】基于课程表和成绩表,查询每门课选课人数、平均成绩、最高分和最低分,查课选课人数、平均成绩、最高分和最低分,查询输出字段包含课程代号、课程名、选课人数、询输出字段包含课程代号、课程名、选课人数、平均成绩、最高分和最低分,且按平均成绩降平均成绩、最高分和最低分,且按平均成绩降序排列
8、。(序排列。(P114 例例4.2)若加上筛选条件:平均成绩在若加上筛选条件:平均成绩在70分以上,分以上,应如果实现?应如果实现?【例【例5】基于教师表和任课表,查询没有授】基于教师表和任课表,查询没有授课任务的教师名单。课任务的教师名单。两种方法:两种方法:1、左联接、左联接 2、子查询、子查询MODIFY COMMAND MODIFY COMMAND 文件名文件名.QPR.QPR DO DO 文件名文件名.QPRQPR 内部联接内部联接左联接左联接右联接右联接完全联接完全联接基于成绩表,查询每个学生的成绩,要求:基于成绩表,查询每个学生的成绩,要求:每个学生的各门课程的成绩在一行上,如下
9、表所示。每个学生的各门课程的成绩在一行上,如下表所示。学号学号课程课程1课程课程2课程课程3课程课程4 课程课程5 课程课程6总分总分950201856591838777488950102767884659267462ODBC数据源:数据源:ODBC(开放式数据互连)是一种(开放式数据互连)是一种 用用于数据库服务器的标准协议,通过于数据库服务器的标准协议,通过ODBC可以可以访问多种数据库中的数据,可以安装多种数据访问多种数据库中的数据,可以安装多种数据库的库的ODBC驱动程序,从而使驱动程序,从而使VFP可以与该数可以与该数据库相连,访问数据库中的数据。据库相连,访问数据库中的数据。远程视
10、图:远程视图:使用远程使用远程ODBCODBC数据源。数据源。本地视图:本地视图:使用使用VFPVFP的视图或表作为数据源。的视图或表作为数据源。可以将一个或多个远程视图添加到本地视图中,以可以将一个或多个远程视图添加到本地视图中,以便能在同一个视图中同时访问便能在同一个视图中同时访问VFP数据和远程数据和远程 ODBC数数据源中的数据据源中的数据 【例【例1】创建基于创建基于xsxs、kckc、cjcj表,并可修改表,并可修改 cjcj表中的表中的cjcj字段的视图字段的视图ST01ST01。1、打开视图设计器,新建视图,依次加入、打开视图设计器,新建视图,依次加入xsxs、cjcj、kck
11、c三个表作为数据源,设置联接条件及联接方式,选三个表作为数据源,设置联接条件及联接方式,选择输出字段。择输出字段。2、进入、进入“更新条件更新条件”选项卡选项卡注意:注意:1、要使得视图中当前记录的成绩字段能正确更新要使得视图中当前记录的成绩字段能正确更新cj表中表中相应记录的成绩字段,必须设置视图中相应记录的成绩字段,必须设置视图中cj表的学号表的学号(xh)和课程代和课程代号号(kcdh)为关键字段。为关键字段。2、视图运行后,在浏览窗口修改视图运行后,在浏览窗口修改cj字段值,修改后必须字段值,修改后必须使记录指针离开这条记录,才能在基表中看到修改后的结果。使记录指针离开这条记录,才能在
12、基表中看到修改后的结果。【例【例2】基于基于CJCJ表创建一个参数化视图,根表创建一个参数化视图,根据提供的课程代号下载该课程的成绩记录。据提供的课程代号下载该课程的成绩记录。“?”必须是半角的必须是半角的 “?”与与“课程代号课程代号”之间不能有空格。之间不能有空格。创建参数化视图创建参数化视图视图的参数可以是一个表达式,计算出来的视图的参数可以是一个表达式,计算出来的值将作为视图值将作为视图SQLSQL语句的组成部分。若计算无效,语句的组成部分。若计算无效,VFPVFP将显示将显示“操作符操作符/操作数类型不匹配操作数类型不匹配”。【例【例3 3】用命令方式创建包括用命令方式创建包括JS表
13、中所有字表中所有字段的视图段的视图JS_VIEW。【例【例4 4】基于基于CJCJ表用命令创建一个参数化视表用命令创建一个参数化视图,根据课程代号下载该课程的成绩。图,根据课程代号下载该课程的成绩。1 1、访问视图、访问视图视图是一个虚拟的表,所以可以用视图是一个虚拟的表,所以可以用USEUSE命令打开命令打开和关闭表,多个视图可以在多个工作区打开,在浏览和关闭表,多个视图可以在多个工作区打开,在浏览窗口显示视图记录;与表一样视图可以作为查询、视窗口显示视图记录;与表一样视图可以作为查询、视图、表单、报表、标签等的数据源。图、表单、报表、标签等的数据源。(1 1)视图的打开、浏览、关闭)视图的
14、打开、浏览、关闭 (2)关闭视图的基表)关闭视图的基表2 2、视图的修改、重命名和删除、视图的修改、重命名和删除 3 3、用数据字典定制视图用数据字典定制视图视视 图图 的的 使使 用用4、集成视图、集成视图Structured Query Language 改变输出去向后,必须先执行查询再查看查询结果,改变输出去向后,必须先执行查询再查看查询结果,且查询结果不在浏览窗口显示。且查询结果不在浏览窗口显示。【说明说明】UNION 子句遵守下列规则:子句遵守下列规则:不能使用不能使用 UNION 来组合子查询。来组合子查询。两个两个 SELECT 命令的查询结果中的列数必须相同。命令的查询结果中的列数必须相同。两个两个 SELECT 查询结果中的查询结果中的对应列对应列必须有相同的必须有相同的 数据类型数据类型和和宽度宽度。只有最后的只有最后的SELECT中可以包含中可以包含ORDER BY子句,子句,而且必须而且必须按编号指出按编号指出所输出的列。所输出的列。一个一个 ORDER BY 子句,将影响整个结果。子句,将影响整个结果。