400 likes | 544 Views
单元 10 查询与视图. 导入新课. 查询定位: 寻找符合条件的记录,若找到则定为当前记录,若未找到,则定位到文件尾。 问题: 如何在一个表或多个表中查询所有符合条件的记录? 如何将用户所需的数据集中在一块,且对其修改也可以达到修改原来数据的目的?. 单元 10 查询与视图. 【 主要内容 】 1 、 查询 2 、 视图 3 、 SQL 语言. 【 目的要求 】 掌握查询的意义 掌握 查询的基本操作 掌握查询的实际运用 掌握视图的意义及基本操作 掌握查询与视图的主要区别 掌握 SQL 语言的运用. 【 课时安排 】 共 12 课时.
E N D
单元10 查询与视图 导入新课 查询定位:寻找符合条件的记录,若找到则定为当前记录,若未找到,则定位到文件尾。问题:如何在一个表或多个表中查询所有符合条件的记录? 如何将用户所需的数据集中在一块,且对其修改也可以达到修改原来数据的目的?
单元10 查询与视图 【主要内容】 1、 查询 2、 视图 3、SQL语言 【目的要求】 掌握查询的意义 掌握查询的基本操作 掌握查询的实际运用 掌握视图的意义及基本操作 掌握查询与视图的主要区别 掌握SQL语言的运用 【课时安排】 共12课时
使用命令:CREATE QUERY进入使用“新建”工具进入使用“新建”菜单进入 1、查询设计器的进入 六个选项卡 工具栏 快捷菜单 一、 查询 (一)查询设计器通过“查询设计器” 生成的查询文件扩展名为.QPR。 六个选项卡 2、查询设计器窗口
一、 查询 3、“字段”选项卡 作用:列出查询结果中所需的数据 可在此输入函数或公式可指定新字段名;可用SUM()、AVG()、COUNT()、MAX()、MIN()五个函数. 可以添加或移去字段
一、 查询 4、“联接”选项卡 多表联接时条件组合 AND OR 作用:多个表间的联接方式 四种联接方式: 内部联接(Inner Join):只列出两个表中的字段相匹配的记录,即两表记录的交集。 左联接(Left Outer Join):将列出左边的字段列表中的所有记录。若根据联接条件,在右边表中无匹配的记录,则在查询中相应列出现NULL。 右联接(Right Outer Join):右联接和左联接恰好相反。 完全联接(Full Join):将列出两个表中的所有记录,即两表记录的并集。
一、 查询 5、“筛选”选项卡 作用:限制参加操作的记录的条件(若无,则表示所有记录都参加操作 相当于NOT 忽略大小写 各种关系符 变量或常量
一、 查询 6、“排序依据”选项卡 作用:查询结果排列的顺序. 升降序 若有多个,则当上一个关键值相同时,按下一个值排序。
一、 查询 6、“分组依据”选项卡 作用:查询结果需要分类统计时使用。如统计各系人数需按“系别”分组 结果中只显示符合条件的分组 指定分组字段
一、 查询 7、“杂项”选项卡 作用:指定显示的结果的比例或个数,重复者是否只显示一个。 若选中,则相同的记录只显示一次 显示指定个数或指定比例个数的记录
一、 查询 8、输出设置 作用:指定运行查询后输出果的形式。 单击快捷菜单中的“输出设置”或菜单中的“查询去向”便可出现“查询去向”界面如下:。 “浏览”——表示将在浏览窗口中显示查询结果;“临时表”——表示查询结果将被存储在一个只读的临时表中;“表”——表示将查询结果保存在一个表中,“图形”——表示将查询结果可用于Microsoft Graph中;“屏幕”——表示将在Visual FoxPro 6.0主窗口或当前窗口中显示查询结果,其中也可设置输出到文本文件中,也可直接输出到打印机上。“报表”——表示将查询结果输出到一个报表文件,作为报表文件的数据源;“标签”——表示将输出送到一个标签文件,作为标签文件的数据源。
一、 查询 9、显示SQL窗口 作用:显示该查询所对应的SQL命令。 10、运行查询 作用:运行所设计的查询。方法1:单击按钮方法2:使用快捷菜单或菜单中的“运行”命令方法2:存盘后可使用命令:do 查询名.qpr (扩展名不能省) 例:1、在reader.dbf中查询计算机系的读者,并按职工号升序浏览。 2、在“library”数据库中查询借书证号为“00000002”的读者所借书的情况,把查询结果按书名升序排序存入CX表中。CX的结构为:(姓名,部门,书名,借出日期,还书日期)。
一、 查询 12、查询设计向导 作用:用向导的办法设计查询。步骤:1.启动查询向导2.字段选取3.为表建立关系4.包含记录5.筛选记录6.限制记录7.完成 13、查询设计器的局限性例如:要在BOOKS.DBF中查询价格高于平均价格的记录,用一次查询设计器则不能实现,而用SQL SELECT语言则很容易实现。
二、 视图 1、 什么是视图?视图是由一个表或多个表中符合条件的数据产生的虚表。特点:(1)它是Visual FoxPro 6.0提供的一种定制的、可更改的数据集合,它集合了表和查询的特点。( 2 )视图存在于数据库中。(建立视图先要打开数据库)。( 3)视图可以用来从一个或多个相关联的表中提取有用的信息;与表相类似的地方是,可用来更新得到的结果数据,并将更新后的数据反馈到数据源上。(4)视图建立后,可以象使用一般表的方法一样使用视图。(5)视图可分为本地视图和远程视图两类。
二、 视图 2、视图的建立利用“视图设计器”可建立视图。进入“视图设计器”的方法与进入“查询设计器”的方法类似。“视图设计器”的结构如下: 此处与查询设计器不同。表示可修改的字段及是否影响源表。
二、 视图 3、创建参数视图所谓参数视图,即视图在进行查询前,可根据提示输入查询条件。该功能使用户更加方便地操作视图,满足特殊的检索要求。操作关键点:例:在“筛选”选项卡中,在“字段名”下选择“GZJ.职称”,在“条件”下选“=”,在“实例下”输入“?职称” 4、修改、删除视图修改视图是在视图设计器中进行,有两种方法进入视图设计器:① 使用菜单或工具打开视图② 使用命令:MODIFY VIEW 命令。(注意:先要打开相关的数据库)如果要删除视图,可用两种方法:① 在数据库设计器中删除首先打开数据库设计器,在数据库设计器中选中待删除的视图,按DELETE键。② 使用命令:DROP VIEW 视图名
二、 视图 5、使用视图运行:单击工具栏中的运行按钮,运行视图,将显示查询结果,视图与查询的结果在结构上是相同的,但是查询所得的浏览表是只读的,视图文件的浏览表是允许修改的。使用:视图的使用和表也很相似,我们也可以在命令窗口用操作命令操作视图,例如USE,BROWSE,APPEND,LIST,LIST STRUCTURE等。也可在表单、报表或程序中像使用表一样使用视图。 6、使用视图向导设计视图(1)启动视图向导。 (2)选定字段。 (3)为表建立关系。(4)包含记录(从“仅包含匹配的行”、“左”表中匹配的行、“右” 表中匹配的行、“两表中的所有行”中选取其一)。(5)筛选记录。 (6)排序记录。 (7)限制记录。(8)完成。
三、归纳总结 1.查询的概念查询与表、索引一样,也可用来保存文件,查询文件的扩展名为.QPR。查询文件实际上是一个小程序。查询程序在表中查找出符合条件的数据后,生成包含这些数据的临时文件。此文件可在专用的“浏览”窗口中显示。用户可查看结果,但由于它们只是实际表中数据的备份,因而不能在“浏览”窗口中对这些记录进行编辑。2.查询的建立建立查询文件可用三种方法:用查询设计器建立查询、用“查询向导”建立查询和直接通过编辑.QPR文件建立查询(利用SQL语句) 。查询设计器中有“四五六七”,即四种联接方式、五个计算函数、六个选项卡和七个输出设置。查询设计器中各选项卡及意义如下。“字段”选项卡:指定查询所要的数据(可以输入或编辑计算表达式) 。“联接”选项卡:用于编辑联接条件。“筛选”选项卡:用于指定查询条件。“排序依据”选项卡:用于指定排序的字段和排序方式。“分组依据”选项卡:用于分组。“杂项”选项卡:指定是否要重复记录及列在前面的部分记录等。另外,使用查询向导可设计“交叉表查询”和“图形向导”。
三、查询与视图归纳总结 3.视图的概念视图是由一个表或多个表中的数据构成的虚表,兼有“表”和“查询”的特点。与查询相类似的地方是可以用来从一个或多个相关联的表中提取有用信息;与表相似的地方是,可以用来更新其中的信息,并将更新结果永久保存在磁盘上。4.视图的建立可以通过视图设计器、视图向导和命令的方法建立视图。视图设计器与查询设计器相比有“一多一少”的特点,即多了“更新”选项卡,少了“输出设置”功能。5.几点注意① 查询设计器的查询结果是以.QPR为扩展文件名保存在磁盘中;而视图设计完后,在磁盘上找不到类似的文件,视图的结果便保存在数据库中。② 由于视图是可以更新原始数据的,所以它有更新属性需要设置,为此在视图设计器中多了一个“更新条件”选项卡。③ 在视图设计器中没有“查询去向”的问题。④ 视图可以是本地的、远程的或带参数的,要建立远程视图就必须先建立联接。 作业 书面练习:《练习册》练习五上机实训:教材P96(二)
四、关系数据库标准语言SQL 4-1 SQL概述 1、SQL是结构化查询语言(Structured Query Language的缩写) 2、特点: • 是一种一体化语言 • 是一种高度非过程化语言 • 非常简洁 • 可以以命令方式交互使用(也可以作为程序代码) 3、SQL的功能: • 数据查询 • 数据定义 • 数据操纵 • 数据控制(此功能VFP没有)
4-2 SQL查询功能 “字段”选项卡:指定查询所要的数据(可以输入或编辑计算表达式) 。 1、命令格式 SELECT 目标字段名表; FROM 表名 [关联语句]; WHERE 筛选条件; ORDER BY 排序依据; GROUP BY 分组依据 ; HAVING 分组限制条件; INTO /TO 查询去向 [NOCONSOLE][PLAIN][NOWAIT] “杂项”选项卡:指定是否要重复记录及列在前面的部分记录等 “联接”选项卡:用于编辑联接条件。 “筛选”选项卡:用于指定查询条件。 “排序依据”选项卡:用于指定排序的字段和排序方式。 “分组依据”选项卡:用于分组条件。 “查询去向”对话框:用于指定查询去向
4-2 SQL查询功能 2、目标字段名表选项 • 符合条件的记数数: • ALL 所有符合条件的记录(默认) • DISTINCT 符合条件者重复的只出现一次 • TOP n 符合条件者的前n 个记录 [必须有ORDER BY子句] • TOP n PERCENT符合条件者前n%个记录[必须有ORDER BY子句] • 所需字段 • * 表示所有字段 • 表名.字段名 [AS 标题],表名.字段名 [AS 标题] • 函数(字段名),支持函数为:count,sum,avg,max,min (称为计算查询) 指定字段或要计算的结果 COUNT:对一列中的值计算个数;COUNT(*):计算表中记录的个数; SUM 、AVG :求某一列值的总和和平均值(此列必须是数值型) MAX、 MIN :求某一列值的最大值、最小值(可以为字符型、数值、日期)
4-2 SQL查询功能 1.显示READER.DBF中所有记录、所有字段 2.显示READER.DBF中前6条记录、所有字段 3.显示READER.DBF中前10%条记录、部分字段,降序 4.计算BOOKS.DBF中所有图书的总数、借出总数,平均单价 举例
4-2 SQL查询功能 3、联接查询 (1)联接及其类别 联接是关系的横向结合。 关系联接的类别 • 等值联接:按字段值对应相等为条件进行的联接 • 自然联接:去掉重复字段的等值联接 • 超联接:保证一个表中满足条件的记录在结果中,然后与另一表进行联接. (2)联接查询的实现 ①等值联接:将联接条件写入WHERE子句中,from后写要联接的两个表名 例: select * from books,borrow where books.书号=borrow.书号 order by books.书号 练习:找出单价在20元以上的图书的借出情况 ②自然联接:将联接条件写入WHERE子句中,指定字段,from后写要联接的两个表名 例:select books.书号,书名 from books,borrow where books.书号=borrow.书号 order by books.书号
4-2 SQL查询功能 (3)超联接查询 超联接的四种形式: 左联接:结果包含第一个表中所有的记录,用LEFT JOIN表示 右联接:结果包含第二个表中所有的记录,用RIGHT JOIN表示 内部联接:取两个表中的公共记录,用INNER JOIN表示 完全联接:取两个表中的记录本的并集,用FULL JOIN表示 超联接语句: SELECT …. FROM 表名1 联接形式 表名2 on 联接条件 例:对BOOKS和BORROW进行超左联接 sele * from BOOKS left join BORROW on BOOKS.书号=BORROW.书号 练习:完成其他几种超联接,并分析其结果
4-2 SQL查询功能 4、筛选条件选项 由where引导 • 条件可以是: • 关系运算 • 逻辑值 • 字段名 BETWEEN …AND … • 字段名 LIKE 通配符 (%代表一串字符,_表示一个字符) • 字段名 IS NULL 例: (1)显示单价在25元以上的前50%的图书 (2)显示借出数量在5-10本间的图书
4-2 SQL查询功能 5、分组条件选项 由group by 引导 GROUP BY 字段表:按指定的字段分类(多个字段时按两个字段组合分组) HAVING 条件:只显示符合条件的组 使用分组统计时,一般要用GROUP BY 子句 例:按图书类别分类汇总数量、借出数量、平均单价 注意:若只有HAVING语句而无GROUP BY语句,则HAVING语句相当于WHERE语句。
4-2 SQL查询功能 6、排序依据选项 由order by 引导 ORDER BY 字段表:按指定的字段排序,可用多个字段进行多重排序 7、查询去向选项 INTO ARRAY 数组名——送数组 INTO CURSOR 临时表名——送临时表 INTO TABLE 表名——送表 TO FILE 文件名 [ADDITIVE]——送文本文件 TO PRINT ——送打印机 TO SCREEN——送屏幕 练习:将上面的查询结果送results.dbf表中
4-2 SQL查询功能 8、其他子句 NOCONSOLE:关闭对话模式。 PLAIN:用于在显示查询结果时忽略列标题。 NOWAIT:表示程序不等待浏览窗口的关闭。在查询结果被导向浏览窗口时,程序继续往下运行SELECT语句的下一行。 UNION子句:用于连接多个SELECT语句的查询结果。 9、嵌套查询 问题:显示图书单价在平均单价以上的书号,书名 解决:第一步:求平均单价 sele avg(单价) from books (值为26.7) 第二步:显示单价在平均单价以上的书号,书名 sele 书号,书名 from books where 单价>26.7 合并:sele 书号,书名 from books where 单价>(sele avg(单价) from books) 特点:在SQL语句内还有SQL语句的,称为嵌套查询。 书写要求:内层查询要用括号括起来。
4-2 SQL查询功能 10、量词与谓词查询 • 在其中:IN (运算符) • 不在其中:NOT IN (运算符) • 之一:SOME或ANY (量词) • 全部:ALL (量词) • 存在于:EXIST (谓词) • 不存在于:NOT EXIST (谓词) 例:显示借有书的读者信息 sele * from reader where 借书证号 in(select 借书证号 from borrow) 练习:显示没借书的读者信息 例:查询单价最高的图书信息 select * from books where 单价>=all(select 单价 from books) 练习:查询单价最低的图书信息
4-2 SQL查询功能 11、合并查询 当查询结果的字段相同时,可使用UNION进行结果合并
表记录的追加 表记录的删除 (表记录的操作) 表记录的修改 4-3 SQL操作功能 1、操作功能包括的内容 2、操作功能命令格式 表记录的追加(插入):INSERT INTO 表名 [字段名1,字段名2,…]; VALUES (表达式1,表达式2,…) 或者 INSERT INTO 表名 FROM ARRAY 数组名/FROM 内存变量 表记录的删除:DELETE FROM [数据库名!]表名 WHERE 过滤条件 表记录的修改(更新):UPDATE [数据库名!]表名1; SET 字段名1=表达式1,字段名2=表达式2,… WHERE 过滤条件
4-3 操作功能 例: 1.向books表中增加一条记录(“00000016”,“操作系统”,“谭耀铭”,“人民大学出版社”,“计算机”,21,6,0) 2.刚增加的“操作系统”又进了5本 3.书号为“00000006”的书已报废
表结构的定义 表结构的修改 表的删除 (表结构的操作) 视图的定义 4-4 定义功能 CREATE TABLE 表名 [FREE]; (字段名 类型(宽度,小数位) [NULL] ; [CHECK 检查条件][ERROR 出错表达式]; [DEFAULT 默认值] [PRIMARY KEY /UNIQUE]; FOREIGN KEY 字段名 TAG 索引名 REFERENCES 另表名… ; 字段名2…… ) 或FROM 数组名 1、定义功能包括的内容 建立自由表 字段有效性检查 2、表结构的定义 建立索引类型 PRIM KEY 为主索引 UNIQ为侯选索引 用此部分建立关系
4-4 定义功能 表结构的定义例题: 用命令方法建立右图所示表及数据库: CREATE DATABASE 成绩管理1 CREATE TABLE 学生1 ; (学号 C(9) PRIMARY KEY,姓名 C(8),出生日期 D,入学成绩 N(8,2) ) CREATE TABLE 成绩1 ; (学号C(9) PRIMARY KEY,语文N(6,1),数学N(6,1),英语N(6,1)
4-4 定义功能 表结构的定义例题: 用命令方法建立右图所示表及数据库: ① 建立数据库:CREATE DATABASE 订货管理② 建立“仓库”表:CREATE TABLE 仓库(仓库号 C(5) PRIMARY KEY,城市 C(10),面积 I CHECK (面积>0) ERROR “面积应该大于0!” )③ 建立“职工”表,并建立与“仓库”表间的永久关系:CREATE TABLE 职工(仓库号 C(5),职工号 C(5) PRIMARY KEY ;工资 I CHECK (工资>=1000 AND 工资<=5000) ERROR "工资范围在1000至5000!"; DEFAULT 1200,FOREIGN KEY 仓库号 TAG 仓库号 REFERENCES 仓库)
ADD 字段名(字段属性)——新增字段 ALTER 字段名(字段属性)——修改字段 DROP 字段名——删除字段 RENAME 旧名 TO 新名 ——字段更名 4-4 定义功能 3、表结构的修改 例:为仓库.DBF增加一个“使用年限”字段,并设置其有效性规则,使用命令: ALTER TABLE 仓库 ADD 使用年限 N(3) CHECK 使用年限>0 ERROR “使用年限应该大于零“ 删除仓库.DBF中“使用年限”字段的有效性规则。 ALTER TABLE 仓库 ALTER 使用年限 DROP CHECK 将仓库.DBF中字段“仓库号”改为“仓库编号”。 ALTER TABLE GZJ RENAME COLUMN 仓库号 TO 仓库编号 例:删除仓库.DBF中使用年限字段. ALTER TABLE 仓库 DROP COLUMN 使用年限 主要功能格式: ALTER TABLE 表名
4-4 定义功能 4、表的删除 例:从BOOKS.DBF中建立有书号、书名、作者、出版社的视图. CREATE VIEW V_BOOKS AS SELECT书号,书名,作者,出版社 FROM BOOKS 命令格式:DROP TABLE 表名 5、视图的定义 命令格式:CREATE VIEW 视图名 [字段名清单] AS 查询语句 6、视图的删除 命令格式:DROP VIEW 视图名 例:要删除数据库“LIBRARY.DBC”中的视图V_BOOKS,应该使用命令OPEN DATABASE LIBRARY DROP VIEW SAA
五、SQL语言归纳总结 1、SQL语句及其特点 2、查询功能 • 命令格式 • 目标子句 • 联接子句 • 筛选子句 • 排序子句 • 分组子句 • 量词使用 • 合并使用 • 嵌套查询
ADD 字段名(字段属性)——新增字段 ALTER 字段名(字段属性)——修改字段 DROP 字段名——删除字段 RENAME 旧名 TO 新名 ——字段更名 五、SQL语言归纳总结 1.表结构的定义:CREATE TABLE 表名 [FREE]; (字段名 类型(宽度,小数位) [NULL] ; [CHECK 检查条件][ERROR 出错表达式]; [DEFAULT 默认值] [PRIMARY KEY /UNIQUE]; FOREIGN KEY 字段名 TAG 索引名 REFERENCES 另表名… ; 字段名2…… ) 或FROM 数组名 (表记录的操作) 定义功能 2.表结构修改: ALTER TABLE 表名 3.表结构删除:DROP TABLE 操作功能 表记录的追加:INSERT INTO 表名 (字段名集) VALUE (表达式集) 表记录的删除:DELETE FROM 表名 表记录的修改:UPDATE 表名 SET 字段名=表达式
五、SQL语言归纳总结 作业 1、书面作业教材P180 习题六《练习册》练习七2、上机作业教材P179第二题3、思考题SQL对表的操作与一般的VFP命令的区别?