php基础教程 第五章,VFP基础教程 第五章 创建查询和视图
5.1 创建查询
1. 查询的概念
查询:就是向一个数据库发出检索信息的请求,从中提取符合特定条件的记录。
查询文件:
即保存实现查询的SELECT-SQL命令的文件。查询文件保存时,系统自动给出扩展名.qpr;查询被运行后,系统还会生成一个编译后的查询文件,扩展名为.qpx。
查询结果:
通过运行查询文件得到的一个基于表和视图的动态的数据集合。查询结果可以用不同的形式来保存。查询中的数据是只读的。
查询的数据源:可以是一张或多张相关的自由表、数据库表、视图。
2.用查询设计器创建查询
基本步骤:
打开查询设计器→ 添加创建查询所基于的数据表 → 定义输出内容 → 设置联接、筛选、排序、分组条件 → 选择查询结果的输出形式 → 保存查询文件 →运行查询。
(1)打开查询设计器
方法1:
从文件菜单或工具栏上单击新建 → 查询 → 新建文件→ 进入查询设计器
方法2:
当所用到的数据表已在项目中时,从项目管理器窗口中单击数据 → 查询 → 新建→ 新建查询 → 进入查询设计器
方法3:从命令窗口中输入命令:
create query 查询文件名 & 创建新查询
modify query 查询文件名& 修改已存在的查询
(2)定义查询的输出内容
单击字段选项卡 → 从可用字段列表框中单击所需字段(当输出的列不是直接来源于表中的字段时,单击函数和表达式框边的… 按钮,打开表达式生成器,构造出所需的表达式)→ 单击添加按钮 → 所需字段自动出现在选定字段框中。
(3)设置查询的筛选条件
筛选条件决定将哪些记录显示出来。
在筛选框中构造筛选条件表达式时,要注意在实例框中输入不同数据类型时的格式:
1) 字符串可以不带引号(当与源表中的字段名相同时才用引号);
2) 日期型数值要用{ }括起来;
3) 逻辑型数据两侧要带 .号,如 .T.,.F.
(4)设置查询结果的排序依据
排序决定查询输出结果中记录显示的顺序。
设置方法:
单击排序依据 → 从选定字段框选中字段 → 选择升序或降序 → 单击添加。
(5) 设置查询结果的分组依据
分组是指将一组类似的记录压缩成一个结果记录,目的是为了完成基于该组记录的计算,比如:求平均值、总和、统计个数、其中的最大值、最小值等。
几个常用的统计函数
功能
求平均值
求总和
求最大值
求最小值
统计个数
名称
AVG()
SUM()
MAX()
MIN()
COUNT()
用于分组的字段不一定是选定输出的字段,但分组字段不能是一个计算字段。
可以用 满足条件…来对分组结果进行进一步筛选。
(6)对查询结果的其他设置
可以排除查询结果中所有重复的行,并设置结果的记录范围。
(7)选择查询结果的输出类型
默认情况下,查询结果将输出在浏览窗口中,且其中的数据是只读的。
设置其他输出类型的方法:
打开查询菜单→ 选择查询去向→ 在查询去向对话框中选择一种。一般多选择表或报表。
(8)运行查询
在查询设计器打开的状态下,单击常用工具栏上的 !按钮或从查询菜单中选择运行查询。其他情况下,可从项目管理器中选中查询文件并单击运行按钮,或从程序菜单中选择执行命令,或从命令窗口中输入: DO 查询文件名。
(9)创建多表查询
打开查询设计器 →将所需的多个相关表添加进来 → 设置联接条件→ 按上面(2)至(8)步进行。
3.用查询向导创建查询
(1)创建标准查询:
打开待查询的数据表 → 从文件菜单中单击新建 → 在新建对话框中选择查询并单击向导 →选择查询向导 → 从单张或多张相关的表中进行字段选取 → 设置筛选条件→ 设置排序次序→ 选择查询结果的保存方式 → 给出查询文件名并选择保存位置 → 查询结果显示在查询窗口中。
注意:查询此时得到的数据是只读的,不可以更新。
(2)交叉表查询
打开待查询的数据表 → 从文件菜单中单击新建 → 在新建对话框中选择查询并单击向导 →选择交叉表向导 → 从单张表中选取字段→设计布局→ 加入总和信息 → 选择查询结果的保存方式 → 给出查询文件名并选择保存位置→ 查询结果显示在查询窗口中。
注意:不是任何表都适宜采用交叉表的形式。
(3)用SELECT-SQL命令创建查询
常用的格式:
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] ...]]
示例:
浏览学生中的查询学生 student.qpr :
SELECT 表xs.xh as 学号, 表xs.xm as 姓名, 表xs.xb as 性别, ;
表xs.csrq as 出生日期, 表xs.bj as 班级名称;
FROM 数据test!表xs;
WHERE 表xs.bj =cs1;
ORDER BY 表xs.xh;
INTO TABLE xs
浏览成绩中的按课程查询 sub_cj.qpr :
SELECT 表xs.bj as 班级名称, COUNT(表xs.xh) as 班级人数, AVG(表cj.cj) as 平均分, ;
MAX(表cj.cj) as 最高分, MIN(表cj.cj) as 最低分;
FROM 数据test!表xs, 数据test!表cj, 数据test!表kc;
WHERE 表cj.xh = 表xs.xh;
AND 表kc.kcm = 表cj.kcm;
AND 表cj.kcm = sc1;
GROUP BY 表xs.bj;
ORDER BY 表xs.bj;
INTO TABLE sub_cj
5.2 创建视图
1.视图的特点
1) 视图是存在于数据库中的一个虚表,不以独立的文件形式保存;
2) 视图中的数据是可以更改的,它不仅具有查询的功能,且可以把更新结果反映到源数据表中;
3) 视图打开时,其基表自动打开,但视图关闭时,其基表并不随之自动关闭;
4) 视图的数据源可以是自由表、数据库表或另一个视图。
2.用视图设计器创建本地视图
从项目管理器中选择一个数据库 → 选择本地视图→单击新建按钮 → 选择新视图 → 添加所需的数据表 → 在视图设计器中按照与创建查询相同的步骤(2)~(6)建立视图→设置更新条件→ 保存视图 → 给出视图名称 → 关闭视图设计器(可以先运行一下看看)。
创建参数化视图:
在筛选页面的实例框中输入: ?参数名 → 从查询菜单中选择视图参数→ 在对话框中给出参数名并选择参数类型 → 确定 → 保存视图 → 给出视图名称 → 关闭视图设计器(可以先运行一下看看)。
3.用视图向导创建本地视图
从项目管理器中选择一个数据库→ 选择本地视图 → 单击新建按钮 → 选择视图向导 → 选取字段 → 关联表 → 记录操作范围 → 筛选记录 → 排序记录 → 选择保存方式→ 完成。
4.用CREATE SQL VIEW 命令创建视图
打开数据库,用命令来创建视图:
OPEN DATABASE数据库名
CREATE SQL VIEW视图文件名 ASSQL-SELECT 语句
例:OPEN DATABASE SJ
CREAT SQL VIEW SCORE AS SELECT SJCJ.XH, SJCJ.CJ ;
FROM SJ!SJCJ WHERE SJCJ.KCH=”计算机基础”
5.视图的使用
用菜单方式对视图中的记录进行编辑的方法与操作数据表相同。也可用以下命令操作。
视图操作基本命令
打开视图文件并浏览
OPEN DATABASE 数据库名
USE 视图文件名
BROWSE
修改视图
MODIFY VIEW 视图文件名
视图重命名
RENAME VIEW 原视图文件名 TO 新视图文件名
删除视图
DELETE VIEW 视图文件名
6.利用视图更新源表数据
可在视图设计器的更新条件页面中进行如下设置来实现对源表数据的更新:
1)从表框中选择想要更新的源表;
2)在字段名框中单击一个字段前关键列B 和更新列 ! ,使其作为主关键字和可更新字段;
3)将发送SQL 更新复选框选中
5.3 SQL 语言中的命令语句
SQL是一种日趋流行的标准的数据库系统管理语言,能使数据检索异常地方便、灵活。
VFP5.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 )
新表的每个字段由名称、类型、精度、比例、是否支持 NULL 值和参照完整性规则来定义,可从命令本身或数组中获得这些定义。
CREATE CURSOR-SQL
创建一个临时表
CREATE CURSOR teacher ;
(TeacherID N(5), Name C(20), Address;
C(30),OfficeNo C(8) NULL, Specialty M)
ALTER TABLE - SQL
以编程方式修改一个已存在的表的结构。
ALTER TABLE xscj ADD COLUMN kcmc C(14)
可以修改表中每个字段的名称、类型、精度、比例、是否支持 NULL 值和参照完整性规则。
ALTER TABLE cj;
ALTER COLUMN cj SET CHECK cj >= 0;
ERROR " 成绩不能为负数"
SELECT - SQL
从一个或多个表中检索数据。
SELECT 表xs.xh, 表xs.xm, 表xs.xb, ;
FROM 数据test!表xs;
WHERE 表xs.xh >'81991025';
ORDER BY 表xs.xh
可以用union命令连接两个条件。
DELETE - SQL
使用 SQL 语句将表中的记录加上删除标记。
DELETE FROM cj WHERE cj<60
INSERT - SQL
在已存在表的末尾追加一条新记录
INSERT INTO xs(xh,xm,xb) VALUES;
("8399101", "张丽", "女")
新记录包含的数据列在 INSERT 命令中,或者来自数组。
UPDATE - SQL
更新表中的记录
UPDATE cj SET cj = cj*1.05 WHERE cj>80
可以基于 SELECT - SQL 语句结果更新记录
php基础教程 第五章,VFP基础教程 第五章 创建查询和视图相关推荐
- 【STM32H7教程】第25章 STM32H7的TCM,SRAM等五块内存基础知识
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第25章 STM32H7的TCM,SRAM ...
- linux教程第五版课后答案第六章,linux基础及应用第六章练习题
linux基础及应用第六章练习题 1. 下列哪个文件的内容为当前已挂载文件系统的列表? A. /etc/inittab B. /etc/profile C. /etc/mtab D. /etc/fst ...
- 【二代示波器教程】第1章 示波器基础知识
教程完整下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=45785 第1章 示波器基础知识 本章的内容整理自网络,主要讲解示 ...
- 《嵌入式 Linux应用程序开发标准教程(第2版)》——第1章 Linux快速入门 1.1 嵌入式Linux基础...
本节书摘来自异步社区<嵌入式 Linux应用程序开发标准教程(第2版)>一书中的第1章,第1.1节,作者 华清远见嵌入式培训中心,更多章节内容可以访问云栖社区"异步社区" ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(五)我的魔法竟然有了一丝逻辑
学习目标 了解魔法世界中的结构表现--缩进 了解魔法世界的逻辑判断--if 了解魔法世界的多次逻辑判断--ifelse嵌套 了解魔法世界中的逻辑运算--且 and 与或 or 推荐 1.<备受好 ...
- 第4章操作系统基础第五版Aimin.rar
第4章操作系统基础第五版Aimin.rar 转载于:https://www.cnblogs.com/emanlee/archive/2010/10/14/1851101.html
- 软考 程序员教程-第三章 数据库基础知识
软考 程序员教程-第三章 数据库基础知识 第三章 数据库基础知识 3.1 基本概念 数据库系统(DataBase System,DBS)由数据库(DataBase,DB).硬件.软件和人员4大部分组成 ...
- 【STM32F429的DSP教程】第12章 DSP基础函数-相反数,偏移,移位,减法和比例因子
完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第12章 DSP基础函数-相反数,偏移,移位,减 ...
- 软考 程序员教程-第一章 计算机系统基础知识
软考 程序员教程-第一章 计算机系统基础知识 为了督促自己学习,告别懒惰,在此先给自己定个小目标,请大家监督哟! 目标:一个月内过一遍<程序员教程>,下一个月开始上真题. 简单看了下,我在 ...
- 软考 程序员教程-第二章 操作系统基础知识
软考 程序员教程-第二章 操作系统基础知识 第二章 操作系统基础知识 2.1.操作系统概述(第四版教程P44) 操作系统的4个特征:并发性.共享性.虚拟性.不确定性. 操作系统的5个功能:处理机管理. ...
最新文章
- C# WinForm获取 当前执行程序路径的几种方法
- 2016下半年网络规划设计师考试下午真题
- systemd.conf翻译
- android 打开免打扰模式,Android 6.0设置模块免打扰功能浅析
- cocos2d-X CCSprite设置贴图(图片)大小
- java就业班学什么呀_传智播客JAVA就业班的学习心得
- Funcode-贪吃蛇
- Unix搭建apue.h步骤详解
- omitting directory * 问题解决
- 如何提高商城的转化率
- python面向对象练习——飞机大战
- STM32F103RCT6Mini开发板搭建指纹识别系统
- 点云3d检测SA-SSD
- 与苹果相反 三星向所有第三方应用开放指纹识别功能
- 用react中的state写一个按钮+弹框的程序
- 刘强东的代码水平到底有多牛? 网友:95年一个晚上赚5万!
- ansible启用sudo执行命令
- ESP32-CAM使用过程的问题
- Windows12网页版开源HTML源码
- 用java实现:生成13位条形码