附录-VFP9.0SQL基础.ppt

上传人:xian****812 文档编号:6308515 上传时间:2020-02-22 格式:PPT 页数:15 大小:350.37KB
返回 下载 相关 举报
附录-VFP9.0SQL基础.ppt_第1页
第1页 / 共15页
附录-VFP9.0SQL基础.ppt_第2页
第2页 / 共15页
附录-VFP9.0SQL基础.ppt_第3页
第3页 / 共15页
点击查看更多>>
资源描述
附录VFP9 0SQL基础 SQL全称是 结构化查询语言 StructuredQueryLanguage SQL StructuredQueryLanguage 是一种数据库查询和程序设计语言 用于存取数据以及查询 更新和管理关系数据库系统 SQL语句可以嵌套 这使他具有极大的灵活性和强大的功能 在多数情况下 在VisualFoxPro中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的 VisualFoxPro支持SQL命令 SQL命令在VisualFoxPro9 0中进一步被充分地予以增强 例如支持多重子查询 支持UPDATE命令相互关联的更新等 今天所讲的内容均在VisualFoxPro9 0环境中运行 数据查询命令 例如 SELECT语句 数据定义命令 例如 CREATE ALTER等语句 数据操作命令 例如 INSERT UPDATE DELETE语句 SQL命令主要包括有 SELECT语句的基本格式SELECT Alias Select Item AS Column Name FROMTable AS Local Alias WHEREFilterCondition GroupByGroupColumn GroupColumn HAVINGFilterCondition OrderByOrder Item ASC DESC INTOdbfnew table cursortemp table arrayarray name 参数说明如下 SELECT子句用于指定所选择的要查询的特定表中的列 它可以是星号 表达式 聚合函数 变量等 FROM子句用于指定要查询的表 可以指定多个表 用逗号相互隔开 WHERE子句用来限定查询的范围和条件 GROUPBY子句是分组查询子句 HAVING子句用于指定分组子句的条件 ORDERBY子句可以根据一个列或者多个列来排序查询结果 ASC表示升序排列 DESC表示降序排列 INTO子句用于指定查询结果所存储的方式 一 无条件查询最基本的SELECT语句仅有两个部分 要返回的列 和这些列源于的表 也就是说查询均为不使用WHERE子句的无条件查询 例1查询一个表中所有数据 SELECT FROMwbk说明 号表示返回这个表所有的列 例2查询一个表中的某几列数据 SELECTwbxh xm sfzhFROMwbk说明 可以在列名称后加上AS来为列指定别名 我们想把上个语句中的wbxh列显示为 网报序号 xm列显示为 姓名 sfzh列显示为 身份证号 可以将上面的语句修改为 SELECTwbxhas网报序号 xmas姓名 sfzhas身份证号FROMwbk SELECT查询语句的用法 例3查询wbk中所有网报日期为2008年8月20日的数据 SELECT FROMwbkWHEREwbrq 2008 08 20 说明 由于这个表中的wbrq字段是字符型的 所以 2008 08 20 用了引号 如果wbrq字段是日期型的 则需改为wbrq 2008 08 20 例4查询08年5月卧龙区会考成绩库中课程号为01 等在1 3之间的数据 SELECT FROM085卧龙会考成绩WHERE课程号 01 AND等级between 1 AND 3 说明 这里使用了SQL中一个特殊的运算符 between 使用方法是 字段名称between值1AND值2 二 条件查询当要在表中找出满足某些条件的行时 则需使用WHERE子句指定查询条件 例5查询08年5月卧龙区会考成绩库中课程号为01或者02的数据 SELECT FROM085卧龙会考成绩WHERE课程号 01 OR课程号 02 说明 这里使用了另一个运算符 or 表示或者运算 例6查询wbk中xm字段包括 张 的所有数据 SELECT FROMwbkWHERE 张 xm说明 这里使用了VFP中的一个字符运算符 表示在后面的字符表达式中寻找前面的字符表达式 例7查询08年5月卧龙区会考成绩库中会考证号从第5位到第8位为 0206 即06级八中 的数据 SELECT FROM085卧龙会考成绩WHERESUBSTR 会考证号 5 4 0206 说明 这里使用了VFP中的一个字符函数 SUBSTR 字符串 起始位置 长度 三 查询排序当需要对查询结果排序时 应该在SELECT语句中使用ORDERBY子句 ORDERBY子句包括了一个或多个用于指定排序顺序的列名 排序方式可以指定 DESC为降序 ASC为升序 缺省时为升序 ORDERBY子句必须出现在其他子句之后 例8查询bm表中的数据 并按bmxh字段排序 SELECT FROMbmORDERBYbmxh说明 ORDERBY在默认情况下为升序 若要降序排列 命令应改为 SELECT FROMbmORDERBYbmxhDESC当然也可以增加查询条件 比如查询bmxh前4位为 1701 的数据并按升序排列 则命令如下 SELECT FROMbmWHEREbmxh 1701 ORDERBYbmxh例9多列指定排序 查询会考成绩库 按会考证号和课程号排序 SELECT FROM085卧龙会考成绩ORDERBY会考证号 课程号 四 分组查询1 GROUPBY子句可以将查询结果按列进行分组 例10在会考成绩库中 按会考证号分组查询 SELECT会考证号FROM085卧龙会考成绩GROUPBY会考证号若要想查到每个考生各报考了几门课程 则需要使用一个聚合函数 COUNT SELECT会考证号 COUNT 会考证号 as报考科数FROM085卧龙会考成绩GROUPBY会考证号 表1常用的聚合函数 下面用一个例子说明各个聚合函数的使用方法 例11在会考成绩库中 分别计算每一门课程报考了多少人 最高等级 最低等级 平均等级值 等级总和 SELECT课程号 MAX 等级 MIN 等级 AVG VAL 等级 SUM VAL 等级 COUNT 会考证号 FROM085卧龙会考成绩GROUPBY课程号说明 由于表中的等级字段为字符型 所以用了一个VFP的类型转换函数 VAL 将字符型的值转换为数值型的值进行计算 2 GROUPBY子句和HAVING子句联合使用 可在分组后按照一定的条件进行筛选 例12这个例子是我们在工作中经常遇到的问题 就是查询出wbk中身份证号重复的数据 SELECTMAX wbxh MAX xm sfzh COUNT sfzh ascfsFROMwbkGROUPBYsfzhHAVINGcfs 1 例13 将会考成绩的纵向表转换为横向表 SELECT会考证号 MAX IIF 课程号 01 等级 aszh MAX IIF 课程号 02 等级 asyw MAX IIF 课程号 03 等级 assx MAX IIF 课程号 04 等级 aswy MAX IIF 课程号 05 等级 aswl MAX IIF 课程号 06 等级 ashx MAX IIF 课程号 07 等级 assw MAX IIF 课程号 08 等级 asls MAX IIF 课程号 09 等级 asdl FROM085卧龙会考成绩GROUPBY会考证号说明 IIF 条件表达式 值1 值2 函数的使用方法是 若满足条件表达式 则返回值1 否则 返回值2 五 多个表关联查询前面4类所讲到的都是在一个表中进行查询 但我们在工作实际中常常会遇到需要将多个表关联在一起进行查询 下面我们通过一个例子来说明如何进行多个表关联查询 例14 有三个表 会考成绩表 课程代码表 等级代码表 成绩表中的课程 等级均为代码 不直观 我们希望通过查询将课程名称与等级名称直观地显示出来 SELECTcj 会考证号 kc 课程名称 djdz 等级FROMcj kc djdzWHEREcj 课程号 kc 课程代码ANDcj 等级 djdz 编号 SELECT0 USEj 085卧龙会考成绩 dbfALIAScj 打开成绩表 SELECT0 USEj kc dbfSHARED 打开课程表 SELECT0 USEj djdz dbfSHARED 打开等级表 六 子查询在WHERE子句中包含一个SELECT FROM WHERE的查询块 此查询块称为子查询或嵌套查询 包含子查询的语句称为父查询或外部查询 下面我们通过一个例子来说明简单的子查询的使用方法 例15 有两个库 08年5月会考报名库 库中包括会考证号 课程号等字段 卧龙区06级学生信息库 库中包括会考证号 姓名等字段 现在要求从06级学生信息库中挑出08年5月未报名参加会考的八中的学生 八中的学生会考证前6位是170202 SELECT0USEj 1702卧龙区07级学生信息 dbfALIASxsk SELECT0USEj 所有科目 dbfALIASbmk SELECT FROMxskWHERE会考证号NOTin SELECT会考证号FROMbmk AND会考证号 170202 UPDATETargetSETColumn Name1 eExpression1 Column Name2 eExpression2 FROMTable WHEREFilterCondition1 AND ORFilterCondition2 参数说明如下 UPDATE子句用于指定要更新的表 SET子句指定要进行更新的表中的列及其新值 WHERE子句用来限定查询的范围和条件 如果省略WHERE子句 表中的每一行都用相同的值更新 UPDATE语句的基本格式 例15 将课程库中kcdm2字段的内容用课程代码字段的内容前面加上一个 0 替换 UPDATEkcSETkcdm2 0 ALLTRIM 课程代码 说明 此语句可用VFP中的REPLACE命令替代 REPLACEkcdm2WITH 0 ALLTRIM 课程代码 ALL 例16 将报考库的课程名称字段用课程库中的课程名称字段更新 SELECT0USEj 所有科目 dbfALIASbk SELECT0USEj kc dbf UPDATEbkSETbk 总顺序号 kc 课程名称fromkcWHEREbk 课程 kc 课程代码
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!