第3章 查询与视图16学时)

 

一、【教学目标】

1.       理解查询的的概念,了解查询设计器各选项卡的功能。

2.       掌握查询文件的建立、运行和修改。

3.       理解视图的概念,了解视图设计器各选项卡的功能。

4.       掌握视图的建立、修改、打开、删除与视图参数的设置。

5.       理解SQL语言概念,SQL数据查询语言

二、【重点和难点】

重点

1.       查询设计器的使用方法与规则。

2.       分组查询的概念和使用方法。

3.       视图的概念和视图设计器的应用。

4.       综合应用设计器完成查询处理。

难点

1.       查询设计器各选项卡的功能。

2.       视图的数据更新。

3.        掌握(SQL)结构化查询语言

三、学法指导

1.       查询和视图是VFP6的重要组成部分,是非常相似的一种查询数据库中数据的方法。

2.       查询是以磁盘文件形式存放的程序,其扩展名为.QPR,它通过DO命令来执行。

3.       视图是一种定制的虚拟表,是依附于基表上的寄生表。

4.       建立本地视图的方法与建立查询的方法相似。

5.       可以通过视图更新源表中的数据,这是视图与查询的本质区别。

6.       查询和视图都可以通过SQL-SELECT语句实现,查询和视图的SQL语句可以通过显示SQL窗口按钮查看。

四、【教学要点】

3.1查询与视图(6学时)

3.1.1查询的概念

查询是预先定义好的一个SQL SELECT 语句(且以查询文件保存)在不同的时候可反复使用(类似运行程序),提高效率。查询是从数据库的一个表、关联的多个表或视图中检索出符合条件的信息,输出查询结果,查询以扩展名 .QPR 的文件保存在磁盘上,可作为表单、报表的数据来源。

1使用查询设计器创建查询

方法步骤:

1)启动“查询设计器”

2)添加“表”

3)根据问题的需要,作如下操作:

选择显示字段、设置筛选记录条件、排序、分组、设置查询去向等

【例2.1】 由“销售.DBF”和“订购单.DBF”查询销售利润。

信息如下:

订购单表


销售表


方法步骤

、创建查询设计器

打开“项目管理器”,选择“数据”选项卡,单击“新建”按钮,选择“新建查询”,界面如图2-1 所示:


2-1 查询设计器

