VFP第10部分-SQL语言的应用.ppt
《VFP第10部分-SQL语言的应用.ppt》由会员分享,可在线阅读,更多相关《VFP第10部分-SQL语言的应用.ppt(74页珍藏版)》请在三一办公上搜索。
1、Visual Foxpro 6.0,程序设计基础,重庆工商大学计算机学院计算机基础教研室,作业中的问题,、thisform.text1.value=n、n=thisform.text1.value、thisform.text2.caption=s,课堂即时作业,做完即交,编程:输出斐波拉契数列(Fibonacci数列)前10项,第十讲 SQL语言的应用,SQL语言简介SQL语言的功能数据定义数据查询数据操纵数据控制实例分析,内容提要,SQL语言简介,SQL(Structured Query Language)语言是一种十分重要的标准数据库语言。SQL语言至1986年成为国际标准语言以后,各数据
2、库软件开发商纷纷推出SQL的关系数据库管理系统产品或接口软件,许多应用广泛的关系数据库管理系统也都增加了DBMS功能,支持标准SQL语言,从而使未来的数据库环境连接为一个统一的整体。,它不是数据库管理系统,也不是应用软件开发语言,它只能用于对数据库中数据的操作。SQL语言有两种使用方式,即可以作为自含式语言,在数据库管理系统中独立使用,又可以作为嵌入式语言,嵌入许多高级语言(如C、FORTRAN、COBOL)中使用。,SQL语言的特点1SQL语言是一种一体化的语言 SQL语言集数据定义、数据操纵、数据查询和数据控制的功能于一体,语言风格统一,可以独立完成数据库的全部操作,。,2SQL语言是一种
3、高度非过程化的语言。它没有必要一步步告诉计算机“如何”去做,而只需要描述清楚用户要“做什么”,SQL语言就可以将要求交给系统,自动完成全部工作。它的大多数语句都是独立执行、与上下文无关。,3语言简洁,易学易用,SQL的命令动词SQL功能 命令动词数据查询 SELECT数据定义 CREATE、DROP、ALTER数据操纵 INSERT、UPDATE、DELETE数据控制 GRANT、REVOKE,SQL语言的功能,1、数据定义命令 CREATE TABLE-SQL(建立表结构)ALTER TABLE-SQL(修改表结构)DROP TABLE-SQL(删除表),主教材P100例6.1、例6.2、例
4、6.3、例6.4、例6.5,实验教材P20实验9任务1任务2,2、数据操纵(修改)命令 INSERT-SQL(插入数据)DELETE-SQL(删除数据)UPDATE-SQL(更新数据),主教材P112例6.21、例6.22、例6.23、例6.24,实验教材P20实验9任务3,3、SQL数据查询 SQL的核心为查询。SQL查询命令也称为SELECT命令,其基本形式为SELECTFROMWHERE查询块组成,多个查询块可以嵌套执行。,1)基本的SELECT语句 格式:SELECT,FROM 数据库名称!基本查询基于单个表,由SELECT 和FROM短语构成无条件查询,或由SELECT、FROM和W
5、HILE短语构成条件查询。,【例】查询dab中所有学生。SELECT*FROM dab,【例】查询dab中“姓名”、“性别”字段。SELECT 姓名,性别 FROM dab,结果将仅显示如图中的第2列、第3列数据。,其中“*”是通配符,表示显示所有字段,该命令等价于:SELECT 学号,姓名,性别,出生日期,专业班级 FROM dab,2)唯一性查询 唯一性查询指要显示的结果,若有重复出现时,只显示重复行中的一行。这可通过在基本SELECT语句中加入DISTINCT关键字的方法实现。若不加此关键字,则显示全部行。,【例】查询dab中“专业班级”字段,要求数据重复时,仅显示相重复的一条记录。SE
6、LECT 专业班级 FROM dab DISTINCT,结果如图所示。,3)带条件的查询 在SELECT语句中,可以通过WHERE子句为查询规定条件WHERE子句的格式:WHERE AND 功能:查询指定表或视图中满足查询条件的记录。其中可以是关系表达式,也可以是逻辑表达式,下表列出了组成常用的运算符。,LIKE子句中可以用通配符:下划线“_”,表示任何一个字符;百分号符“%”,表示一串字符。,【例】查询dab中的男生学号、姓名、性别。SELECT 学号,姓名,性别 FROM dab WHERE 性别=男,结果如下图所示。,【例】查询dab中计算机1班的男生姓名。SELECT 姓名 FROM
7、dab WHERE 性别=男 AND 专业班级=计算机1班【例】查询xkcjb中成绩在7090分范围内的学生。SELECT*FROM xkcjb WHERE 成绩 BETWEEN 70 AND 90,结果是:张广田,结果如图所示。等价于:SELECT*FROM xkcjb WHERE 成绩=70 AND 成绩=90,【例】查询dab中所有姓“张”的学生。SELECT*FROM dab WHERE 姓名 LIKE 张%,结果如下图所示。,通配符百分号“%”表示0个或多个字符,“_”下划线表示任意一个字符,【例】查询xkcjb中选修课程号为“001”的学生。SELECT*FROM xkcjb WH
8、ERE 课程号 IN(001)或:SELECT*FROM xkcjb WHERE 课程号=001,【例】查询学分大于5的课程信息。select*from 课程 where 学分5,4)排序查询 通过ORDER BY子句可以实现查询结果的排序输出,允许按一列或多列排序。格式:ORDER BY ASC|DESC,ASC|DESC 其中,ASC表示升序排序(缺省方式),DESC表示降序排序。,【例】按课程的学分升序查询出全部课程信息。SELECT*FROM kcb ORDER BY 学分,结果按学分从低到高显示。,【例】按学号升序,相同学号再按成绩降序查询出全部学生成绩情况。SELECT*FROM
9、xkcjb ORDER BY 学号,成绩 DESC,结果如下图所示。,5)带计算函数的查询 在SELECT语句中,使用SQL语言提供的一些查询计算函数,可以增强查询功能。基本的查询计算函数的格式及功能如下表所示。,【例】求所有课程的总学分。SELECT SUM(学分)FROM kcb【例】求学生总人数。SELECT COUNT(*)FROM dab,结果是:Sum_学分31,结果是:Cnt12,【例】求学生平均年龄。SELECT AVG(YEAR(DATE()-YEAR(出生日期)FROM dab【例】求选修课程的最高成绩和最低成绩。SELECT MAX(成绩),MIN(成绩)FROM xkc
10、jb,结果是:Avg_exp_122.33,结果是:Max_成绩 Min_成绩100.0 38.0,6)用别名输出列标题(字段名)将列名用含义更明确的别名输出,便于理解,可以通过AS关键字实现。格式:AS 功能:将查询输出的列名以列别名输出。其中,列别名若为常字串,则无须加定界符,【例】求选修课程的最高成绩和最低成绩。SELECT MAX(成绩)AS 最高成绩,MIN(成绩)AS 最低成绩;FROM xkcjb,结果是:最高成绩 最低成绩100.0 38.0,7)分组查询 通过GROUP BY子句可以实现分组查询。格式:GROUP BY,HAVING 其中,可以是表的字段名、字段函数名或标识列
11、的数值型表达式;HAVING 子句进一步限定分组的条件。,在select语句中,where子句是对记录的限定,而Having短语是对分组的限定,where、group by及Having可以同时出现在一个select语句中。三者在select中出现的顺序为:WhereGroup by-Having。,记录1记录2记录3记录4记录5记录6,记录2记录4记录5记录6,记录2记录5记录4记录6,记录2记录5,where,限定,Group by,分组,Having,限定,【例】求各门课程的平均成绩。SELECT 课程号,AVG(成绩);FROM xkcjb GROUP BY 课程号,【例】求平均成绩在
12、80分以上的各课程的课程号与平均成绩。select 课程号,avg(成绩)from xkcjb;group by 课程号 having avg(成绩)80,结果如图所示。,【例】求至少选修了2门课程的学生的信息。SELECT dab.学号,姓名,课程号 FROM dab,xkcjb WHERE dab.学号=xkcjb.学号;GROUP BY dab.学号 HAVING COUNT(*)=2,结果如图所示。,8)使用空值进行查询【例】假设在xkcjb中2004级的学生还没有考试,则成绩为空。试找出尚未考试的选课信息。update xkcjb set 成绩=null where left(学号,
13、4)=2004 update xkcjb set 重考成绩=null where left(学号,4)=2004,注:首先在表设计器中设置“成绩”和“重考成绩”字段允许为空值null,sele*from xkcjb where 成绩 is null,注意:查询空值时要使用IS NULL,而用=NULL是无效的,因为空值不是一个确定的值,不能用“=”这样的运算符进行比较。不为空值应用 IS NOT NULL,不能用!=NULL。,sele*from xkcjb where 成绩 is null and 重考成绩 is null,sele*from xkcjb where 成绩 is not nu
14、ll,)多表联接查询 SELECT语句可以实现对Visual FoxPro 6.0的4种联接类型的查询:内部联接(Inner Join):只有2个表的字段都满足联接条件时,才将此记录选入查询结果中。左联接(Left Outer Join):联接条件左边表中的记录都包含在查询结果中,而右边表中的记录只有满足联接条件时,才选入查询结果中。右联接(Right Outer Join):与左联接正好相反。完全联接(Full Join):无论2个表中的记录是否满足联接条件,都将全部记录选入查询结果中。,通常有3种方法实现多表联接查询,一是在查询命令中显示地指定联接类型;二是在查询命令中使用WHERE子句;
15、三是使用嵌套查询。(1)指定联接类型实现多表间的联接查询 格式:SELECT FROM INNER|LEFT|RIGHT|FULL JOIN ON WHERE 功能:通过指定的联接类型建立多表间的联接 注意:若SELECT后要查询的列名(字段名)在2个表中都有,则必须采用“表名.字段名”,若字段名唯一,则可仅写出字段名。,【例】显示dab和xkcjb中成绩不及格的学生姓名、学号、课程号及成绩。SELECT dab.学号,姓名,课程号,成绩 FROM xkcjb;INNER JOIN dab ON dab.学号=xkcjb.学号;WHERE 成绩60,结果如图所示。,(2)用WHERE子句实现多
16、表间的联接查询:用WHERE子句实现多表间的联接查询时,无须直接指明联接类型(隐含是内部联接),只需把联接条件直接写入WHERE子句即可。【例】显示dab和xkcjb中成绩不及格的学生姓名、学号、课程号及成绩。SELECT dab.学号,姓名,课程号,成绩 FROM xkcjb,dab;WHERE dab.学号=xkcjb.学号 AND 成绩60,结果如图所示。,(3)使用嵌套查询实现多表间的联接查询:在SQL语言中,由SELECT、FROM、WHERE语句组成一个查询块。嵌套查询就是将第2个查询块放在第1个查询块的WHERE条件中,形成外层(第1个)查询包含内层(第2个)查询的嵌套查询。外层
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VFP 10 部分 SQL 语言 应用

链接地址:https://www.31ppt.com/p-6522875.html