查询建立查询文件菜单、常用工具栏、项目管理器、命令createquery新建查询-添加表-选择字段-保存查询-运行查询-运行查询。查询条件(筛选条件)where子句否:反转条件。逻辑:ANDOR插入:插入一个筛选条件。移去:删除选定的条件。排序依据:设置结果排序字段。输出去向:浏览临时表表图形屏幕报表标签等。查询分组依据:把结果相同数据值的记录放在一起,形成若干分组。将一组类似的记录压缩成一个结果显示。一般用于sum、avg、count等。多表查询(联接):内联接、左联接、右联接、全联接。左联接:左侧的表中记录都包含在结果中。完全联接:满足和不满足联接条件的记录都包含在结果中。查询向导建立查询1、查询向导:标准查询,同查询设计器。2、交叉表格查询(从xsda表统计专业男女生数)3、图形向导:查询结果输出到图形(用表单OLE对象)。专业男女海洋学3人2人物理学xx视图查询:从源表按要求生成的“新表”,新表不可修改。即使导出后新表可修改,与源表无关。视图:由源表“虚构”的新表,新表数据的修改,通过SQL更新语句修改源表。创建视图:“视图设计器”与“查询设计器”相同。“数据库”中才可用“视图”。远程视图:通过ODBC访问数据库服务器的“数据库”。更新条件:如何通过视图数据的修改更改源基表。1.设置关键字段:2.指定更新字段。3.发送SQL更新。控制更新冲突:关键字段,关键字段和可更新字段,关键字段和已修改字段,关键字段和时间。更新方法:UPDATE,或删除再插入。参数试图:在“筛选”选项卡中的“实例”输入问号和参数名。CREATVIEW视图名;ASSELE-SQL语句。修改视图:MODIFYVIEW视图名。使用视图:USE视图名(同表一样使用)SQL(StructuredQueryLanguage)结构化查询语言.结构化查询语言SQLSQL(StructuredQueryLanguage)结构化查询语言。标准化、通用查询语言。SQL包括了数据查询、定义、操作和控制等方面的功能。查询语句Select较繁,VFP提供交互工具“查询设计器”。定义:创建、修改或删除数据表。CREATE|ALTER操作:修改数据的命令。INSERT,DELETE,UPDATE控制:权限管理,VFP不支持。查询语句SelectSELECT[ALL|DISTINCT][TOPnExpr[PERCENT]][Alias.]Select_Item[ASColumn_Name][,[Alias.]Select_Item[ASColumn_Name]...]FROM[FORCE][DatabaseName!]Table[[AS]Local_Alias][[INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER]JOINDatabaseName!]Table[[AS]Local_Alias][ONJoinCondition…][[INTODestination]|[TOFILEFileName[ADDITIVE]|TOPRINTER[PROMPT]|TOSCREEN]][PREFERENCEPreferenceName][NOCONSOLE][PLAIN][NOWAIT][WHEREJoinCondition[ANDJoinCondition...][AND|ORFilterCondition[AND|ORFilterCondition...]]][GROUPBYGroupColumn[,GroupColumn...]][HAVINGFilterCondition][UNION[ALL]SELECTCommand][ORDERBYOrder_Item[ASC|DESC][,Order_Item[ASC|DESC]...]]输出字段数据源筛选条件输出排序分组汇总连接条件输出去向一.简单查询SELECT字段FROM[数据库!]表[WHERE条件]例1:从“XSDA.dbf”中检索出所有“姓名”,“性别”SELECT姓名,性别FROMXSDA例2:从“CJ.dbf”中检索出“成绩”超过85的记录SELE学号,成绩FROMCJWHERE成绩=85SELE*FROMCJWHERE成绩=85*—选择所有字段。选择输出结果还可以用表达式。BETWEEN…AND…ORDERBY结果排序输出的查询结果排序。ORDERBY输出项[ASC|DESC][,…]检索结果按“成绩降序”输出。Select*fromCJorderby成绩descSelect*fromXSDAorderby姓名聚集查询结果聚集函数COUNT,SUM,AVG,MIN,MAXGROUPBY分组按“分组”聚集。如班级“总成绩”、“总人数”,男女生的“总成绩”、“总人数”等。Select班级,count(*)fromXSDAgroupby班级Select专业,性别,count(*)fromXSDAgroupby1,2Select班级,avg(总分)fromXSDAgroupby班级分组加HAVING,分组后的筛选条件。如检索“班级人数”2,班级“平均总分”:Select班级,avg(总分)fromstd_dagroupby班级;havingcount(*)2查询输出显示部分记录:TOP数值表达式[PERCENT]输出到数组:INTOARRAY数组名输出到临时表:INTOCURSOR临时表名输出到表:INTODBF|TABLE表名输出到文件:TOFILE文件名输出到打印机:TOPRINTER输出到屏幕:[TOSCREEN]二.联接查询从多个表中获取检索信息。两个表需要“联接”成一个表。两个表必须有公共数据(字段)。查询xsda中“学号,姓名”;cj中“课程号,成绩”信息。SELECTxsda.学号,xsda.姓名,cj.学号,cj.课程号,cj.成绩FROMxsda,cjWHERExsda.学号=cj.学号打开表xsda给别名D,CJ给别名C:SELECTD.学号,D.姓名,C.学号,C.课程号,C.成绩FROMxsdaD,cjCWHERED.学号=C.学号SELECTxsda.学号,姓名,cj.学号,课程号,成绩FROMxsda,cjWHERExsda.学号=cj.学号JOIN联接另一种用JOIN联接,加到FROM子句中。句法:FROMTable1[[AS]Local_Alias]INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER]JOINTable2ONJoinCondition…SELECTxsda.学号,姓名,cj.学号,课程号,成绩FROMda,cjWHERExsda.学号=cj.学号用JOIN格式重写:SELECTxsda.学号,姓名,cj.学号,课程号,成绩FROMXSDAJOINCJONxsda.学号=cj.学号内联接:INNERJOIN两表都包含的记录。左联接:LEFTJOIN左侧的表中记录都包含在结果中。左联接:RIGHTJOIN右侧的表中记录都包含在结果中。完全联接:FULLJOIN无论匹配与否,包含两边表的所有行。多表JOIN联接注意顺序。…FROMDAJOINCJJOINKCONCJ.课程号=KC.课程号ONDA.学号=cj.学号……FROMCJJOINKCJOINDAONDA.学号=cj.学号ONCJ.课程号=KC.课程号…X该写法错X子查询是嵌套在另一个SQL语句中并提供嵌套它的语句所使用数据的SELECT语句。[NOT]IN:在SELECT的WHERE子句中。是否等于子查询值中的一个。格式:SELECT……FROM…..WHERE[NOT]IN(SUB—SELECT)EXISTS:存在于子查询中。SELECT……FROM…..WHERE[NOT]EXISTS(SUB—SELECT)ANY、SOME或ALL:…WHERE比较运算符ANY|SOME|ALL(SUB-SELECT)查询每门课程成绩都大于70分的学生。sele*fromcjwhere成绩=70sele*fromcjwhere学号notin(sele学号fromcjwhere成绩70)无关子查询sele*fromcjxwherenotexists(sele*fromcjbwhere成绩70andx.学号=b.学号)相关子查询。IN、EXISTS、ANY|SOME|ALL、LIKE匹配。并UNIONselect命令1unionselect命令2插入、更新及删除记录对数据表中的记录进行操作。插入记录:INSERTINTO表(字段,字,…)VALUES(值,值,…)INSERTINTO表FROMARRAY数组名inseintoxsda(学号,姓名)values(“200201001”,“张三”)更新记录UPDATE表SET字段=值,,,WHERE条件updatexsdaset姓名=李四where姓名=张三删除记录DELETEFROM[库!]表名[WHERE条件]创建、修改数据表CREAtetable表文件名(字段名类型(长度,小数位数),….)添加字段:altertable表名addcolumn字段名类型(长度,小数位数)删除字段:altertable表名dropcolumn字段名修改字段:altertable表名altercolumn字段名类型(长度,小数位数)重命名字段:altertable表名renamecolumn字段名to新字段名建表CREATETABLE|DBFTableName1[FREE](FieldName1FieldType[(nFieldWidth[,nPrecision])][CHECKlExpression1[ERRORcMessageText1]]字段有效性[DEFAULTeExpression1]默认值[PRIMARYKEY|UNIQUE[TAG标示]]主索引[REFERENCESTableName2[TAGTagName1]]建永久关系[,FOREGINKEY表达式TAG标示REFERENCES父表TAG标示[,CHECKlExpression1[ERRORcMessageText1]]记录有效性….)PRIMARYKEY:主关键字(主索引),UNIQUE:候选索引。CHECK:有效性中的“规则”,ERROR:中“信息”。DEFAULT:有效性中的“默认值”REFERENCESTableName2:建立永久关系,父表名,TAG索引标示。FOREiGNKEY建外部索引,与REFERENCES建立永久关系。添加、修改字段ALTERtable表名add|altercolumn字段名类型(长度,小数位数)[CHECKlExpression1[ERRORcMessageText1]]字段有效性[DEFAULTeExpression1]默认值[PRIMARYKEY|UNIQUE]主索引[REFERENCESTableName2[TAGTagName1]]建永久关系修改属性:[SETCHECKlExpression1[ERRORcMessageText1]][SETDEFAULTeExpression1][DROPDEFAULT]删除默认值[DROPCHECK]删除有效规则修改表属性ALTERTABLE表[DROP字段]删除字段[SETCHECK…]设置表有效性[DROPCHECK]删除表有效性[ADDPRIMARYKEY…]建主索引[DROPPRIMARYKEY]删除主索引[ADDFOREIGNKEY…REFERENCE…]建外关键字及永久关系[DROPFOREIGNKEY]删除外关键字及永久关系[RENAME字段名TO新字段名]字段重命名删除数据表DROPTABLE表名建视图CREATEVIEW视图名[ASSQL-SELECT语句]删除视图DROP|DELECTVIEW视图名修