VFP7查询统计SQL(祥)
VFP常用命令(主要是基本操作和SQL语句)
各种整理:VFP常用命令(主要是基本操作和SQL语句)来源:苟姝瑶withTVXQ的日志基本操作:1、新建数据库命令:CREATE <文件名>2、打开数据库命令:USE <文件名>3、浏览数据库命令:BROWSE○*4、查找记录命令:LOCATE 例:Loca all for 性别=‟女‟Loca all for 工资>160.00 .AND. 工资<180.00常和继续查找命令CONTINUE连用。
FIND 例:find <字符串>/<n>使用前需要先排序。
SEEK 例:seek <表达式>表达式是字符串时,必须用“”引起来。
如seek “卫明”5、增加库记录命令:APPEND &&增加记录命令APPEND BLANK &&增加一条空记录APPEND FROM <文件名> [FOR<表达式>] &&从一个文件复制记录到现行数据库中6、插入记录命令INSERT格式:insert [blank] [before]use <文件名>go 5insert before7、库记录的删除DELETE格式:DELETE [<范围>] [FOR<表达式>] [WHILE<表达式>]功能:给符合条件的库记录加上删除标记。
例:delete all for 性别=‟女‟PACK格式:PACK功能;把打开的数据库文件中作过删除标记的记录真正删除掉。
ZAP格式:ZAP功能;从打开的数据库文件中删除所有记录8、恢复命令RECALL格式;RECALL [<范围>] [FOR<表达式>] [WHILE<表达式>]功能;恢复打开的数据库文件中带有删除标记的记录9、库记录的修改EDIT格式:EDIT [<范围>] [FIELDS<字段名表>] [FOR<表达式>] [WHILE<表达式>]CHANGE格式:CHANGE [<范围>] [FIELDS<字段名>] [FOR<表达式>] [WHILE<表达式>] BROWSE格式:BROWSE [FIELDS<字段名>] [LOCK<表达式>] [FREEZE<字段名>]10、替换命令REPLACE格式;REPLACE [<范围>] <字段名1> WITH <表达式1> [,<字段名2> WITH<表达式2>…] [FOR<表达式>] [WHILE<表达式>]功能:用来替换打开的数据库文件中指定字段的数据。
VFP第7部分(SQL查询)
如果有group by子句,则将结果按 <分组表达式>的值进行分组,该值相等 的记录为一个组。如果带有Having短语, 则只有符合指定条件的组才会输出, Having短语必须有Group by时才可使用。 如果有Order by子句,则显示结果 按字段值的升序或降序进行排列。Asc 表升序,Desc表降序。
在select语句中,where子句是对记录的限定, 而Having短语是对分组的限定,where、group by及Having可以同时出现在一个select语句中。 三者在select中出现的顺序为:Where—Group by---Having。
记录1 记录2 记录2
记录3
记录4
where 记录4 限定 记录5
DROP TABLE-SQL(删除表)
2、数据修改命令 INSERT-SQL(插入数据)
DELETE-SQL(删除数据) UPDATE-SQL(更新数据)
3、SQL数据查询
在数据库中对数据的操作,很多 时侯是查询,因此,数据查询是数据 库的核心操作。而在SQL语言中,查 询语言中只有一条查询命令,即 SELECT语句。 (见教科书103页)
select 学号,课程号,学期,成绩*0.7 as 考试成绩 from 选课
2)带条件(WHERE)的查询语句
SELECT [all|Distinct] <字段表达式1> [as <列名>…] FROM <表名> [WHERE <条件>]
在表中查询满足条件的记录
【说明】条件表达式中的运算符可以是以下 几种:
3.语言简洁,易学易用
SQL的命令动词
SQL功能 数据查询 数据定义 数据操纵 数据控制 命令动词 SELECT CREATE、DROP、ALTER INSERT、UPDATE、DELETE GRANT、REVOKE
VF中常用SQL命令使用方法
VF中常用SQL命令使用方法SQL(结构化查询语言)是关系型数据库管理系统中最常用的查询语言。
在VF中,使用SQL命令可以对数据库进行增删改查等操作。
以下是VF中常用的SQL命令使用方法:1.创建表格(CREATETABLE):用于创建数据库中的表格。
语法如下:```sqlCREATE TABLE table_namecolumn1 data_type,column2 data_type,...```例如:```sqlCREATE TABLE customersid INT PRIMARY KEY,name VARCHAR(50),age INT,email VARCHAR(100)```2.插入数据(INSERTINTO):用于向表格中插入新的数据。
语法如下:```sqlINSERT INTO table_name (column1, column2, ...)VALUES (value1, value2, ...);```例如:```sqlINSERT INTO customers (id, name, age, email)```3.更新数据(UPDATE):用于更新表格中的数据。
语法如下:```sqlUPDATE table_nameSET column1 = value1, column2 = value2, ...WHERE condition;```例如:```sqlUPDATE customersSET age = 26WHERE id = 1;```4.删除数据(DELETEFROM):用于从表格中删除数据。
语法如下:```sqlDELETE FROM table_name WHERE condition;```例如:```sqlDELETE FROM customers WHERE id = 1;```5.查询数据(SELECT):用于从表格中查询数据。
语法如下:```sqlSELECT column1, column2, ...FROM table_nameWHERE condition;```例如:```sqlSELECT * FROM customers WHERE age > 25;```6.排序数据(ORDERBY):用于按照指定列对查询结果进行排序。
在FoxPro如何使用SQL
結果
name Wendy Tobe Eric Patty Kevin Bobby Aaron :
class 1B 1B 1C 1C 1C 1A 1A :
dob 07/09/86 10/17/86 05/05/87 08/13/87 11/21/87 02/16/86 08/02/86 :
II 比較
Class
1A 1A 1B 1A 1B :
逐一檢查
Class
1A
class="1A"
1A 1B
1A
1B
:
I 一般語法
Class
1A
1A
1B
1A
1B
:
選擇三欄
name Peter Mary Johnny Luke Bobby :
Class
1A 1A 1A 1A 1A :
結果
hcode R Y G G B :
結果
name Aaron Janet Paula
class 1A 1B 2A
hcode R R R
III 群組
SELECT ...... FROM ...... WHERE condition ; GROUP BY groupexpr [HAVING requirement]
群組函數: COUNT( ), SUM( ), AVG( ), MAX( ), MIN( )
例8
求出1A班的學生名字,其數學測驗分數 界乎於80至90分之間。
SELECT name, mtest FROM student ; WHERE class="1A" AND ; mtest BETWEEN 80 AND 90
VFP的SQL命令和语句大全
VFP的SQL命令和语句大全SQL——标准的结构化查询语言关系模型数据库管理系统(DBMS)一、数据定义1.CREATE TABLE——定义表结构该命令的一般格式为:CREATE TABLE |dbf <表文件名>(字段名1 字段类型[(字段宽度[,小数位数])][,字段名2 字段类型[(字段宽度[,小数位数])]]……)例:自由表CREATE TABLE xscj(xh c(8),xm c(6),xb c(2),cj n(5,1),ksrq d ,csrq d, bj n(10))例:数据库表CREATE TABLE xscj(xh c(8) primary key ,xm c(6),xb c(2),cj n(5,1),ksrq d,zp g )2.ALTER TABLE (修改表结构)命令格式示例(1)添加字段:ALTER TABLE xscj ADD COLUMN kcmc C(14)(2)重命名字段ALTER TABLE xscj RENAME COLUMN kcmc TO kc(3)删除字段ALTER TABLE xscj DROP COLUMN kc .3.DROP TABLE <表名> //删除表文件(.dbf)二、数据操作语句4.INSERT-SQL命令该命令的一般格式为:INSERT INTO <表名>[(字段名1[,字段名2 ])] VALUES (表达式1[,表达式2 …])例:INSERT INTO xscj(xh,xm,cj)VALUES ("81991001", "张良", 85.5)5.UPDATE-SQL 命令。
功能:对符合条件的记录修改字段的值命令格式:UPDATE <表名> SET 字段 1 = 表达式 1 [,字段 2 = 表达式 2 …] [ WHERE 条件表达式][ WHERE 条件表达式]缺省,默认当前一条记录例:UPDATE xscj SET cj = cj*1.05 WHERE cj>805.DELETE-SQL 命令。
vfp的查询与sql课件
查询
向导建立查询 1、查询向导 查询向导:标准查询,同查询设计器。 查询向导 2、交叉表格 交叉表格查询(从xsda表统计专业男女生 交叉表格 数)
专业 男 女 海洋学 3人 2人 x
物理学 x
3、图形向导 图形向导:查询结果输出到图形(用表单 图形向导 OLE对象)。
视图
查询:从源表按要求生成的“新表” 查询:从源表按要求生成的“新表”,新 表不可修改。即使导出后新表可修改, 表不可修改。即使导出后新表可修改,与 源表无关。 源表无关。 视图:由源表“虚构”的新表, 视图:由源表“虚构”的新表,新表数据 的修改,通过SQL更新语句修改源表。 更新语句修改源表。 的修改,通过 更新语句修改源表 创建视图: 视图设计器” 创建视图:“视图设计器”与“查询设计 相同。 数据库”中才可用“视图” 器”相同。“数据库”中才可用“视图”。 远程视图:通过ODBC访问数据库服务器的 远程视图:通过 访问数据库服务器的 数据库” “数据库”。
查询
建立查询文件
菜单、常用工具栏、项目管理器、命令 菜单、常用工具栏、项目管理器、命令create query 新建查询->添加表 选择字段->保存查询 运行查询->运 添加表->选择字段 保存查询->运行查询 新建查询 添加表 选择字段 保存查询 运行查询 运 行查询。 行查询。
查询条件(筛选条件) where子句 查询条件(筛选条件)
SELECT xsda.学号, 姓名, cj.学号,课程号, 成绩 FROM da, cj WHERE xsda.学号= cj.学号
用JOIN格式重写:
SELECT xsda.学号, 姓名, cj.学号,课程号, 成绩 FROM XSDA JOIN CJ ON xsda.学号=cj.学号
VF常用SQL语句大全
VF常用SQL语句大全(1)SQL是结构化查询语言,查询是SQL语言的重要组成部分,但不是全部,SQL还包括数据定义,数据操纵和数据控制功能等部分.如今SQL已成为关系数据库的标准数据语言,所以现在的关系数据库管理系统都支持SQL.FOXPRO从2.5 FOR DOS版式就开始支持SQL,现在VISUAL FOXPRO当然在之方面更加完善,以下是VF经常用到SQL语句.--语句功能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据--数据定义CREATE TABLE --创建一个数据库表DROP TABLE --从数据库中删除表ALTER TABLE --修改数据库表结构CREATE VIEW --创建一个视图DROP VIEW --从数据库中删除视图CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引CREATE PROCEDURE --创建一个存储过程DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域ALTER DOMAIN --改变域定义DROP DOMAIN --从数据库中删除一个域--数据控制GRANT --授予用户访问权限DENY --拒绝用户访问REVOKE --解除用户访问权限--事务控制COMMIT --结束当前事务ROLLBACK --中止当前事务SET TRANSACTION --定义当前事务数据访问特征--程序化SQLDECLARE --为查询设定游标EXPLAN --为查询描述数据访问计划OPEN --检索查询结果打开一个游标FETCH --检索一行查询结果CLOSE --关闭游标PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句DESCRIBE --描述准备好的查询---局部变量declare @id char(10)--set @id = 10010001select @id = 10010001---全局变量---必须以@@开头--IF ELSEdeclare @x int @y int @z intselect @x = 1 @y = 2 @z=3if @x > @yprint x > y --打印字符串x > yelse if @y > @zprint y > zelse print z > y--CASEuse panguupdate employeeset e_wage =casewhen job_level = ’1’ then e_wage*1.08when job_level = ’2’ then e_wage*1.07when job_level = ’3’ then e_wage*1.06else e_wage*1.05end--WHILE CONTINUE BREAKdeclare @x int @y int @c intselect @x = 1 @y=1while @x < 3beginprint @x --打印变量x 的值while @y < 3beginselect @c = 100*@x + @yprint @c --打印变量c 的值select @y = @y + 1endselect @x = @x + 1select @y = 1end--WAITFOR--例等待1 小时2 分零3 秒后才执行SELECT 语句waitfor delay ’01:02:03’select * from employee--例等到晚上11 点零8 分后才执行SELECT 语句waitfor time ’23:08:00’select * from employee***SELECT***select *(列名) from table_name(表名) where column_name operator valueex:(宿主)select * from stock_information where stockid = str(nid)stockname = str_namestockname like % find this %stockname like [a-zA-Z]% --------- ([]指定值的范围)stockname like [^F-M]% --------- (^排除指定范围)--------- 只能在使用like关键字的where子句中使用通配符)or stockpath = stock_pathor stocknumber < 1000and stockindex = 24not stock*** = manstocknumber between 20 and 100stocknumber in(10,20,30)order by stockid desc(asc) --------- 排序,desc-降序,asc-升序order by 1,2 --------- by列号stockname = (select stockname from stock_information where stockid = 4)--------- 子查询--------- 除非能确保内层select只返回一个行的值,--------- 否则应在外层where子句中用一个in限定符select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_nameselect stockname , "stocknumber" = count(*) from table_name group by stockname--------- group by 将表按行分组,指定列中有相同的值having count(*) = 2 --------- having选定指定的组select *from table1, table2where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示table1.id =* table2.id -------- 右外部连接select stockname from table1union [all] ----- union合并查询结果集,all-保留重复行select stockname from table2***insert***insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")value (select Stockname , Stocknumber from Stock_table2)---value为select语句***update***update table_name set Stockname = "xxx" [where Stockid = 3]Stockname = defaultStockname = nullStocknumber = Stockname + 4***delete***delete from table_name where Stockid = 3truncate table_name ----------- 删除表中所有行,仍保持表的完整性drop table table_name --------------- 完全删除表***alter table*** --- 修改数据库表结构alter table database.owner.table_name add column_name char(2) null .....sp_help table_name ---- 显示表已有特征create table table_name (name char(20), age smallint, lname varchar(30))insert into table_name select ......... ----- 实现删除列的方法(创建新表)alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束***function(/*常用函数*/)***----统计函数----AVG --求平均值COUNT --统计数目MAX --求最大值MIN --求最小值SUM --求和--AVGuse panguselect avg(e_wage) as dept_avgWagefrom employeegroup by dept_id--MAX--求工资最高的员工姓名use panguselect e_namefrom employeewhere e_wage =(select max(e_wage)from employee)。
vfp命令和SQL命令(参考代码)
期末上机考试复习数据处理部分参考资料第1套有两个数据表:学生信息表(XS.DBF)和学生成绩表(CJ.DBF)。
其数据形式如下:2、建立程序文件COM-SQL711.PRG,要求将完成下列各小题任务的VFP数据表操作命令或VFP-SQL命令写在该程序文件中。
在程序首行用注释语句注明考生姓名和准考证号,并用注释语句标注小题号。
(30分)(1)正确修改每个学生的“成绩合格否”字段,并填入学生成绩表CJ.DBF中。
规定笔试成绩<60或上机成绩为“缺考”或“不及格”,则该字段值为.F.,否则为.T.;(2)在学生成绩表CJ.DBF中,查询并显示成绩合格学生的考号、姓名、笔试成绩和上机成绩;(3)逻辑删除学生成绩表CJ.DBF中,上机考试缺考的考生;(1)VFP命令:USE CJREPLACE ALL成绩合格否 WITH .T. FOR 笔试成绩>=60 AND (上机成绩=“及格” OR上机成绩=“优”)SQL命令:UPDATE CJ SET 成绩合格否=.T. WHERE笔试成绩>=60 AND (上机成绩=“及格” OR上机成绩=“优”)(2) VFP命令:SELECT 1USE XSINDEX ON 考号 TAG KHSELECT 2USE CJSET RELATION TO 考号 INTO XSLIST 考号,XS.姓名,笔试成绩,上机成绩 FOR成绩合格否=.T.SQL命令:SELECT XS.考号,姓名,笔试成绩,上机成绩 FROM XS,CJ WHERE XS.考号=CJ.考号 AND 成绩合格否=.T.(3)VFP命令:USE CJDELETE FOR 上机成绩=“缺考”SQL命令:DELETE FROM CJ WHERE上机成绩=“缺考”有两个数据表:职工数据表(ZGB.DBF)和工资数据表(GZB.DBF)。
其数据形式如下:2、建立程序文件COM-SQL712.PRG,要求将完成下列各小题任务的VFP数据表操作命令或VFP-SQL命令写在该程序文件中。
VFP中SQL语句大全
VFP中SQL语句(yǔjù)大全VFP中SQL语句(yǔjù)大全VFP的SQL命令(mìng lìng)和语句(yǔjù)大全1.CREATE TABLE - SQL命令(mìng lìng)该命令的一般(yībān)格式为:CREATE TABLE |dbf <表文件名>(字段名1 字段类型(lèixíng) [(字段宽度[,小数位数])][,字段名2 字段类型[(字段宽度[,小数位数])]]……)例:CREATE TABLE xscj(xh c(8),xm c(6),xb c(2),;cj n(5,1),k srq d)2.ALTER TABLE - SQL命令功能命令格式示例添加字段ALTER TABLE xscj ADD COLUMN kcmc C(14)重命名字段 ALTER TABLE xscj RENAME COLUMN kcmc TO kc删除字段 ALTER TABLE xscj DROP COLUMN kc3.INSERT-SQL命令该命令的一般格式为:INSERT INTO <表名>[(字段名1[,字段名2 …])] VALUES (表达式1[,表达式2 …])例:INSERT INTO xscj(xh,xm,cj) VALUES ("81991001", "张良", 85.5)4.UPDATE-SQL 命令(mìng lìng)。
命令(mìng lìng)格式: UPDATE <表名> SET 字段1 = 表达式1 [,字段2 = 表达式2 …];WHERE 条件(tiáojiàn)表达式例: UPDATE xscj SET cj = cj*1.05 WHERE cj>805.DELETE-SQL 命令(mìng lìng)。
vfp中的数据查询
vfp中的数据查询vfp中的数据查询时间:2007-05-09 本站Visual FoxPro 语言体系包括三个部分:一是传统的Xbase 语言体系,二是结构化查询语言(SQL),三是面向对象化(OOP)程序设计语言。
笔者认为,Visual FoxPro 这三部分语言都具有数据查询的功能。
可能对于Xbase语言和SQL语言具有数据查询功能大家是没有异议的,但Visual FoxPro中的OOP语言应不会有数据查询功能,因为一般认为在Visual FoxPro中数据处理是非面向对象的,就此可以得出Visual FoxPro中的OOP语言应不具备数据查询功能。
其实则不然,当我们在Visual FoxPro中通过OOP语言导入当前流行的RDO或ADO数据处理模型时,我们就会得出不同的答案。
本文想集中精力讨论Visual FoxPro 中有关Xbase语言和SQL语言的数据查询方法。
在我们开始之前,先让我们分清Xbase语言和SQL语言在数据查询中扮演的不同角色。
一句话:SQL语言侧重用于批量数据查询及复杂的关系型操作。
由于篇幅关系我们不可能在此详细讲述SELECT—SQL 语句的所有内容。
读者有兴趣可以参看本站推出的《结构化的查询语言(SQL)》。
作为优秀的数据处理语言(DML),Xbase 中许多命令、函数有数据查询功能,我们可以讲Browse、List这样的命令也能查找数据,但这在数据库系统开发中有多大作用?所以我们不讨论它们。
首先,我们通过以下命令营建一个Demo环境。
要求:查找COL1=9023时COL2的值。
CLOSE ALLCREATE TABLE ABC (COL1 I, COL2 I)FOR I=1 TO 10000?INSERT INTO ABC (COL1, COL2) VALUES (I, RAND()*100000) ENDFORINDEX ON COL1 TAG COL1USE使用LOCATE 命令USE ABCLOCATE FOR COL1=9023IIF(FOUND(),MESSAGEBOX("COL2="+STR(COL2)),MESSAGE BOX("没有找到"))USE笔者认为:LOCATE命令速度很慢,就上例来说记录指针运动了9022次,如果我有1亿条记录呢?为了解决这类问题,FoxPro提出了RUSHMORE技术用于优化FOR 子句,但其本质仍是索引技术。
vfp+sql使用方法
vfp+sql使用方法编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(vfp+sql使用方法)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为vfp+sql使用方法的全部内容。
VFP因它简单易学,可快速建立应用软件而深受广大程序员喜爱,但其数据库系统不安全也是令广大用户非常头痛。
随着MS SQL SERVER数据库系统的推广应用,其强大的安全性能普遍受到好评。
笔者在长期的编程实践中发现利用VFP的SQL PASS—THROUGH(SPT) 技术结合MS SQL SERVER 数据库系统,也能象VB、DELPHI、POWERBUILDER一样轻松开发出优秀的客户/服务器(C/S)应用软件。
现通过编写一个简单的通信录例子和广大VFP爱好者共同探讨.一、服务器端MS SQL SERVER数据库设计1、在MS SQL SERVER中建立名为“SFXT”的数据库.2、在SFXT数据库中建立名为“通信录"的表,结构如下:列名(字段名)数据类型长度姓名 CHAR 8生日 DATETIME 8电话 CHAR 11EMAIL CHAR 30并将姓名设置为主键3、在SFXT数据库中建立查询出所有记录的存储过程 SP_SEARCHALLCREATE PROCEDURE [SP_SEARCHALL] ASSELECT * FROM 通信录 ORDER BY 姓名RETURN4、在SFXT数据库中建立插入新记录的存储过程 SP_INSERTDATACREATE PROCEDURE [SP_INSERTDATA]@NAME [CHAR] (10),@BIRTHDAY [DATETIME],@TELEPHONE [CHAR] (11),@EMAIL [CHAR] (30)ASINSERT INTO 通信录(姓名,生日,电话,EMAIL) valueS(@NAME,@BIRTHDAY,@TELEPHONE,@EMAIL)RETURN二、客户端VFP的SQL PASS—THROUGH技术设计1、建立VFP表单界面,按钮内容如下建立ODBC数据源建立连接方式1建立连接方式2活动连接属性设置执行存储过程查询数据执行SQL语句查询数据向存储过程传替参数插入新记录设置当前表的属性修改数据断开指向数据源的连接退出程序2、建立名为SFXT的ODBC数据源连接MS SQL SERVER中的SFXT数据库可通过执行上面VFP表单的按钮建立ODBC数据源来完成;或者通过运行WINDOWS控制面板中的ODBC数据源来完成,主要设置包括选择SQL SERVER 驱动程序,通信协议,登录标识与密码等。
VFP7查询统计SQL.ppt
2.8 SQL语言简介
• SQL(STRUCTURED QUERY LANGUAGE)语言是一种十分重要的标 准数据库语言,它是集数据定义,数据 查询,数据操纵和数据控制功能于一体 的语言。
SQL语言,是一个非过程化的语言,它 不是数据库管理系统,也不是应用软件 开发语言,它只能用于对数据库中的数 据进行操作。
HAVING子句
指定有无重复记录 ALL/DISTINCT
指定结果的范围 TOP 表达式[PERCENT]
SQL的数据查询命令可以实现数据库的任何查询。为清 楚起见我们将其概括为四大类:简单查询、嵌套查询、连 接查询、分组及使用库函数查询。下面分别进行介绍: 1.简单查询
基本查询语句
【格式】SELECT [ALL | DISTINCT] <字段列表>
FROM <表>
【功能】无条件查询。
【说明】ALL: 表示显示全部查询记录,包括重复 记录。
DISTINCT: 表示显示无重复结果的记录。
【例1】从XSDA中检索所有"男"性考生信息。 SELECT * FROM XSDA WHERE 性别="男" 其中"*"代表所有字段。
例:统计图书表TS.DBF中各出 版社出版图书的价格总和。
USE TS INDEX ON 出版单位 TAG 出版单位 TOTAL ON 出版单位 TO TJB FIELDS 单价
USE TJB LIST
查看汇 总结果
例 :对XSCJ按性别对所有人的计算机和总分进行 分类汇总,并存入表ABC中。
USE XSCJ INDEX ON 性别 TAG XB TOTAL ON 性别 TO ABC FIELDS 计算机,总分
VFP-第七章查询和视图
➢ 在项目管理器的“数据”选项下选择“查询”, 然后单击“新建”按钮打开查询设计器建立查 询。
查询设计器及添加表及视图窗口
可添加当前数据库中的表或自由表及视图
在查询设置器中添加多个表
1.定向输出查询结果
定向输出查询结果的方法是:
■“查询”菜单中选择“查询去向”
■在“查询设计器”工具栏中选择“查询去向”按钮,在 “查询去向”对话框中选择
2.验证查询
用“查询设计器”生成的查询实际上是一条SQL查 询命令。运行一个查询,实际上是在执行该SQL查询命令
■查看SQL语句
查看方法:单击查询设计器工具栏上的SQL按钮 选择“查询”菜单中的“查看SQL”选项
各选项卡的设置
字段、联接、筛选、排序依据、分组依据、杂项
7.2.2 视图与数据更新
使用视图更新基本表
浏览或运行视图会得到一个临时表,表中数据是从 基本表中提取的,可以更改临时表中的数据,并将更新 结果回送到基本表中,达到更改数据表的目的。
(1)指定可更新的表
(2)指定可更新的字段
“钥匙”列:每个要更新的表至少要设置一个关键字 ,更 新
可以指定是否要输出重复记录及列在前面的记录等。
要指定列在前面的记录时需要在“排列依据”选项卡中设 置排序依据,单击“全部”复选框使其为不选中,然后在 输入记录个数或选中”百分比复选框设置输出百分比。
7.1.2 修改查询
各选项卡设置完成后,将查询保存为查询文件;也可 以再次打开查询设计器进行查询的修改。
(4)“排列依据”选项卡
“排序依据”选项卡用来指定字段、合计函数SUM、 COUNT或其他表达式,设置查询中检索记录的输出顺序
VFPSQL查询-PPT文档资料
它不是数据库管理系统,也不是 应用软件开发语言,它只能用于对数 据库中数据的操作。 SQL语言有两种使用方式,即可 以作为自含式语言,在数据库管理系 统中独立使用,又可以作为嵌入式语 言,嵌入许多高级语言(如C、 FORTRAN、COBOL)中使用。
SQL语言逻辑运算符 字符串匹配运算符
030 010 034 001 023 033
1 1 2 1 2 2
67.0 58.0 82.0 50.0 95.5 76.5
0 70.0 0 75.5 0 0
(b) 课程号 001 010 023 030 033 034
课程表(kcb.dbf) 课程名 高等数学I 大学英语 马列、毛泽东思想理论 大学计算机基础 操作系统基础 PC机原理与应用 学分 8 12 3 3 2 3 必修否 .T. .T. .T. .T. .F. .F.
英语3班 gen 机械制造4班 gen 机械制造4班 gen
20195643 崔婷婷
20197634 冯丽娟
女
女
1986-6-8
1986-6-30
机械制造4班 gen
机械制造4班 gen
memo
memo
(c) 学号 20190010 20190010 20190020 20193567 20193567 20190025 20190010
20190005 张广田 20190010 蜂雪燕 20190015 何芳 20190020 冯艳 20190025 陈兴华 20190030 陈宗贵
20190035 张伟
男
1987-3-24
1987-3-7 1986-6-30 1986-4-26
英语3班
gen
memo
memo memo memo
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
功能:对<关键字段名>值相同的记录中的所有
数值型字段进行分类汇总,并将结果存入另一 数据表文件。 注:汇总前应按<关键字段名>建立索引并该索 引为主索引。
制作人:杜春敏
12
例5:统计图书表TS.DBF中各出版社 出版图书的价格总和,保存到汇总表 TJB.DBF中。
CNT():统计记录数,即进行统计计算的样本个数。
MAX | MIN(<表达式>):计算数值表达式及字符表达 式的最大(小)值和日期表达式的最后时间。
STD(<数值表达式>):计算标准差。
VAR(<数值表达式>):计算方差。
制作人:杜春敏
17
例7:计算“科学出版社”出版图书的册数 和价格总和。
操作如下:
[,<字段名2><类型>…])
制作人:杜春敏
21
例:用SQL命令创建表文件
1.创建表文件RYGL.DBF,其结构如下:编号C(4),姓名 C(6),性别 c(2),基本工资N(6,1) Create table rygl(编号 c(4),姓名 c(6),性别 c(2),基本工资 n(6,1))
2. 创建表文件XS.DBF,其结构如下: xh c(8),xb c(2),csrq d,jl m,zp g. Crea dbf XS (xh c(8),xb c(2),csrq d,jl m,zp g)
制作人:杜春敏
15
4.计算命令
命令格式:
CALCULATE <表达式表> [<范围>] [FOR<条
件>] [TO<内存变量>|ARRAY<数组>] 功能:对包括数据表中字段的表达式表进行指定 的运算。 缺省范围是所有记录。
制作人:杜春敏
16
说明:命令中的<表达式表>中可以包括下列函数及它们 的组合: SUM(<数值表达式>):求和。 AVG(<数值表达式>):计算算术平均数。
USE DZ COUNT FOR 职称=“教授” TO N COUNT FOR 职称=“副教授” TO M COUNT FOR 职称=“讲师” TO J ?N,M,J
制作人:杜春敏
8
例2.统计借书证号是“112”读者的借书次数,结果保 存在内存变量JS中,并显示统计结果. 分析:读者借书情况通过“借书证号”反映在借阅 表JY.DBF中。 操作如下: USE JY COUNT FOR 借书证号=“112” TO JS ?JS
TOTAL ON 性别 TO ABC FIELDS 计算机,英语
USE ABC LIST
查看汇 总结果
制作人:杜春敏
14
TOTAL命令的一般用法:
USE <表文件名> INDEX ON <关键字> TAG <索引标识> TOTAL ON <关键字> TO <汇总表文件名>; [ FIELDS <字段名表>] [范围] [FOR <条件>]
教学课件
安徽中医学院 杜春敏 2008.4
查询、统计与SELECT- SQL P72
• 查询 (LOCATE、SEEK) • 统计 (COUNT、SUM、AVERAGE、TOTAL、 CALCULATE) • SQL语言简介 (常用SQL命令、 SELECT- SQL查询)
制作人:杜春敏
2
2.5 查询命令
制作人:杜春敏
20
SQL语言常用的语句及语法格式
1 创建表
CREATE TABLE|DBF <表名1> [[NAME <长表名>][FREE]]
(<字段名1> <类型>[(<字段宽度>[,<小数位数>])]
[NULL|NOT NULL] [完整性约束] [CHECK <逻辑表达式> [ERROR <字符型文本信息>]] [DEFAULT<表达式>] [PRIMARY KEY|UNIQUE]
制作人:杜春敏
27
3删除数据(逻辑删除)
格式: DELETE FROM [数据库名!]<表名> WHERE <条件>
相当于: USE <表名> DELETE FOR <条件>
例7:对表DZ.DBF中姓名为“许鹏飞”的记录 作删除标记。
Delete from DZ where 姓名='许鹏飞'
制作人:杜春敏
【例9】将数据库表文件XSCJ.DBF中计算机和英语成 绩均不及格学生的计算机和英语成绩分别增加5分。
【说明】更新操作又称为修改操作。 相当于:USE <表名> REPLACE [范围] <字段名1> WITH <表达式1> [,<字段名2> WITH <表达式2>…] [FOR <条件>]
制作人:杜春敏
29
【例8】将表文件“学生.DBF”中班级为“2003针推 w”的专业修改为“针灸”。
UPDATE 学生 SET 专业=[针灸] ; WHER 班级=[2003针推w]
USE TS INDEX ON 出版单位 TAG 出版单位 TOTAL ON 出版单位 TO TJB FILEDS 单价
USE TJB LIST 出版单位 ,单价
查看汇 总结果
制作人:杜春敏
13
例6 :对XSCJ按性别对所有人的计算机和英语进 行分类汇总,并存入汇总表ABC中。
USE XSCJ
INDEX ON 性别 TAG XB
USE TS
CALCULATE CNT(),SUM(单价) ;
FOR 出版单位="科学出版社" TO C1,S1
制作人:杜春敏
18
பைடு நூலகம்计命令小结:
• 1.COUNT、SUM、AVERAGE三条命令仅产生 内存变量。用?显示输出其结果。 • 2.TOTAL命令产生一个表文件。其中存放在指 定范围内符合条件的每一类的第一条记录。 要查看汇总结果,需要用USE打开相应的表文 件,用LIST、DISPLAY或BROWSE查看。 • 3. CALCULATE命令提供了多种统计计算,包含
制作人:杜春敏
10
例3: 计算XSCJ中计算机成绩的总和并存入变量A 中,并显示. 操作:USE XSCJ SUM 计算机 TO A ?A
例4:计算XSCJ中数学,英语,计算机三门课的平均分 并存入变量A,B,C中 操作: AVERAGE TO A,B,C
制作人:杜春敏
11
3 数据表记录分类汇总 命令格式:
COUNT、SUM、AVERAGE三条命令,结果产生内存 变量。
制作人:杜春敏
19
2.8 SQL语言简介
• SQL(STRUCTURED QUERY LANGUAGE结构化查询语言)语言是一种 十分重要的标准数据库语言,它是集数据 定义,数据查询,数据操纵和数据控制功 能于一体的语言。 SQL语言,是一个非过程化的语言,它不 是数据库管理系统,也不是应用软件开发 语言,它只能用于对数据库中的数据进行 操作。
28
4修改数据(更新记录命令)
【格式】
UPDATE [数据库名!]<表名> ; SET <字段名1>=<表达式1>;
[,<字段名2>=<表达式2>…;] [WHERE <条件>]
【功能】更新指定表文件中满足WHERE条件子句的数据。其中 SET子句用于指定列和修改的值,WHERE用于指定更新的行, 如果省略WHERE子句,则表示表中所有行。
制作人:杜春敏
25
(6)ERROR <字符型文本信息>:指定在浏览或编辑 窗口中该字段输入的值不符合CHECK子句的合法值时, Visual FoxPro显示的错误信息。 (7)DEFAULT <表达式>:为该字段指定一个缺省值, 表达式的数据类型与该字段的数据类型要一致。 (8)PRIMARKEY:为该字段创建一个主索引,索引 标识名与字段名相同。 (9)UNIQUE:为该字段创建一个候选索引,索引标 识名与字段名相同。 例5:CREATE DATABASE ZGSJK &&建立职工数据库 CREATE TABLE ZGQK (编号 C(5) PRIMARY KEY,姓名 C(8),出生日期 D(8),工资 N(6,2) CHECK(工 资>0) ERROR “工资应该大于0!”) &&在ZGSJK数据库中建立ZGQK表 注意:用SQL命令新建的表自动在最小的可用工作区 中以独占的方式打开,并可通过别名引用。
LIST STRUCTURE
制作人:杜春敏
23
【例4】创建一个表SC(课程成绩表),它由以下 字段组成:学号(C,10);课程号(C,2) , 并显示表结构。
CREATE TABLE SC(学号 C(10),课程号 C(2))
LIST STRUCTURE
制作人:杜春敏
24
说明:
(1) NAME长表名:为新建表指定一个长表名。只有打 开了数据库,在数据库中创建表时,才能指定一个长 表名。长表名可以包含128个字符。 (2)FREE:建立的表是自由表,不加入到打开的数据库 中。当没有打开数据库时,建立的表是自由表。 (3) <字段名1> <类型>[(<字段宽度>[,<小数位数>]):指 定字段名、定义字段类型、字段宽度及小数位数。字 段类型可以用一个字符表示:C表示字符型,D表示日 期型,T表示日期时间型,N表示数值型,F表示浮点 型,I表示整型,B表示双精度型,L表示逻辑型,M表 示备注型,G表示通用型。 (4) NULL:允许该字段值为空。 NOT NULL:该字段值不能为空、缺省值为NOT NULL。 (5) CHECK <逻辑表达式>:指定该字段的合法值及该 字段值的约束条件。