第 六 章查询与视图
Visual FoxPro 6.0
第 六 章 查询与视图
§ 6.1 SELECT-SQL查询查询,向数据库发出检索信息的请求,它使用一些条件提取特定的记录。其运行结果是一个基于表和视图的动态的数据集合。
数据源是一张或多张相关表或视图。
查询文件名称为 *.QPR。
查询可以用 SELECT-SQL语句和查询设计器来完成。
查询和视图设计器在本质上都是 SELECT-SQL命令的可视化设计方法。
VFP还允许将查询结果以图形的形式输出。
6.1.1 用 SELECT-SQL命令直接查询一,SELECT-SQL命令的格式 P91
常用的格式:
SELECT 表名 1,字段名 1 [AS 标题名 1],表名 1,字段名 2 [AS
标题名 2],…
FROM 数据库名 ! 表名 1 [,数据库名 ! 表名 2 ] [,数据库名 ! 表名 3 ]
[TO FILE 文本文件名 | into table | into cursor 表文件名 ]
[ WHERE 选定条件 ]
[GROUP BY 分组字段名 ]
[HAVING 分组中的满足条件 ]
[ORDER BY 排序字段名 1 [ASC | DESC] [,排序字段名 2 [ASC
| DESC],..]]
添加表或视图,FROM [DatabaseName!]Table [Local_Alias]
[,[DatabaseName!]Table [Local_Alias],..]
如,SELECT * FROM RSGZ
设置输出字段,[Alias.] Select_Item [AS Column_Name] [,[Alias.] Select_Item [AS
Column_Name],..]
输出字段支持:
AVG(Select_Item),计算列中数值的平均值。
COUNT(Select_Item),计算列中选定项的数目。计算查询输出的行数。
MIN(Select_Item),确定列中 Select_Item 的最小值。
MAX(Select_Item),确定列中 Select_Item 的最大值。
SUM(Select_Item),计算列中数值的和如,SELECT 编号,姓名,基本工资 FROM RSGZ
设置筛选条件,[WHERE FilterCondition,[AND | OR FilterCondition,..]]
如,SELECT * FROM RSGZ WHERE 基本工资 >500
排序,[ORDER BY Order_Item [ASC | DESC] [,Order_Item [ASC | DESC],..]]
如,SELECT * FROM RSGZ ORDER BY 部门名,基本工资 DESC
分组,[GROUP BY GroupColumn [,GroupColumn,..]]
如,SELECT 部门名,AVG(基本工资 ) AS 平均工资 FROM RSGZ
GROUP BY 部门名其他,[DISTINCT][TOP <n>]
如,SELECT DISTINCT 部门名 FROM RSGZ
select * from sb where 价格 >100 order by 启用日期 top 2
多表查询,FROM [DatabaseName!]Table [Local_Alias] [JoinCondition
[DatabaseName!]Table [Local_Alias] ON FilterCondition ] [,
[DatabaseName!]Table [Local_Alias] [JoinCondition [DatabaseName!]Table
[Local_Alias] ON FilterCondition ],..]
JoinCondition包括,P101
– INNER JOIN:内部连接
– LEFT OUTER JOIN:左连接
– RIGHT OUTER JOIN:右连接
– FULL JOIN,完全连接如,SELECT Rsgl.编号,Rsgl.部门名,Rsgl.姓名,Rsda.职称,Rsgz.基本工资
FROM 人事管理数据库 !rsgl INNER JOIN 人事管理数据库 !rsda INNER
JOIN 人事管理数据库 !rsgz ON Rsda.编号 = Rsgz.编号 ON Rsgl.编号 =
Rsda.编号二,SELECT-SQL命令查询示例
1,单表查询示例
【 EXAM3-16】
【 EXAM3-17】
【 EXAM3-18】
【 EXAM3-19】
2,多表查询示例
【 EXAM3-20】
【 EXAM3-21】
【 EXAM3-22】
6.1.2 用查询设计器建立查询一、查询设计器的操作步骤
EXAM3-23
二、查询设计器的界面组成
1,上部窗格:显示已打开的表。
2,下部窗格
( 1)字段选项卡
( 2)联接选项卡
①类型列②字段名列③条件列④否列 ⑤值列 ⑥逻辑列
⑦“插入”按钮 ⑧“移去”按钮
( 3)筛选选项卡
( 4)排序依据选项卡
( 5)分组依据选项卡
( 6)杂项选项卡
EXAM3-24
3,查询菜单的几个命令
( 1)运行查询
( 2)查看 SQL,显示查询操作产生的 SELECT-SQL命令(只读)
( 3)查询去向
①浏览按钮
②临时表按钮
③表按钮
④图形按钮
⑤屏幕按钮
⑥报表按钮
⑦标签按钮
6.1.3 查询结果的图形处理激活“查询去向”对话框中的“图形”按钮,在命令窗口执行
_GENGRAPH=“\VFP\WIZARDS\WZGRAPH.APP”
说明,P105
( 1)图形向导对话框中含有柱形图、折形图、圆饼图等多种统计图供用户挑选。
( 2)为输出图形通常需选取两个以上表达式,并且至少要有一个数值表达式。
( 3)输出的图形将存入扩展名为,SCX的表单文件,文件主名可由用户定义。表单文件用 DO FORM命令来执行,执行后即显示图形。
( 4)用户也可直接调用 WZGRAPH.APP应用程序来打开图形向导对话框。
( 5)用户也可直接使用图形向导,但须先运行查询文件。
6.2 视图视图是一个虚拟表,从已有的表或视图中抽配得来,这些数据在数据库中并不实际存储,仅在其数据词典中存储定义。
视图的特点
1) 视图是存在于数据库中的一个虚表,不以独立的文件形式保存;
2) 视图中的数据是可更改的,且可以更新源表;
3) 视图的数据源可以是自由表、数据库表或另一个视图。
分类
–本地视图:使用 VFP SQL语法从视图或表中选择信息
–远程视图:从远程 ODBC数据源表或连接中选择信息一、视图的创建创建本地视图,CREATE SQL VIEW [ViewName ] [AS SQL
SELECT Statement]
例,OPEN DATABASE TEST
CREAT SQL VIEW SCORE AS SELECT SB.编号,SB.名称,SB.价格 ;
FROM TEST!SB WHERE SB.编号 =”038-4”
打开视图文件并浏览 OPEN DATABASE 数据库名
USE 视图文件名
BROWSE
修改视图,MODIFY VIEW ViewName
视图重命名,RENAME VIEW ViewName1 TO ViewName2
删除视图,DELETE VIEW ViewName
创建多表视图,可用 FROM或 WHERE子句建立多表间的连接条件。
如,CREAT SQL VIEW GZ AS SELECT RSGL.编号,RSGL.部门名,RSGL.姓名,RSDA.职称,RSGZ.基本工资 FROM RSGL
INNER JOIN RSDA INNER JOIN RSGZ ON RSDA.编号 =
RSGZ.编号 ON RSGL.编号 = RSDA.编号如,CREAT SQL VIEW GZ AS SELECT RSGL.编号,RSGL.部门名,RSGL.姓名,RSDA.职称,RSGZ.基本工资 FROM RSGL,
RSDA,RSGZ WHERE RSDA.编号 = RSGZ.编号 AND RSGL.
编号 = RSDA.编号二,通过界面操作创建视图方法一:在项目管理器中创建视图从项目管理器中选择一个数据库 → 选择本地视图 → 单击新建按钮
→ 选择新视图 → 添加所需的数据表 → 在视图设计器中按照与创建查询相同的步骤( 2)~( 6)建立视图 → 设置更新条件 → 保存视图 → 给出视图名称 → 关闭视图设计器。
与查询设计方法一样,只是多一个更新选项卡更新条件选项卡中钥匙符号设置关键字段。铅笔符号列设置可更新字段。选定发送 SQL更新复选框表示要将视图记录中的修改传送给原始表。
方法二:在数据库设计器中创建视图
– 建立一个本地视图,包含 RSGL.编号,RSGL.部门名,RSGL.姓名,RSDA.
职称,RSGZ.基本工资
【 EXAM3-30】
VFP6.0支持的 7条 SQL命令一览表
CREATE TABLE -SQL创建一个指定字段的表
create table xs (;
xh c(4) default "1201" primary key,;
xm c(6),;
xb c(2) check xb=“男” or xb=“女” error,性别只能是男或女” ;
default "女 ",;
nl n(2) null )
CREATE CURSOR-SQL创建一个临时表
CREATE CURSOR teacher ;
(TeacherID N(5),Name C(20),Address;
C(30),OfficeNo C(8) NULL,Specialty M)
6.3 SQL 语言中的命令语句
SQL是一种日趋流行的标准的数据库系统管理语言,能使数据检索异常地方便、灵活。
ALTER TABLE - SQL修改一个已存在的表的结构。
ALTER TABLE xscj ADD COLUMN kcmc C(14)
SELECT - SQL从一个或多个表中检索数据。
SELECT 表 xs.xh,表 xs.xm,表 xs.xb,;
FROM 数据 test!表 xs;
WHERE 表 xs.xh >'81991025';
ORDER BY 表 xs.xh
DELETE - SQL使用 SQL 语句将表中的记录加上删除标记。
DELETE FROM cj WHERE cj<60
INSERT - SQL在已存在表的末尾追加一条新记录
INSERT INTO xs( xh,xm,xb) VALUES;
( "8399101","张丽 ","女 ")
UPDATE - SQL更新表中的记录
UPDATE cj SET cj = cj*1.05 WHERE cj>80
思考题
视图与查询有什么不同,各有什么优点?
用视图文件可以修改表中的数据吗,如何操作?
查询文件有几种查询输出形式?
一,选择题
1,查询文件是 VFP的一种可执行文件,其默认扩展名是 ( ) 。
A) prg B) exe C) qpr D) fxp
2,查询的基本功能不包括 ( ) 。
A) 选择字段 B) 选择记录 C) 排序记录 D) 逻辑删除
3,修改 stu641查询文件的命令是 ( ) 。
A) modify command stu641 B) modify file stu641
C) modify query stu641,D) modify structure stu641
4,默认情况下,VFP查询结果的输出目的地是 ( ) 。
A) 浏览 B) 临时表 C) 图形 D) 报表
5,在使用命令方式创建联接条件时,,Inner Join”表示 ( ) 。
A) 内部联接 B) 左联接 C) 右联接 D) 完全联接
6,如果只要显示查询结果中列在前面的 5个记录,则在 SELECT-
SQL命令中应添加 ( ) 参数 。
A) NEXT 5 B) RECORD 5 C) SKIP 5 D) TOP 5
7,在查询结果中,如果要将 GRADE的字段名行显示为,成绩,,
则应使用 ( ) 描述 。
A)?“成绩,B) grade as 成绩 C) grade=成绩 D) list grade,成绩
8,在 SELECT命令中,根据 num字段建立分组依据的子句是 ( ) 。
A) ABOUT Student.num B) ORDER BY Student.num
C) GROUP BY num D) GROUP IN Student.num
9,视图 ( view) 是一个定制的虚拟表定义,包括 ( ) 。
A) 本地视图和远程视图 B) 基表视图和参数视图
C) 普通视图,页面视图和大纲视图 D) WEB视图和主控文档视图
10,修改当前数据库中的 stu741视图,可使用 ( ) 命令 。
A) modify command stu741 B) modify file stu741
C) modify view stu741,D) create sql view stu741
11,视图的联接条件主要有左联接,右联接,完全联接和 ( ) 四种类型 。
A) 独立联接 B) 共享联接 C) 远程联接 D) 内部联接
12.如果要将视图中的修改传送到基表的原始记录中,则应选用视图设计器的 ( ) 选项卡 。
A) 排序依据 B) 更新条件 C) 分组依据 D) 视图参数