《VisualFoxPro数据库基础第7章数据查询与视图设计课件》由会员分享,可在线阅读,更多相关《VisualFoxPro数据库基础第7章数据查询与视图设计课件(85页珍藏版)》请在金锄头文库上搜索。
1、http:/ 数据查询与视图设计(时间:4次课,8学时)http:/ 7章章 数据查询与视图设计数据查询与视图设计n教教学学提提示示:建建立立数数据据库库保保存存数数据据的的目目的的是是为为了了使使用用数数据据为为决决策策提提供供依依据据,而而检检索索数数据据和和更更新新数数据据是是对对数数据据最最基基本本也也是是最最常常见见的的操操作作。本本章章主主要要介介绍绍查查询询和和视视图图的的设设计计以以及及结结构化查询命令的使用。构化查询命令的使用。n本本章章主主要要介介绍绍:查查询询的的创创建建方方法法;视视图图的的创创建建方方法法;查查询询和和视视图图的的区区别别;Visual FoxPro的
2、的SQL命命令令的的使使用用;查查询询设计器各选项卡的设置与设计器各选项卡的设置与SQL_Select子句的对应关系。子句的对应关系。http:/ 7章章 数据查询与视图设计数据查询与视图设计n7.1 查询查询n7.2 视图视图n7.3 SQL命令命令n7.4 查询程序设计实例查询程序设计实例 n7.5 上机指导上机指导 n7.6 习题习题 http:/ 查询查询n7.1.1 查询设计器简介查询设计器简介 n7.1.2 创建单表查询创建单表查询 n7.1.3 创建多表查询创建多表查询 n7.1.4 创建交叉数据表创建交叉数据表 n7.1.5 运行查询运行查询 http:/ 查询查询 使用查询设
3、计器可以创建查询,实现数据检索。 Visual FoxPro的查询设计器提供了一种直观而快速的数据检索途径,使用查询设计器可以从一个或多个表中检索满足条件的记录,还可以根据需要对检索到的记录进行排序和分组,并可根据检索结果创建表、报表或图表等以显示或保存检索结果。 如果仅从一个表中检索记录,就称为单表查询,否则,为多表查询。所创建的查询可以保存为默认扩展名为.QPR的查询文件,以供反复调用,执行指定的数据检索任务。 http:/ 查询设计器简介查询设计器简介 打开查询设计器窗口:单击系统菜单的【文件】|【新建】,单击【查询】单选按钮,单击【新建文件】按钮,在打开的【添加表或视图】对话框中,依次
4、将查询数据所在的表或视图添加完毕,单击【关闭】按钮,进入查询设计器窗口。 查询设计器窗口分为上下2个窗格:上窗格显示已添加的表或视图;下窗格显示6个选项卡,如图7.1.1所示,供设计查询使用。 图7.1.1 查询设计器选项卡http:/ 查询设计器简介查询设计器简介 各选项卡的功能如下:1. 【字段】选项卡:【字段】选项卡用于指定出现在查询结果中的字段或表达式。可以通过在【可用字段】列表中,选择要添加的字段,将其添加到【选定字段】列表中。如果要输出的是表达式,则可将表达式直接输入到【函数和表达式】文本框中,也可以单击其右侧的按钮,通过表达式生成器来生成一个表达式。字段或表达式在【选定字段】列表
5、中的顺序,就是在查询结果中出现的顺序,可以通过上下拖动其左侧的按钮来改变字段的输出顺序。 2. 【联接】选项卡:【联接】选项卡在创建多表查询时使用,用来指定匹配多个表或视图中记录的连接条件表达式和连接类型,连接类型有如下4种:(1)内部连接:相关联的两个表中,只有满足连接条件的记录才出现在查询结果中,是默认的也是最常用的连接类型。(2)左连接:满足连接条件的记录,以及连接条件左侧表中的记录(即使不满足连接条件)都出现在查询结果中。(3)右连接:满足连接条件的记录,以及连接条件右侧表中的记录(即使不满足连接条件)都出现在查询结果中。(4)完全连接:所有满足和不满足连接条件的记录都出现在查询结果中
6、。 http:/ 查询设计器简介查询设计器简介 3. 【筛选】选项卡:【筛选】选项卡用于设置在源表中选择记录的条件表达式,该卡含有如下各项:n字段名:可在下拉列表中选择用于设置条件的字段或表达式。n条件:可在下拉列表中选择一种比较符号,其中除了有前面章节已介绍过的关系运算符外,还有Like:在实例文本框中可使用含通配符_(下划线)和%(百分号)的实例,表示指定字段与之做相似比较,其中_代表一个任意字符,%代表若干任意字符;Is Null:表示选择字段值为空(Null)的记录;Between:与之相配合的是实例文本框中以西文逗号分隔的2个实例数值,用于限定指定字段的数值范围;In:与之相配合的是
7、实例文本框中几个以西文逗号分隔的实例数值,它表示指定字段是否与某个实例相匹配。n实例:用于输入具体的条件值。n大小写:在进行字符数据的比较时,是否区分大小写。n否:对设置的条件表达式进行非运算。n逻辑:若想使当前行条件与下行条件构成复合条件,则在下拉列表中选择相应的AND或OR来连接,如果设置只有一行的简单条件则使用默认的【无】。n插入:单击【插入】按钮,可以在当前条件行之上插入一个空行。n移去:选中一个条件行时,单击【移去】按钮可以将该条件行删除。 http:/ 查询设计器简介查询设计器简介 4. 【排序依据】选项卡:【排序依据】选项卡用来从选定字段中选择排序依据项,以确定查询结果中记录的排
8、列顺序。被添加到【排序条件】列表中的字段顺序是排序关键字的顺序,可以通过拖动左侧的按钮来改变其顺序,从而形成第一排序关键字、第二排序关键字、等等。5. 【分组依据】选项卡:【分组依据】选项卡用于从源表或视图的全部字段中选择字段,使查询结果的行根据所选择的字段进行分组,通常与求和、计数、求平均值等查询表达式配合,实现分组统计。6. 【杂项】选项卡:【杂项】选项卡用于为查询结果指定一些其他的记录选择条件,这些条件简述如下:n无重复记录:重复记录是指每个输出项的值都匹配的记录行。若选择了【无重复记录】项,则重复记录在查询结果中只出现一次。n交叉数据表:当【选定字段】恰好为3项时才可以使用本项,参见7
9、.1.4节。n列在前面的记录:默认为【全部】,即满足查询条件的全部记录均出现在查询结果中;设置【记录个数】和【百分比】,表示满足查询条件的前若干条或百分比的记录出现在查询结果中。 http:/ 查询设计器简介查询设计器简介 当查询设计器打开后,通常会同时显示查询设计器工具栏,如图7.1.2所示,各工具按钮功能如下:n添加表:打开添加表或视图对话框,向当前查询中添加需要的表或视图。n移去表:选定了表或视图后此按钮才可用,功能为从当前查询中移去选定的表或视图。n添加连接:当查询中有2个或以上表时此按钮才可用,用来为表之间添加连接条件。n显示/隐藏SQL窗口:是一个开关按钮,用来打开或关闭当前查询所
10、对应的SQL命令的显示窗口。用户在查询设计器中所做的所有设置最终都对应为一条SQL命令,该命令由系统自动生成,运行查询就是执行该SQL命令。用户可随时通过此按钮,打开SQL命令显示窗口,查看系统为当前查询生成的相应的标准的SQL命令。这一点对SQL命令的掌握是十分有帮助的,SQL命令将在7.3节介绍。n最大化/最小化上部窗格:用来使查询设计器的上部窗格最大化或最小化。n查询去向:打开查询去向对话框,指定查询结果的输出形式,它们是“浏览”、“临时表”、“表”、“图形”、“屏幕”、“报表”和“标签”,共7种输出形式,默认形式为“浏览”。 图7.1.2 查询设计器工具栏http:/ 创建单表查询创建
11、单表查询 单表查询就是要查找的数据仅仅出自于一个表文件,因此,在使用查询设计器时,无须做任何联接设置,例如,从学生表中查询男生的学号、姓名、年龄和性别,并按年龄降序排列记录;再例如,根据学生表按性别查询平均入学分数,等等。例例7.1 根据学生数据表建立查询文件NSNL.QPR,查询男生的学号、姓名、年龄和性别,并按年龄降序排列记录。操作步骤简述如下:(1)打开查询设计器并添加表。选择【文件】|【新建】|【查询】命令,单击【新建文件】按钮 ,选择数据表:“学生”,单击【添加】按钮,单击【关闭】按钮。(2)选择字段。单击字段选项卡,在【可用字段】列表中,依次双击“学生.学号”、“学生.姓名”、“学
12、生.性别”,将3个字段添加到【选定字段】列表中。在【函数和表达式】文本框中输入YEAR(DATE()-YEAR(学生.出生日期) AS 年龄,单击【添加】按钮,把该表达式添加到【选定字段】列表中。 http:/ 创建单表查询创建单表查询 (3)筛选记录。单击【筛选】选项卡标签,在【字段名】下拉列表中选择:学生.性别,条件符号使用等号=,在【实例】文本框中输入“男”。(4)排序记录。单击【排序依据】选项卡标签,双击【选定字段】列表中用于计算年龄的表达式,把它添加到【排序条件】列表中,在【排序选项】中单击【降序】。(5)运行查询。单击系统菜单的【查询】|【运行查询】,查询结果如图7.1.3所示。(
13、6)保存查询。关闭查询设计器窗口,在【保存】对话框中输入文件名“NSNL”,单击【确定】按钮。 图7.1.3 例7.1查询结果http:/ 创建多表查询创建多表查询 多表查询就是要查找的数据来自于不止一个的、相关的表文件。例如,查询学生的学号、姓名、性别、专业、计算机、英语、高等数学成绩和总分,查询数据需按学号相同的关联方式从学生表和成绩表两表中取得。由此可见,使用查询设计器创建多表查询,通常需要使用【连接】选项卡设置表之间的连接关系。具体创建过程可参考7.5.2节。http:/ 创建交叉数据表创建交叉数据表 在查询设计过程中,当【选定字段】刚好为3项时,在【杂项】选项卡中的【交叉数据表】选项
14、才可用。它使查询结果以交叉表格形式传送给表、报表或图形,3个选定字段应代表交叉表格的X轴、Y轴和单元值。选择【交叉数据表】选项后,系统自动为查询选择分组和排序依据字段,查询不可修改。例例7.2 根据学生表创建交叉数据表,查询各专业男、女生的平均入学成绩。操作步骤简述如下:(1)打开查询设计器并添加表。选择【文件】|【新建】|【查询】命令,单击【新建文件】按钮,选择数据表“学生”,单击【添加】按钮,单击【关闭】按钮。(2)选择字段。单击【字段】选项卡标签,将【可用字段】列表中的“学生.性别”、“学生.专业”,添加到【选定字段】列表中。单击【函数和表达式】文本框右侧的按钮,打开【表达式生成器】,在
15、【数学】函数下拉列表中单击求平均值的函数AVG,在【字段】列表中双击“入学成绩”,这时,【表达式】文本框中显示“AVG(学生.入学成绩)”,单击【确定】按钮,该表达式出现在【函数和表达式】文本框中,单击【添加】按钮,把该表达式添加到【选定字段】列表中。 http:/ 创建交叉数据表创建交叉数据表 (3)设置交叉数据表。单击【杂项】选项卡标签,选择【交叉数据表】。(4)运行查询。单击系统菜单的【查询】|【运行查询】,在浏览窗口中显示的查询结果如图7.1.4所示。图7.1.4 例7.2查询结果http:/ 运行查询运行查询 运行查询有以下两种方法:(1)在查询设计器中选择运行查询:【查询】|【运行
16、查询】。(2)使用DO命令运行查询,命令格式为:DO 。例如,运行例7.1建立的查询,使用命令:DO nsnl.qpr。 http:/ 视图视图 n7.2.1 创建视图创建视图 n7.2.2 修改视图修改视图 n7.2.3 删除视图删除视图 n7.2.4 打开打开/关闭视图关闭视图 http:/ 视图视图 如果既要检索数据还要更新数据,就可以使用视图。视图兼有表和查询的特点。与查询相类似的是,可以用来从一个或多个相关联的表中提取所需数据;与表相类似的是,可以更新其中的数据,并将更新结果永久保存在磁盘中。 视图是属于数据库的,Visual FoxPro在数据库中仅保存对每个视图的定义。该定义包括
17、视图中要引用数据所在表的表名、字段名及其属性设置等。当使用视图时,Visual FoxPro根据视图定义临时获取数据。因此,视图被称为虚表或逻辑表。 仅引用一个数据表中的数据所建立的视图称为单表视图;通过引用多个数据表中的数据而建立的视图称为多表视图。 使用当前数据库表中数据建立的视图称为本地视图;使用远程服务器上数据建立的视图称为远程视图。 http:/ 创建视图创建视图 创建视图的过程与创建查询的过程十分相似,但用来创建查询的数据源既可以是数据库表又可以是自由表,而视图所引用的表必须是数据库表。因此,创建视图之前,必须首先打开数据库,然后再打开视图设计器,方式如下:方式一:(1)使用命令打
18、开数据库。在命令窗口键入:OPEN DATABASE 。(2)打开视图设计器。选择【文件】|【新建】|【视图】命令,单击【新建文件】按钮,选定所需的数据表,单击【添加】按钮,单击【关闭】按钮进入视图设计器窗口。 方式二:(1)使用菜单打开数据库。选择【文件】|【打开】命令,选择所需数据库,进入数据库设计器窗口。(2)打开视图设计器。选择【数据库】|【新建本地视图】|【新建视图】命令,选择所需的数据表,单击【添加】按钮,单击【关闭】按钮进入视图设计器窗口。 观察视图设计器窗口可以发现,视图设计器仅仅比查询设计器窗口多了一个【更新条件】选项卡标签,其余选项卡标签相同,而视图设计器工具栏比查询设计器
19、工具栏少了一个【查询去向】按钮,其余按钮相同。 http:/ 创建视图创建视图 1. 单表视图例例7.3 根据学生数据表建立视图“平均入学成绩”,含有每个专业学生平均入学分数,记录按平均分降序排列。操作步骤简述如下:(1)打开数据库。用菜单方式或命令方式打开学生管理数据库。(2)打开视图设计器。添加学生表。(3)选择字段。单击字段选项卡,双击【可用字段】列表中的“学生.专业”,将其添加到【选定字段】列表中,单击【函数和表达式】文本框右侧按钮,打开表达式生成器,在【数学】函数下拉列表中单击AVG函数,在【字段】列表中双击“入学成绩”,在【表达式】文本框中的表达式行尾输入“AS 平均入学成绩”,单
20、击【确定】按钮,单击【添加】按钮,把表达式“AVG(学生.入学成绩)AS 平均入学成绩”,添加到【选定字段】列表。 http:/ 创建视图创建视图 (4)选择排序字段。双击【选定字段】中计算平均入学成绩的表达式,将其添加到【排序条件】列表中,选中【排序选项】中的【降序】。(5)选择分组字段。单击【分组依据】选项卡,双击【可用字段】列表中的“学生.专业”,将其添加到【分组字段】列表中。图7.2.1 例7.3视图浏览(6)查看视图。单击系统菜单的【查询】|【运行查询】,显示结果如图7.2.1所示。(7)保存视图。关闭视图窗口,在【保存】对话框中输入视图名“平均入学成绩”,单击【确定】按钮。打开数据
21、库设计器窗口查看学生管理数据库,可以看到刚刚建立的视图。 http:/ 创建视图创建视图 2. 多表视图例例7.4 根据学生表和成绩表建立视图“高等数学成绩”,含有计算机专业学生的学号、姓名、专业和高等数学成绩,记录按学号升序排列。操作步骤简述如下:(1)打开数据库。用菜单方式或命令方式打开学生管理数据库。(2)打开视图设计器。添加学生表和成绩表。(3)设置连接表达式。单击【连接】选项卡标签,设置连接条件为:学生.学号成绩.学号,连接类型为内部连接。(4)选择字段。单击【字段】选项卡标签,依次双击【可选字段】列表中的“学生.学号”、“学生.姓名”、“学生.专业”、“成绩.高等数学”,将个字段添
22、加到【选定字段】列表中。 http:/ 创建视图创建视图 (5)设置筛选条件。单击【筛选】选项卡标签,设置筛选条件为:学生.专业计算机。(6)设置排序依据。单击【排序依据】选项卡标签,双击【选定字段】列表中的“学生.学号”,把该字段添加到【排序条件】列表中,在【排序选项】中选择【升序】。 图7.2.2 例7.4视图浏览(7)查看视图。选择【查询】|【运行查询】命令,显示结果如图7.2.2所示。(8)保存视图。关闭视图窗口,在【保存】对话框中输入视图名“高等数学成绩”,单击【确定】按钮。 http:/ 创建视图创建视图 3. 参数视图 在前面例题所建立的视图中,对记录进行筛选的筛选实例都是在设计
23、阶段就确定了的,视图中的记录是相对固定的。如上例,筛选条件为:学生.专业计算机,筛选实例“计算机”在设计阶段即已确定。如果希望在每次使用视图时临时指定记录的筛选实例,例如,打开视图时提示输入具体专业名称以筛选指定专业的记录,则可以采用参数视图,如下例。例例7.5 根据学生表建立视图“专业学生”,给出用户指定专业的学生信息。操作步骤简述如下:(1)打开数据库。用菜单方式或命令方式打开学生管理数据库。(2)打开视图设计器。添加学生表。(3)选择字段。单击【字段】选项卡标签,单击【全部添加】按钮选择全部字段为选定字段。(4)设置筛选条件。单击【筛选】选项卡标签,设置筛选条件为:学生.专业=?专业。
24、http:/ 创建视图创建视图 (5)输入参数名。选择【查询】|【视图参数】命令,在视图参数对话框的参数名文本框中输入“专业”,选择【类型】为【字符型】,单击【确定】按钮。(6)查看视图。选择【查询】|【运行查询】命令,在打开的【视图参数】对话框中输入“管理”,如图7.2.3所示,单击【确定】按钮,显示结果如图7.2.4所示。(7)保存视图。关闭视图窗口,在【保存】对话框中输入视图名“专业学生”,单击【确定】按钮。 图7.2.4 例7.5视图浏览图7.2.3 视图参数对话框http:/ 创建视图创建视图 4. 可更新数据视图 使用视图,可以从表中提取一组记录,改变这些记录的值,并把更新结果送回
25、到源表中,视图的这一功能是通过对视图设计器的【更新条件】选项卡进行相应设置来实现的。如图7.2.5所示,更新条件选项卡的各项功能如下:(1)【表】下拉列表:指定视图使用的、可以更新数据的表。(2)【字段名】列表:显示视图的选定字段,这些字段又可分为如下3类: 图7.2.5 更新条件选项卡n关键字段:在钥匙符号列有标记的是关键字段,关键字段用来使视图中的修改与源表中的原始记录相匹配。系统自动将表的主关键字标记为关键字段,用户可以根据需要另选其他字段作为关键字段,方法是点击该字段的钥匙列按钮使标记出现。n可更新字段:在笔型符号列有标记的是可更新字段。n普通字段:在钥匙和笔型符号列均无标记的字段。
26、http:/ 创建视图创建视图 (3)【重置关键字】按钮:重新将表的主关键字标记为关键字段。(4)【全部更新】按钮:把除关键字段以外的所有字段标记为可更新字段。(5)【发送SQL更新】复选框:是否把对视图记录的修改传送给源表。(6)【SQL WHERE子句包括】单选项:在远程视图进行更新源表操作时,用于检测服务器上的更新冲突,4个选项如下:n【关键字段】:当源表中的关键字段被改变时,更新失败。n【关键字和可更新字段】:当远程表中的可更新字段被改变时,更新失败。n【关键字和已修改字段】:当在本地修改的任一字段在源表中已被改变时,更新失败。n【关键字和时间戳】:当远程表记录的时间戳首次检索以后又被
27、修改过,更新失败。(7)【使用更新】单选项:用于指定字段在服务器上的如下2种更新方式:nSQL DELETE然后INSERT:删除源表记录,再创建一个新的在视图中被修改的记录。nSQL UPDATE:用视图字段的变化来修改源表的相应字段。 http:/ 创建视图创建视图 例例7.6 根据学生表建立视图“更改专业”,包含所有学生的学号、姓名、性别和专业字段,使专业字段可更新。操作步骤简述如下:(1)打开学生管理数据库。(2)打开视图设计器,添加学生表,在【字段】选项卡中选定所需的4个字段。(3)单击【更新条件】选项卡标签,如图7.2.5所示,指定关键字段和可更新字段,选中【发送SQL更新】。(4
28、)关闭视图设计器窗口,保存视图为“更改专业”。(5)在数据库设计器窗口,双击视图“更改专业”,在打开的浏览窗口,将学生“章硕”的专业字段值由“管理”改为“计算机”,关闭该视图浏览窗口,双击学生数据表,观察到“章硕”的所学专业已改为“计算机”。 http:/ 修改视图修改视图 修改视图仍在视图设计器中进行,为修改视图而打开视图设计器的方式有如下2种:(1)菜单方式。选择【文件】|【打开】命令,选择要修改的视图所属的数据库,进入数据库设计器窗口,选中要修改的视图,右击打开快捷菜单或单击系统菜单的【数据库】|【修改】,进入视图设计器窗口。(2)命令方式。顺序执行命令:OPEN DATABASE 和M
29、ODIFY VIEW ,进入视图设计器窗口。 http:/ 删除视图删除视图 删除视图有菜单方式和命令方式2种。(1)菜单方式。选择【文件】|【打开】命令,选择要删除的视图所属的数据库,进入数据库设计器窗口,选中要删除的视图,右击选择【删除】或者单击系统菜单的【数据库】|【移去】,删除选定视图。(2)命令方式。顺序执行命令:OPEN DATABASE 和DELETE VIEW ,删除指定视图。 http:/ 打开打开/关闭视图关闭视图 要打开视图,首先要打开其所属数据库,之后的打开和关闭操作与数据库表是一样的。1. 打开视图(1)菜单方式:在数据库设计器中,双击要打开的视图。(2)命令方式:顺
30、序执行命令:OPEN DATABASE 和USE IN ,打开指定视图。2. 关闭视图使用命令:USE IN ,关闭在指定工作区中打开的视图。 http:/ SQL命令命令 n7.3.1 Visual FoxPro的的SQL查询命令查询命令 n7.3.2 Visual FoxPro的的SQL定义命令定义命令n7.3.3 Visual FoxPro的的SQL操纵命令操纵命令 http:/ SQL命令命令 结构化查询语言SQL(Structured Query Language)是一种通用的、功能强大的关系数据库标准语言,国际标准化组织已将其确定为关系数据库语言的国际标准,被绝大多数商品化的关系数
31、据库系统所采用,它简洁易学、使用方便灵活、功能丰富。前面已经提到过,在使用设计器设计查询和视图时,可随时查看所对应的SQL命令,可见Visual FoxPro也支持SQL命令。Visual FoxPro的SQL命令可实现数据定义、操纵和查询功能。 http:/ Visual FoxPro的的SQL查询命令查询命令 SQL_SELECT命令是Visual FoxPro的SQL查询命令,该命令的查询功能十分丰富,使用方便灵活,可实现单表查询和相关多表查询,并可嵌套使用。1. SQL_SELECT命令 简单地讲,SQL_SELECT命令实现的是从指定表,按指定方式查找指定数据并送到指定地点的操作。该
32、命令的可选项较多,这里仅介绍其一般格式。命令格式:SELECT ALL | DISTINCT TOPPERCENT. AS, .AS .FROM !INNER | LEFT | RIGHT | FULL JOIN ! ON INTO | TO FILE ADDITIVE | TO PRINTER PROMPT | TO SCREENWHERE GROUP BY , . HAVING ORDER BY ASC|DESC,ASC|DESC.http:/ Visual FoxPro的的SQL查询命令查询命令 对应查询设计器的各个选项卡,不难理解上述命令当中各个子句的含义。. AS,.AS .对应于【
33、字段】选项卡中的选定字段列表。它们既可以是字段名,也可以为表达式,还可以只用一个*,表示输出表的全部字段,配合SELECT通常被称为SELECT子句,是命令中不可缺少的部分;!给出输出列表达式中所涉及字段的所属表,即数据来源。配合FROM通常被称为FROM子句,也是命令中不可缺少的部分。INNER | LEFT | RIGHT | FULL JOINON 选项用于设置多表查询的连接条件,与【连接】选项卡中的设置相对应,INNER | LEFT | RIGHT | FULL分别表示内部连接、左连接、右连接和完全连接,省略时默认为内部连接。WHERE 子句用于设置对查询结果记录的筛选条件,与【筛选
34、】选项卡中的设置相对应。GROUP BY , .子句用于设置分组依据,与【分组依据】选项卡中的设置相对应。HAVING 选项用于对分组记录进行筛选,只有满足筛选条件的分组记录才可能被输出,HAVING子句要与GROUP BY子句配合使用。http:/ Visual FoxPro的的SQL查询命令查询命令 ORDER BY ASC|DESC,ASC|DESC.子句用于表示查询结果记录的排列方式,与【排序依据】选项卡中的设置相对应。若排序依据列为表达式,则通常使用该列在输出列中的序号表示。ASC/DESC分别表示升序和降序,省略时,默认为升序。ALL | DISTINCT 和TOPPERCENT选
35、项分别与【杂项】选项卡中的“无重复记录”和“列在前面的记录”设置相对应,ALL表示输出满足条件的全部记录,是选项省略时的默认值;DISTINCT表示重复的记录只输出一次,即查询结果当中无重复记录;TOP子句表示输出查询结果的前N条(无PERCENT时)或前N%条(有PERCENT时),TOP子句必须配合ORDER BY子句使用,当排序依据字段有重复值时,输出的记录可能多于TOP的设置值。INTO | TO FILE ADDITIVE | TO PRINTER PROMPT | TO SCREEN子句用于指定查询结果的去向。INTO子句的可以是:ARRAY 、CURSOR 、DBF 或TABLE
36、 ;TO FILE子句指定将查询结果送指定的文本文件,使用ADDITIVE表示将查询结果追加到指定的文本文件中,否则,覆盖文本文件内容;TO PRINTER PROMPT子句表示将查询结果送打印机输出,使用PROMPT表示打印之前弹出打印设置对话框,供用户进行打印设置;TO SCREEN子句表示在Visual FoxPro主窗口或用户自定义的当前窗口中显示查询结果。当INTO或TO子句省略时,查询结果显示在浏览窗口中。 http:/ Visual FoxPro的的SQL查询命令查询命令 由上述说明可知,SQL_SELECT命令的最简单形式是:SELECT FROM ,它表示在浏览窗口中显示指定
37、表的指定列。 另外,在SELECT子句中还可以使用以下函数实现统计查询:AVG():计算表达式的平均值。COUNT(/*):统计指定字段的值的个数/输出记录数。MAX():求表达式的最大值。MIN():求表达式的最小值。SUM():计算表达式的和。 使用上列函数时,若配合GROUP BY子句可以实现分组统计。http:/ Visual FoxPro的的SQL查询命令查询命令 2. SQL_SELECT命令使用示例(1)单表查询单表查询就是从一个表中查找所需数据,因此,在SQL_SELECT命令中不会出现JOIN_ON等用于设置表间连接条件的子句。例例7.7 查询学生的学号和姓名。SELECT
38、学生.学号,学生.姓名 FROM 学生命令执行结果如图7.3.1所示。 图7.3.1 例7.7命令执行结果http:/ Visual FoxPro的的SQL查询命令查询命令 例例7.8 查询招生专业。SELECT DISTINCT 学生.专业 FROM 学生命令执行结果如图7.3.2所示。例例7.9 查询英语专业的学生信息。SELECT * FROM 学生 WHERE 学生.专业 = 英语命令执行结果如图7.3.3所示。 图7.3.2 例7.8命令执行结果图7.3.3 例7.9命令执行结果http:/ Visual FoxPro的的SQL查询命令查询命令 例例7.10 查询所有王姓学生的信息。
39、SELECT * FROM 学生 WHERE 学生.姓名 LIKE 王%命令执行结果如图7.3.4所示。 例例7.11 查询管理专业学生的入学成绩,并按入学成绩降序排列记录。SELECT 学生.学号,学生.姓名,学生.专业,学生.入学成绩;FROM 学生;WHERE 学生.专业 = 管理;ORDER BY 学生.入学成绩 DESC命令执行结果如图7.3.5所示。 图7.3.4 例7.10命令执行结果图7.3.5 例7.11命令执行结果http:/ Visual FoxPro的的SQL查询命令查询命令 例例7.12 查询学生平均入学成绩。SELECT AVG(学生.入学成绩) AS 平均入学成绩
40、 FROM 学生命令执行结果如图7.3.6所示。 例例7.13 查询各专业学生平均入学成绩。SELECT 学生.专业, AVG(学生.入学成绩) AS 平均入学成绩;FROM 学生;GROUP BY 学生.专业命令执行结果如图7.3.7所示。例例7.14 查询学生人数。SELECT COUNT(*) AS 学生人数 FROM 学生命令执行结果如图7.3.8所示。 图7.3.6 例7.12命令执行结果图7.3.7 例7.13命令执行结果图7.3.8 例7.14命令执行结果http:/ Visual FoxPro的的SQL查询命令查询命令 例例7.15 查询各专业女学生人数,结果按人数升序排列。S
41、ELECT 学生.专业, COUNT(*) AS 女生人数;FROM 学生;WHERE 学生.性别 = 女;GROUP BY 学生.专业;ORDER BY 2命令执行结果如图7.3.9所示。 例例7.16 查询专业数量。SELECT COUNT(DISTINCT 学生.专业) AS 专业数 FROM 学生命令执行结果如图7.3.10所示。 在本例中,如果把命令中的DISTINCT去掉,执行结果显示的专业数为12,所统计的是专业字段值(非NULL)的个数,而不是专业的种类数。因此,需要对专业字段使用关键字DISTINCT把重复值去掉,从而实现本例要求。 图7.3.9 例7.15命令执行结果图7.
42、3.10 例7.16命令执行结果http:/ Visual FoxPro的的SQL查询命令查询命令 例例7.17 查询最高和最低入学成绩。SELECT MAX(学生.入学成绩) AS 最高入学成绩,; MIN(学生.入学成绩) AS 最低入学成绩;FROM 学生命令执行结果如图7.3.11所示。例例7.18 从成绩表中查询总分的最高分。SELECT MAX(成绩.计算机+成绩.英语+成绩.高等数学) AS 最高总分;FROM 成绩命令执行结果如图7.3.12所示。图7.3.11 例7.17命令执行结果图7.3.12 例7.18命令执行结果http:/ Visual FoxPro的的SQL查询命
43、令查询命令 (2)多表查询 多表查询是指从一个以上的相关表中查找所需数据,因此,表与表之间连接条件的设置通常是必不可少的。连接条件既可以通过JOIN_ON子句来设置,还可以通过WHERE子句来设置,只是WHERE子句无法指定连接类型。例例7.19 从学生表和成绩表中,查询学生的学号、姓名、性别、专业、计算机、英语、高等数学成绩和总分,查询结果首先按专业升序排列记录,专业相同时按总分降序排列记录。此例要求与例7.3完全相同,对应的SQL_SELECT命令如下:SELECT 学生.学号,学生.姓名,学生.性别,学生.专业,; 成绩.计算机,成绩.英语,成绩.高等数学,; 成绩.计算机+成绩.英语+
44、成绩.高等数学AS总分;FROM 学生 INNER JOIN 成绩 ; ON 学生.学号 = 成绩.学号;ORDER BY 学生.专业, 8 DESC http:/ Visual FoxPro的的SQL查询命令查询命令 若用WHERE子句描述学生表和成绩表之间的连接关系,同样可以实现本例要求,命令如下:SELECT 学生.学号,学生.姓名,学生.性别,学生.专业,; 成绩.计算机,成绩.英语,成绩.高等数学,; 成绩.计算机+成绩.英语+成绩.高等数学AS总分;FROM 学生,成绩;WHERE 学生.学号=成绩.学号;ORDER BY 学生.专业, 8 DESC 若命令中引用的字段名在FROM
45、子句所列出的所有表中是唯一的,则该字段名的前缀可以省略,否则,需使用所在表的别名做前缀以表明该字段属于哪个表,如上列命令可简化如下:SELECT 学生.学号,学生.姓名,性别,专业,计算机,英语,高等数学,; 计算机+英语+高等数学AS总分;FROM 学生,成绩;WHERE 学生.学号=成绩.学号;ORDER BY专业,8DESC命令执行结果如图7.3.13所示。 http:/ Visual FoxPro的的SQL查询命令查询命令 图7.3.13 例7.19命令执行结果http:/ Visual FoxPro的的SQL查询命令查询命令 例例7.20 查询计算机专业学生的成绩。SELECT 成绩
46、.*;FROM 成绩,学生;WHERE 成绩.学号 = 学生.学号 AND 学生.专业 = 计算机命令执行结果如图7.3.14所示。 图7.3.14 例7.20命令执行结果http:/ Visual FoxPro的的SQL查询命令查询命令 (3)嵌套查询 所谓嵌套查询是指,在一个SQL_SELECT命令的WHERE子句中含有另一个SQL_SELECT命令,这个命令通常被称为子查询。子查询的结果通常用来表示条件值。嵌套查询的WHERE条件通常有如下几种形式: ALL():筛选指定字段与全部子查询结果都满足条件的记录。 ANY/SOME():筛选指定字段至少与一个子查询结果满足比较条件的记录。 I
47、N():筛选指定字段值在子查询结果中的记录。 EXIST():只要子查询结果非空筛选条件就为真值。 其中,比较运算符为:、=、=、=和(!=,#)。 注意:HAVING子句的筛选条件不能使用子查询。http:/ Visual FoxPro的的SQL查询命令查询命令 例例7.21 查询入学成绩最高的学生信息。SELECT * FROM 学生;WHERE 学生.入学成绩=ALL(SELECT 学生.入学成绩 FROM 学生)命令执行结果如图7.3.15所示。 图7.3.15 例7.21命令执行结果http:/ Visual FoxPro的的SQL查询命令查询命令 例例7.22 查询计算机专业有选修
48、课程的学生信息,并以查询结果生成表文件“CC.DBF”。SELECT 学生.*; FROM 学生;WHERE 学生.学号 IN(SELECT 选课.学号 FROM 选课); AND 学生.专业=计算机;INTO TABLE CCBROWSE命令执行结果如图7.3.16所示。 图7.3.16 例7.22命令执行结果http:/ Visual FoxPro的的SQL定义命令定义命令 Visual FoxPro的SQL定义命令用于定义表结构、定义视图、修改表结构以及删除表或视图。1.定义表结构简单命令格式:CREATE TABLE FREE ( (,),(,)命令功能:建立一个含有指定字段的空表。
49、http:/ Visual FoxPro的的SQL定义命令定义命令 说明:(1)若使用FREE子句,或当前没有打开的数据库,则所建立的表为自由表;否则,所建立的表成为当前数据库中的数据表。(2)表示的符号见表7.3.1。只有字符型、数值型、浮点型和双精度型需要指定字段宽度或小数位数,其他数据类型的字段宽度省略,由系统自动给定。 符号表示类型符号表示类型C字符型B双精度型D日期型Y货币型T时间型L逻辑型N数值型M备注型F浮点型G通用型I整型表7.3.1 各种数据类型的表示符号http:/ Visual FoxPro的的SQL定义命令定义命令 例例7.23 在学生管理数据库中建立学生档案表,结构与
50、学生表相同。使用命令:OPEN DATABASE 学生管理CREATE TABLE 学生档案(学号C(7),班级编号C(2),姓名C(8),性别C(2),;出生日期D,党团员L,专业C(8),入学成绩N(8,0),;e_mail C(15),简历M) 执行上述命令,在学生管理数据库中,创建了一个名为“学生档案”的空表。 http:/ Visual FoxPro的的SQL定义命令定义命令 2.修改表结构简单命令格式1:ALTER TABLE ADD (,)命令功能:为指定表增加一个新的字段。简单命令格式2:ALTER TABLE ALTER (,)命令功能:对指定表修改指定字段的数据类型、字段宽
51、度或小数位数。简单命令格式3:ALTER TABLE DROP 命令功能:从指定表中删除指定字段。 http:/ Visual FoxPro的的SQL定义命令定义命令 例例7.24 为学生档案表增加一个通用型字段用以存放学生照片。执行命令:ALTER TABLE 学生档案 ADD 照片 G例例7.25 把学生档案表的入学成绩字段的数据类型改为整型。执行命令:ALTER TABLE 学生档案 ALTER 入学成绩 I例例7.26 删除学生档案表的照片字段。执行命令:ALTER TABLE 学生档案 DROP 照片 http:/ Visual FoxPro的的SQL定义命令定义命令 3.定义视图简
52、单命令格式:CREATE SQL VIEW AS 命令功能:由SQL_SELECT的描述生成指定的视图定义。例例7.27 由学生档案表生成视图“英语专业学生”,该视图含有英语专业的学生信息。执行命令:CREATE SQL VIEW 英语专业学生 AS SELECT * FROM 学生档案; WHERE 专业=英语 http:/ Visual FoxPro的的SQL定义命令定义命令 4. 删除表和视图命令格式1:DROP TABLE 命令功能:删除指定表。例例7.28 删除学生档案表。执行命令:DROP TABLE 学生档案命令格式2:DROP VIEW 命令功能:删除指定视图。例例7.29 删
53、除英语专业学生视图。执行命令:DROP VIEW 英语专业学生提示:学生档案表被英语专业学生视图引用,当该表被删除后,引用该表的视图虽在,但该视图已无法使用。 http:/ Visual FoxPro的的SQL操纵命令操纵命令 Visual FoxPro的SQL数据操纵命令用于对表中的记录进行更新,包括插入记录、删除记录和修改记录。1.插入记录命令格式:INSERT INTO (,)VALUES(,)命令功能:向指定表追加一条具有给定字段值的记录。 http:/ Visual FoxPro的的SQL操纵命令操纵命令 例例7.30 向学生表追加一条新记录:2004120,02,李柠,女,12/2
54、5/85,F,英语,608。执行命令:INSERT INTO 学生;(学号,班级编号,姓名,性别,出生日期,党团员,专业,入学成绩);VALUES;(2004120,02,李柠,女,1985-12-25,.,英语,608)说明: 命令执行后,记录指针指向追加的新记录。 若被追加记录的表尚未打开,命令执行时系统自动选择一个新的工作区把表打开追加记录,但当前工作区不变化;若被追加记录的表已经打开,但不在当前工作区,命令执行后,当前工作区不变化。 若省略字段名列表,则表示字段值的各表达式的排列顺序要与字段在表结构中的定义顺序一致。 http:/ Visual FoxPro的的SQL操纵命令操纵命令
55、2.修改记录命令格式:UPDATE SET =,= WHERE命令功能:对指定表中满足条件的记录,用指定表达式的值修改相应字段值。说明:省略WHERE时,表示对表中所有记录执行指定的修改操作。例例7.31 修改学生表中李柠的记录,将“党团员”改为“真值”,“专业”改为“管理”。执行命令:UPDATE 学生 SET 党团员=.T.,专业=管理; WHERE 学号=2004120 http:/ Visual FoxPro的的SQL操纵命令操纵命令 3.删除记录命令格式:DELETE FROM WHERE 命令功能:在指定表中,为满足条件的记录加删除标记。说明:省略WHERE时,表示为表中所有记录加
56、删除标记。例例7.32 将学生表中,学生李柠的记录删除。执行命令:DELETE FROM 学生 WHERE 学号=2004120SELECT 学生PACKhttp:/ Visual FoxPro的的SQL操纵命令操纵命令 上例中,无论学生表是否处于打开状态,均可执行DELETE FROM 命令。该命令执行后,学生表一定处于打开状态,但未必在当前工作区。而该删除命令仅仅为要删除的记录添加删除标记。如果要物理删除该记录,就要先使学生表所在工作区为当前工作区,然后执行PACK命令,使学生李柠的记录被真正删除。例例7.33 逻辑删除学生表的所有记录,再去掉所有删除标记。执行命令:DELETE FROM
57、 学生SELECT 学生BROWSERECALL ALLBROWSE http:/ 查询程序设计实例查询程序设计实例http:/ 查询程序设计实例查询程序设计实例例例7.34 根据学生表设计如图7.4.1所示的查询表单,具有按学号和专业查询学生档案的功能,文件名为“学生档案查询.SCX”。 图7.4.1 例7.34表单设计界面http:/ 查询程序设计实例查询程序设计实例n查询按钮的Click事件代码如下:if file(temp.dbf) use in temp delete file temp.dbfendif if thisform.OptiongroupQuery.value=1 if
58、 not empty(alltrim(thisform.Txt学号.value) select * from 学生 where;学生.学号=alltrim(thisform.Txt学号.value) into dbf temp select temp browse title 查询结果 else messagebox(请输入学号! ,0+64+0,查询提示) endifelse if not empty(thisform.Combo专业.value) select * from 学生 where 学生.专业=thisform.Combo专业.value;order by 学生.班级编号 int
59、o dbf temp select temp browse title 查询结果 else messagebox(请指定专业! ,0+64+0,查询提示) endifendif http:/ 查询程序设计实例查询程序设计实例n保存表单。关闭表单设计器窗口,在【另存为】对话框中选择保存位置,输入表单文件名“学生档案查询”,单击【保存】按钮。n运行表单。在命令窗口键入如下命令:DO FORM 学生档案查询运行结果参见图7.4.2。 图7.4.2 例7.34表单运行结果参考http:/ 上机指导上机指导 n7.5.1 创建单表查询创建单表查询 n7.5.2 创建多表查询创建多表查询 n7.5.3 在
60、表单中显示视图及更新数据在表单中显示视图及更新数据 http:/ 创建单表查询创建单表查询例7.35 根据学生数据表建立查询文件RXJF.QPR,按性别查询平均入学分数。操作步骤简述如下:(1)打开查询设计器并添加表。 选择【文件】|【新建】|【查询】命令,单击【新建文件】按钮,选择数据表“学生”,单击【添加】按钮,单击【关闭】按钮。(2)选择字段。 单击【字段】选项卡标签,在【可用字段】列表中,双击“学生.性别”,将该字段添加到【选定字段】列表中。单击【函数和表达式】文本框右侧的按钮,打开表达式生成器,在【数学】函数下拉列表中单击求平均值的函数AVG,在【字段】列表中双击“入学成绩”,这时,
61、【表达式】文本框中显示:AVG(学生.入学成绩),在其后输入:AS 平均入学成绩,使表达式文本框中显示:AVG(学生.入学成绩) AS 平均入学成绩,单击【确定】按钮,该表达式出现在【函数和表达式】文本框中,单击【添加】按钮,把该表达式添加到【选定字段】列表中。 http:/ 创建单表查询创建单表查询(3)分组记录。单击【分组依据】选项卡标签,在【可用字段】列表中,选中“学生.性别”,单击【添加】按钮,把该字段添加到【分组字段】列表中。(4)运行查询。选择【查询】|【运行查询】命令,在浏览窗口中显示的查询结果如图7.5.1所示。(5)保存查询。关闭查询设计器窗口,在【保存】对话框中输入文件名“
62、RXJF”,单击【确定】按钮。 图7.5.1 例7.35 查询结果http:/ 创建多表查询创建多表查询例例7.36 根据学生表和成绩表建立查询文件ZCJ.QPR,查询学生的学号、姓名、性别、专业、计算机、英语、高等数学成绩和总分,查询结果首先按专业升序排列记录,专业相同时按总分降序排列记录。操作步骤简述如下:(1)打开查询设计器并添加表。 选择【文件】|【新建】|【查询】命令,单击【新建文件】按钮,选择数据表“学生”,单击【添加】按钮,选择数据表“成绩”,单击【添加】按钮。(2)建立表间连接。 接上步,在打开的连接条件对话框中,系统给出默认连接条件为:学生.学号=成绩.学号,连接类型为内部连
63、接,恰好满足本例设计要求,单击【确定】按钮,单击【关闭】按钮。(3)选择字段。 单击【字段】选项卡标签,在【可用字段】列表中,依次双击“学生.学号”、“学生.姓名”、“学生.性别”、“学生.专业”、“成绩.计算机”、“成绩.英语”、“成绩.高等数学”,将所需字段添加到【选定字段】列表中。单击【函数和表达式】文本框右侧的按钮,打开【表达式生成器】,从【来源于表】下拉列表中选择“成绩”,在【字段】列表中,依次双击“计算机”、“英语”、“高等数学”,在表达式文本框的这3个字段之间键入加号,在行尾输入:AS 总分,形成表达式:成绩.计算机+成绩.英语+成绩.高等数学 AS 总分,单击【确定】按钮,单击
64、【添加】按钮,把该表达式添加到【选定字段】列表中。 http:/ 创建多表查询创建多表查询(4)排序记录。单击【排序依据】选项卡,在【选定字段】列表中,首先双击“学生.专业”,在【排序选项】中单击【升序】,然后双击用于计算总分的表达式,在【排序选项】中单击【降序】。(5)运行查询。选择【查询】|【运行查询】命令,查询结果如图7.5.2所示。 (6)保存查询。关闭查询设计器窗口,在【保存】对话框中输入文件名ZCJ,单击【确定】按钮。 图7.5.2 例7.36查询结果http:/ 在表单中显示视图及更新数据在表单中显示视图及更新数据 例例7.37 为例7.6创建的视图“更改专业”。建立数据编辑表单
65、,仅允许修改专业字段,并可随时浏览源表的相应变化,表单文件名为“更改专业.SCX”。操作过程简述如下:(1)创建表单。 为简化表单设计过程,采用向导方式创建表单,过程如下:n选择【文件】|【新建】|【表单】|【向导】命令,单击【表单向导】,单击【确定】按钮。n在向导步骤1中,选择学生数据库中的更改专业视图的全部字段为选定字段。n在向导步骤2中,选择浮雕样式和文本按钮。n在向导步骤4中,输入表单标题“使用视图更改专业”;选择【保存表单并用表单设计器修改表单】,单击【完成】按钮,输入表单文件名“更改专业”。单击【保存】按钮。 http:/ 在表单中显示视图及更新数据在表单中显示视图及更新数据 (2
66、)修改表单。如图7.5.3所示,在已打开的表单设计器中修改所创建的表单。 图7.5.3 例7.37表单http:/ 在表单中显示视图及更新数据在表单中显示视图及更新数据 n修改表单Form1的如下属性:Height:240MaxButton:.F.Width:400n修改标签控件Label1的如下属性:Top:8Left:59(可使用系统菜单的【格式】|【对齐】|【水平居中】自动设置)n分别修改形状控件Shape1、Shape2、Shape3和Shape4的如下属性:Left:25(可用水平居中自动设置)Width:350Top:42、43、162和163n为表示字段标题的标签控件设置相关属性
67、。n为与字段对应的文本框控件设置相关属性。 http:/ 在表单中显示视图及更新数据在表单中显示视图及更新数据 n修改容器控件ButtonSet1的如下属性:Height:48Left:25Top:176Width:350n修改命令按钮组中各命令按钮控件的相关属性。n修改命令按钮控件cmdPrint的Caption属性为:浏览源表。n为cmdPrint的Click事件添加如下代码:SELECT 学生BROWSE NOMODIFY http:/ 在表单中显示视图及更新数据在表单中显示视图及更新数据 (3)保存表单。关闭表单设计器窗口,保存对表单的修改。(4)运行表单。在命令窗口键入如下命令:DO
68、 FORM 更改专业 在表单中,用定位按钮或查询按钮,定位到要修改专业的记录。单击【编辑】按钮进入记录编辑状态,修改当前记录的专业字段值,单击【保存】按钮。单击【浏览源表】按钮,在浏览窗口中可以看到源表相应记录的专业字段值被修改。最后单击ESC键关闭浏览窗口。 http:/ 习题习题http:/ 习题习题1填空题(1)查询文件的默认扩展名为 。(2)若有查询文件:MyQuery.QPR,执行该查询的命令为 。(3)查询设计器的【连接】选项卡在创建 查询时使用,默认的连接类型为 。(4)与查询设计器【筛选】选项卡设置相对应的SQL_SELECT子句是 子句。(5)与查询设计器【排序依据】选项卡设
69、置相对应的SQL_SELECT子句是 子句。(6)在查询设计器的“分组依据”选项卡中,“满足条件”所对应的SQL_SELECT命令子句是 子句。(7)在查询设计器的【杂项】选项卡中,选中“无重复记录”所对应的SQL_SELECT命令的关键字是 。(8)在SQL_SELECT命令中,将查询结果输出到表文件中,应该使用 子句。http:/ 习题习题1填空题(9)在学生表中查询非党团员学生信息,请写出相应的SQL_SELECT命令: 。(10)在学生表和成绩表中查询01班学生的学号、姓名、班级编号和英语成绩,请写出相应的SQL_SELECT命令: 。 (11)在学生表中查询各专业的学生入学最高分,平
70、均分和人数,请写出对应的SQL_SELECT命令: 。(12)在学生表中查询英语和管理专业学生的学号、姓名和性别,按专业排序,请写出对应的SQL_SELECT命令: 。(13)使用SQL命令创建表“登记表”,含有:姓名、性别、出生日期、身高、简历和照片字段,对应的命令为: 。(14)为(13)题创建的登记表添加一个联系电话字段,对应的SQL命令为: 。(15)将(13)题创建的登记表的身高字段删除,对应的SQL命令为: 。http:/ 习题习题1填空题(16)向(13)题所创建的登记表中添加一条记录:章晓明,男,1980年5月31日出生,对应的SQL命令为: 。(17)在(16)题的结果上,向
71、登记表中写入章晓明的联系电话:01012345678,对应的SQL命令为:UPDATE 登记表 SET WHERE 。(18)使用SQL命令创建视图:计算机学生选课,其中含有计算机专业学生的学号、姓名、专业和课程名,请对如下命令填空:CREATE SQL AS SELECT 学号,姓名,专业, ;FROM 学生, WHERE 。(19)删除(13)题所创建的表,对应的SQL命令为:DROP 登记表。(20)删除(16)题所创建的视图,对应的SQL命令为:DROP 计算机学生选课。 http:/ 习题习题2选择题(1)通过选择相应菜单打开一个在当前目录下已经存在的查询文件MyQuery.QPR后
72、,系统在命令窗口自动生成的命令是()。 A OPEN QUERY MyQuery.QPR B MODIFY QUERY MyQuery.QPR C DO QUERY MyQuery.QPR D CREATE QUERY MyQuery.QPR(2)在Visual FoxPro中,关于视图的正确叙述是()。 A 视图与数据库表相同,用来存储数据 B 视图不能同数据库表建立连接 C 在视图上不能进行更新操作 D 视图是从一个或多个数据库表导出的虚拟表(3)下面有关视图的描述正确的是()。 A 可以使用MODIFY STRUCTURE命令修改视图的结构 B 视图不能删除,否则影响源表 C 视图是由表
73、复制产生的 D 使用SQL_SELECT命令对视图进行查询时, 必须事先打开该视图所在的数据库http:/ 习题习题2选择题(4)视图设计器中含有的、而查询设计器中没有的选项卡是()。 A 筛选 B 排序依据 C 分组依据 D 更新条件(5)在SQL语句中,与表达式入学成绩 BETWEEN 590 AND 610功能相同的表达式是()。 A 入学成绩=590 AND 入学成绩590 AND 入学成绩610 C 入学成绩610 D 入学成绩=590 OR 入学成绩=610 (6)在SQL语句中,与表达式“班级编号 NOT IN(01,02)”功能相同的表达式是()。 A 班级编号=01 AND
74、班级编号=02 B 班级编号!=01 OR 班级编号# 02 C 班级编号01 OR 班级编号!=02 D 班级编号!=01 AND 班级编号!=02http:/ 习题习题2选择题(7)SQL_SELECT命令的默认输出方向是浏览窗口,命令执行后,要退出这个浏览窗口,应该按的键是()。 A ALT B DELETE C ESC D RETURN(8)使用SQL_SELECT命令进行分组检索时,为了去掉不满足条件的分组,应当使用()。 A WHERE子句 B 在GROUP BY后面使用HAVING 子句 C 先使用WHERE子句,再使用HAVING子句 D 先使用HAVING 子句 ,再使用WH
75、ERE子句(9)在SQL_SELECT嵌套查询中,与量词ANY同意的词是()。 A ALL B EXIST C IN D SOME(10)下面有关HAVING子句描述错误的是()。 A HAVING子句必须与GROUP BY子句同时使用,不能单独使用 B 使用HAVING子句的同时不能使用WHERE子句 C 使用HAVING子句的同时可以使用WHERE子句 D 使用HAVING子句的作用是限定分组的条件 http:/ 习题习题3.简答题(1)查询设计器含有哪几个选项卡?每个选项卡的主要用途为何?(2)视图设计器含有哪几个选项卡?每个选项卡的主要用途为何?(3)在使用查询设计器设计查询时,可以为
76、查询结果指定哪几种输出方向?默认的输出方向为何?(4)试述视图与查询的区别。(5)试总结运行查询的几种方式。(6)视图在使用上与表极为相似,但视图可以从数据库中移出,变得像自由表一样吗?为什么?视图的修改途径和表的修改途径一样吗?(7)如何删除视图?如何删除查询?(8)本章介绍了Visual FoxPro的哪几种SQL命令?每种命令的主要作用为何? http:/ 习题习题4操作题(1)使用查询设计器分别按如下要求创建查询: 按填空题9要求创建Q1_1.QPR,输出到浏览窗口。 按填空题10要求创建Q1_2.QPR,输出到临时表T2。 按填空题11要求创建Q1_3.QPR,输出为图表。 按填空题12要求创建Q1_4.QPR,输出到表文件Q3。(2)使用视图设计器,在学生管理数据库中,分别按如下要求创建视图: 创建视图V2_1,内容为被选修的课程名。 按填空题13要求创建视图V2_2,然后浏览所创建视图,最后删除该视图。 创建可更新源表视图V2_3,含有学生的学号、姓名和英语成绩,其中英语成绩字段为可更新字段,然后浏览所创建视图,修改英语字段值,观察成绩表相应字段值的变化。 创建参数视图V2_4,可根据运行时的输入,按班级编号浏览学生档案信息。