VF关系数据库标准语言SQL

上传人:平*** 文档编号:9860784 上传时间:2017-10-04 格式:DOC 页数:23 大小:96.13KB
返回 下载 相关 举报
VF关系数据库标准语言SQL_第1页
第1页 / 共23页
VF关系数据库标准语言SQL_第2页
第2页 / 共23页
VF关系数据库标准语言SQL_第3页
第3页 / 共23页
VF关系数据库标准语言SQL_第4页
第4页 / 共23页
VF关系数据库标准语言SQL_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《VF关系数据库标准语言SQL》由会员分享,可在线阅读,更多相关《VF关系数据库标准语言SQL(23页珍藏版)》请在金锄头文库上搜索。

1、注:本课件授课内容中标注的页码与教程一致。“习题”来自教程 , “练习”来自一本通第 5 章 结构化查询语言(SQL)SQL 概述 P86同学们:SQL 的内容在笔试和上机考试中均占到大约 30%的比例,此外它还是查询和视图的基础,因此是学习的重点也是难点。在讲解本部分内容时,以VFP 程序设计教程 第 5 章为主,要求大家课后一定要结合例题解析进行复习。虽然 SQL 对大家来说有一定的难度,但是熟能生巧,大家把书中所涉及的题目和课件中的例题都理解并且操作了,相信 SQL 这个难关一定能攻克。SQL 是结构化查询语言 Structure Query Language 的缩写。SQL 包含了查询

2、功能、数据定义、数据操纵和数据控制功能,在VFP 中没有提供数据控制功能。SQL 主要特点:P861 SQL 是一种一体化语言。2 SQL 是一种高度非过程化的语言。3 SQL 语言非常简洁。4 SQL 语言可直接以命令方式交互使用,也可嵌入到程序设计语言中以程序方式使用。第四节 数据查询功能 P94SELECT 命令的特点:P941 可以自动打开数据库、表文件加以查询,而不需要事先用OPEN DATABASE 或 USE 命令打开。2 可以直接选取数据表中的数据,而不需要事先用 SET RELATION 命令建立关联。3 当需要的索引文件不存在时,会自动建立暂存索引文件,以支持快速搜索技术(

3、Rushmore)来查询。4 其查询结果可输出到文件、表、屏幕或报表上,还可以转换成统计图表。命令格式:SELECT FROM WHERE P94可与 LIST FIELDS FOR 对照学习。关系操作:投影,选择,联接。说明:功能强大,语法灵活;要处理的数据表无须事先打开,通过FROM 子句指明并打开。1 SELECT 短语:说明要查询的数据;对应的关系操作为投影,类似于 FIELDS 子句。2 FROM 短语:说明要查询的数据来自哪个或哪些表,可对单个表或多个表进行查询;3 WHERE 短语:说明查询条件;对应的关系操作为选择,类似于 FOR 子句。如是多表查询还可能过该子句指明联接条件,

4、进行联接。4 GROUP BY 短语:用于对查询结果进行分组,可利用它进行分组汇总;类似于 TOTAL 命令。5 HAVING 短语:跟随 GROUP BY 使用,它用来限定分组必须满足的条件;6 ORDER BY 短语:用于对查询的结果进行排序;类似于SORT 命令。示例数据库:学生管理,包括三个表:学生,课程,选课(通过该表反映“学生”与“课程”之间“多对多”的联系。 )问题:请同学们分别指出三个表的主关键字。一、 简单查询 P95简单查询基于单个表。例:基本查询:1、列出学生信息SELE * FROM 学生 &“*”号代表所有列。类似于:USE 学生LIST2、列出学生的学号,姓名条件查

5、询:常用运算符 P951、列出男生学生的学号、姓名及生日SELE 学号,姓名,生日 FROM 学生 WHERE 性别=” 男”类似于USE 学生LIST 学号,姓名,生日 FOR 性别=” 男”2、列出学分大于 5 的课程的信息SELE * FROM 课程 WHERE 学分5类似于USE 学生LIST FOR 学分5习题:P95 例 5-11,5-12练习:P92 11、13特殊运算符 P951 BETWEEN AND 意为“和之间”例:查询成绩在 80 分到 90 分之间的选课信息。SELE * FROM 选课 WHERE 成绩 BETWEEN 80 AND 90等价于:SELE * FRO

6、M 选课 WHERE 成绩=80 AND 成绩ANY|ALL|SOME(子查询)格式 2:NOT EXISTS (子查询)说明:1ANY、ALL 和 SOME 为量词,ANY 和 SOME 是同义词,在进行比较运算时只要子查询中有一行能使结果为真,则结果为真;ALL 则要求子查询中的所有行都使结果为真时,结果才为真。2EXISTS 为谓词,EXISTS 和 NOT EXISTS 是用来检查在子查询中是否有结果返回,也就是存在元组或不存在元组。例:查询选修有课程的学生的学号,姓名,性别及生日。SELE * FROM 学生 WHERE EXIST (SELE * FROM 选课 WHERE 学生.

7、学号= 选课.学号)注:本例中内层查询引用了外层查询的表,只有这样使用谓 EXISTS或 NOT EXISTS 才有意义。例:查询学分最高的课程信息。SELE * FROM 课程 WHERE 学分=ALL (SELE 学分 FROM 课程)SELE * FROM 课程 WHERE NOT 学分80习题:P102 例 5-25练习:P91 7、12、14 、15、16七、集合并运算 P103可将两个 SELECT 语句的查询结果通过并运算合并成一个查询结果。为进行并运算,要求两个查询结果具有相同的字段个数,并且对应字段的值要出自同一值域,也就是具有相同的数据类型和取值范围。例:查询学号为 01