、添加表(参阅图2-1

、设置表的关联(参阅图2-2


2-2

在“查询设计器”中选择“联接”选项卡,如图2-2

VFP6中表间的联接有四种类型,分别是:

n                       Inner Join:内部联接,指定只有满足联接条件的记录包含在结果中,此类型是默认的,也是最常用的;

n                       Right Outer Join:右联接,指定满足联接条件的记录,以及满足联接条件右侧的表中记录(即使不匹配联接条件)都包含在结果中;

n                       Left Outer Join:左联接,指定满足联接条件的记录,以及满足联接条件左侧的表中记录(即使不匹配联接条件)都包含在结果中;

n                       Full Join:完全联接,指定所有满足和不满足联接条件的记录都包含在结果中。

、选择显示字段,参阅图2-1

根据建立查询的目的,选择查询结果中应包含的字段。操作方法与用向导设计查询的方法相同。在本示例中先在“查询设计器”中选择“字段”选项卡,然后从可用字段列表框中选择:

、设置筛记录条件,参阅图2-3


2-3

选择表中符合条件的一部分记录而不是全部记录是查询的重要任务。可以利用查询设计器中的“筛选”选项卡。“筛选”选项卡可确定用于选择记录的字段和比较准则,以及输入与该字段进行比较的示例值。

、运行查询,参阅图2-4

在完成了查询的设计工作并指定了结果输出去向后,可通过以下五种方式之一运行查询:

■在查询设计器区域内单击右键,在弹出菜单中选择“运行查询”;

■在“项目管理器”中选定查询的名称,然后选定“运行”按钮;

■在“查询”菜单中选择“运行查询”:

■在命令窗口中键入DO 查询名.qpr

■单击系统常用菜单上的“运行”按钮。


2-4

查询结果的输出

查询检索的信息,可以输出到不同的目的地,以用作不同的用途。如果没有选定输出的目的地,查询结果将显示在浏览窗口中。查询输出目的可以是浏览窗口、临时表、表、图形、屏幕、报表、标签等。选择结果的去向方法如下:

单击“查询设计器工具”中的【查询去向】按钮,或者从【查询】菜单中选择【查询去向】,可看到如图2-5所示的“查询去向”对话框。


图示2-5

对话框中的按钮含义如下:

【浏览】:在浏览窗口中显示查询结果,这是查询缺省设置;

【临时表】:将查询结果存储在一个临时只读表中。多次查询的结果可放在不同的表内。该表可用于浏览数据,制作报表等,直到用户关闭它们;

【表】:将查询的结果保存在一个命名的表(.DBF )中,此时查询的结果是真正的存放到磁盘上的,多次查询的结果可放在不同的表内;

【图形】:使查询结果可用于Microsoft Graph(包含在VFP6中的一个独立的应用程序)中制作图表;

【屏幕】:在VFP6主窗口或当前活动输出窗口中显示查询结果;

【报表】:将输出送到一个报表文件(.FRX)中;

【标签】:将输出送到一个标签文件(.LBX)中。

选定一个去向,按一定的步骤设置一些属性,然后单击【确定】按钮,系统就将按意图放置查询结果。

【例2.2】建立项目管理器(aa.prj),并建立数据库(bb.doc),在数据库中添加表(商品.dbf销售.dbf),在两表间建立永久关系;建立查询quye,内容包括:商品名称,销售量。

商品.dbf 结构、记录参阅图2-6,图2-7;表销售.dbf 结构、记录参阅图2-8,图2-9

商品表


2-6


2-7

销售表


2-8


2-9

操作步

、建立项目管理器,建立数据库、添加上述表

、在表商品.dbf 中按商品编号建立主索引,在表销售.dbf 中按商品编号建立普通索引,再建立永久关系,结构如图2-10 所示


2-10

、建立查询,选定字段(商品名称、销售量),参阅图2-11


2-11

、运行查询,结果参阅2-12


2-12

3.1.2视图的概念

视图是从一个或多个数据表中导出的“表”。它与数据表不同的是,视图中的数据还是存储在原来的数据表中,因此可以把它看作是一个“虚表”。

视图是不能单独存在的,它依赖于某一数据库且依赖于某一数据表而存在,只有打开与视图相关的数据库才能创建和使用视图。

视图兼有“表”和“查询”的特点,与查询类似的是:可从一个或多个相关的表中提取信息;与表类似的是:可用来更新表中信息并保存。

创建视图时,Visual FoxPro 系统仅在当前数据库中保存一个视图的定义,该定义中包括视图中的表名、字段名及其属性设置。在使用视图时,系统根据视图的定义构造一条SQL语句,定义视图的数据。

视图的创建方法与创建查询类似。

1.      创建视图

1)、利用视图向导创建视图

利用视图向导可以创建单表视图和一对多视图

可以使用“本地视图向导”创建本地视图。

使用“远程视图向导”可以在ODBCOpenDataBaseConnection)数据源的表上建立可更新的视图。

2)、利用视图设计器创建视图

可以使用“视图设计器”创建新的视图或修改已有的视图。“视图设计器”同“查询设计器”的界面和功能类似。

方法步骤:

启动“视图设计器”

同“查询设计器”一样可以“项目管理器”中启动,或使用“文件”菜单启动。另外,因为视图建在数据库中,所以还可以从“数据库设计器”中启动:

在“数据库设计器”中单击鼠标右健,在快捷菜单中选择“新建本地视图”命令,在“新建本地视图”对话框中单击“新建视图”按钮。

添加表
同创建新查询一样,在创建新视图时,也会打开“添加表和视图”对话框,提示选择设计视图时所需的表或视图。

“视图设计器”窗口

同“查询设计器”类似

“视图设计器”选项卡

[字段]选项卡:属性

[更新条件]选项卡:用于指定更新视图的条件,将视图中的修改传送到视图所用的原始记录中去(仅适用于“视图设计器”,而“查询设计器”中没有)

2.利用视图更新数据

虽然视图是一个“虚表”,但是也可以利用视图更新数据表中的数据。因为视图可以限定数据表中数据的使用范围,因此,也就限定了可更新的数据,数据表中其他的数据就不会被破坏,由此可以提高数据维护的安全性。

1)使表可更新

如果希望在表上所作的修改能回送到源表中,可用视图更新数据。在“视图设计器”的“更新数据”选项卡中可设置更新条件。需要设置“发送SQL更新”选项,必须至少设置一个关键字段来使用这个选项。如图示2-6

2)设置关键字段

Visual FoxPro 用关键字段来唯一的标识那些已在本地修改过的远程表中的更新记录。

如图示2-13可以通过单击“钥匙形”列使之前面出现“P”来设置或取消关键字段。“钥匙形”列是一个开关。