8、与 02 的选课信息。SELE * FROM 选课 WHERE 学号=”01”;UNION;SELE * FROM 选课 WHERE 学号=”02”习题:P103 例 5-26八、VFP 中有关 SQL SELECT 的几个特殊选项 P1031 显示部分结果格式:TOP n PERCENT功能:只需要满足条件的前几个记录。说明:(1) n 是 1 至 32767 之间的整数,说明显示前几个记录。(2) 当使用 PERCENT 时,说明显示结果中前百分之几的记录。例:显示学分最低的前 2 项课程记录。SELE * TOP 2 FROM 课程 ORDER BY 学分 DESC &通常与ORDER

9、BY 子句连用习题:P145/46 P152/122 将结果存放在数组中 格式:INTO ARRAY ArrayName3 将结果存放在临时文件中格式:INTO CURSOR CursorName说明:临时表中一个只读的 DBF 文件,当查询结束后该临时文件是当前文件,可像一般的 DBF 文件一样使用,当关闭文件时该文件将自动删除。4 将结果存放在永久表中,通过该子句可实现表的复制。格式:INTO TABLE|DBF TableName5 将结果存放到文本文件中格式:TO FILE FileName ADDITIVE6 将结果直接输出到打印机格式:TO PRINTER PROMPT习题:P10

10、3 例 5-27SELECT 语句的工作流程:首先根据联接条件把几个表联接成一个临时表,然后根据WHERE 中的查询条件进行过滤,过滤出来的结果根据分组条件分成一组一组,然后分别对这些组进行计算,最后又得出一个临时表,然后又根据 HAVING 中的条件对这个临时表再一次过滤,最后按指定的次序输出到指定的地方。它中间生成的临时表完全由系统自己创建、使用、删除,完全不受用户控制。上机练习:1、完成课件中所有实例,操作数据库:学生成绩管理2、完成教程上所有实例,操作数据库:图书管理说明:以上练习要求既会直接在命令窗口通过 SQL 语句完成,也要尝试使用查询设计器来实现。如果在上机课上不能完成,可以在

11、计算机课上完成,或者其他业余时间完成。请一定在下周上课前完成所有练习!第三节 数据操作功能 P92一、 插入 命令格式 1:INSERT INTO 数据表名 (字段名 1,字段名 2,.) VALUES (表达式 1,表达式 2.)功能:在指定表尾添加一条新记录,其值为 VALUES 后面的表达式的值。命令格式 2:INSERT INTO 数据表名 FROM ARRAY ArrayName|FROM MEMVAR功能:向指定表中添加一条新记录,其值来自于数组或对应的同名内存变量。例:向课程表中插入记录:(”05”,”数理逻辑”,”6”,”03”)INSERT INTO 课程 VALUES(”0

12、5”,”数理逻辑 ”,6,”03”)说明:1 如未使用字段名指明,则 VALUES 中的表达式数目必须与表中的字段数相同,而且相应的数据类型必须一致。2 如果表中设定了主索引,则插入记录时只能用该 SQL INSERT 命令而不能使用 APPEND 或 INSERT 命令。3 注意插入数据的数据类型必须与表设计时的类型一致。习题:P92 例 5-7,5-8练习:P89 例 9 P91 1,3,4二、 更新 命令格式:UPDATE TableName SET 字段名 1=表达式 1,字段名2=表达式 2. WHERE Condition类似于 REPLACE 命令。一次只能在单一的表中更新记录,

13、通常嵌入在循环结构内,用另一个表的数据来修改本表。例:将课程关系中课程号为“01”的课程的学分加 1 分。UPDATE 课程 SET 学分= 学分+1 WHERE 课程号=”01”习题:P93 例 5-10练习:P88 例 7,例 15 P91 2操作:第三套 二(2)/三三、删除 P93命令格式:DELETE FROM TableName WHERE Condition说明:类似于 VFP 的 DELE . FOR . 命令。1 若无 WHERE 子句会删除表中的全部记录。2 此命令为逻辑删除。用 PACK 命令进行物理删除。例:删除课程关系中课程号为“05”的元组。DELE FROM 课程

14、 WHERE 课程号=”05”习题:P93 例 5-9练习:P89 例 10,例 11,例 12,例 13,例 14第二节 数据定义功能 P87一、表的定义 P87命令格式:CREATE TABLE 数据表名(字段名 1 字段类型( 字段宽度, 小数位数) NULL|NOT NULLCHECK ERRORDEFAULTPRIMARY KEY|UNIQUE字段名 2. .)说明:例:用 SQL CREATE 命令建立学生 2 数据表CREATE TABLE 学生 2(学号 C(2) NOT NULL PRIMARY KEY ,姓名 C(8),;性别 C(2) CHECK 性别 =”男” OR 性

15、别=”女” ERROR “性别只能是男或女” DEFAULT “男”,生日 D)习题:P88 例 5-1,例 5-2练习:P87 例 4,例 5,例 6,例 8例:第十套 一(3) (4)二(1)crea table golden(国家代码 C(3),金牌数 int,银牌数 int,铜牌数 int) &答案有错insert into golden values(011,9,7,11)*可使用查询设计器来完成SELECT 国家.国家名称, count( 获奖牌情况.名次) AS 金牌数;FROM 国家 INNER JOIN 获奖牌情况 ;ON 国家.国家代码 = 获奖牌情况.国家代码;WHERE 获奖牌情况 .名次 = 1;GROUP BY 国家.国家名称;ORDER BY 2 DESC, 国家.国家名称 DESC;INTO TABLE temp.dbf二、表的删除 P91命令格式:DROP TABLE TableName功能:直接从磁盘上删除指定的表,执行该命令前必须先打开相应的数据库。例:删除上例中的表“学生 2”DROP TABLE 学生 2习题:P91 例 5-6三、 表结构的修改 一本通 P79命令格式 1:ALTER

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号