如果已经改变了关键字段,而又想把它们恢复到源表中的初始设置,选择“重置关键字”。Visual FoxPro 会检查表并利用这些表中的关键字段。


2-13

 

3)更新指定字段

如果希望表中的字段可更新,必须至少设置一个关键字段。如果字段未标注为可更新的,用户虽然可以在表单中或浏览窗口中修改这些字段,但修改的值不会返回到源表中。单击字段名旁边的“可更新列”(笔形)。即使之前面出现“P”。如果想使表中的所有字段可更新,单击“全部更新”按钮,使所有字段可更新。“全部更新”不影响关键字段。

【例2.3】创建视图view_cb。本题所用表文件参阅上例。

分析:本题可直接编写命令执行;也可通过建立视图,生成SQL命令再执行,建立视图的基本步同查询。

 

3.2 关系数据库标准语言SQL

3.2.1 SQL 概述

结构化查询语言是1974年由ChamberilinBoyce提出的,美国IBM公司经过修改,将它用于自己的原型关系数据库系统System R 中。在此基础上,IBM公司将其商品化,并把它命名为SQL

1.SQL语言的主要功能

数据定义:可以完整的定义数据库和表结构,包括数据库生成后的结构修改、删除功能。

数据管理:可以实现表中数据的输入、修改、删除和更新。

数据查询:可以实现对数据库内容的查询。

2.SQL语言的主要特点

SQL是非过程化的语言。

SQL提供的操作命令如下:

SELECT:从一个表或者多个表中检索数据;

CREATE:创建数据库和表,表中的每个字段由字段名、数据类型、数据精度、小数位数、空值以及参照完整性规则确定;

DROP:从磁盘或数据库中删除表;

ALTER:修改表结构,可以修改表中的每个字段的名字、数据类型、数据精度、小数位数、空值以及参照完整性规则确定;

DELETE:标记表中要删除的记录;

INSERT:追加记录到已有表的尾部;

UPDATE:更新表中的记录;

SQL具有可移植性。

SQL语言是结构或语言,他的语言形象、易于理解。

SQL语言十分灵活并具有强大的查询功能。

SQL语言既可独立使用,又可内嵌到程序设计语言中以程序方式使用

3.2.2 SQL数据定义语言

该语言用于向数据库系统声明数据库结构,由命令CREATEDROPALTER 组成

1.建立表结构命令:

CREATE TABLE

功能:创建一个有指定字段的表

语法:

CREATE TABLE|DBF TableName1 [FREE]FieldName1 FieldType[(nFieldWidth

[,nPrecision])][Null|NOT Null][CHECK lExpression1][ERROR cMessageText1][DEFAULT

Expression1 ][ PRIMARY KEY UNIQUE] [REFERENCES TableName2][TAG

TagName1]][,PRIMARY KEY lExpression2 TAG TagName2 [,UNIQUE lExpression3 TAG

Name3][,FOREIGN KEY lExpression4 TAG TagName4 REFERENCES TableName3]

[,CHECK lExpression2 [ERROR cMessageText2]]) |FROM ARRAY ArrayName

说明:

TableName1 指定要创建的表名

FREE 指明需创建是自由表

FieldName1 FieldType [ ( nFieldWidth [ ,nPrecision ] ) ] 分别指定字段名,字段类型、字段宽度,小数位数

Null | NOT Null 指定该字段属性能否为空值

CHECK lExpression1 指定字段的有效性规则

ERROR cMessageText1 指定当违反字段规则时,显示的出错信息

DEFAULT Expression1 指定字段的的默认值

PRIMARY KEY | UNIQUE 指定该字段为主索引或候选索引

REFERENCES TableName2 ] [ TAG TagName1 ] 指定与之建立永久关系的父表

PRIMARY KEY lExpression2 TAG TagName2 指定要创建的主索引

UNIQUE lExpression3 指定要创建的唯一索引

FOREIGN KEY lExpression4 TAG TagName4 创建一个外部索引,并建立与父表的关系

REFERENCES TableName3 指定与之建立永久关系的父表

CHECK lExpression2 [ ERROR cMessageText2 ] 指定表的有效性规则

FROM ARRAY ArrayName 指定一个已存在的数组名,数组中包含字段名、字段宽度等信息

【例2.4】使用 SQL 语句建立表:商品.DBF

CREATE TABLE 商品 (商品编号 c(6),商品名称 c(10),类别 c(10),单位 c(2),简介 m,图片 g

2