VisualFoxPro中SQL语言的应用.ppt
《VisualFoxPro中SQL语言的应用.ppt》由会员分享,可在线阅读,更多相关《VisualFoxPro中SQL语言的应用.ppt(66页珍藏版)》请在三一办公上搜索。
1、数据库应用经管类,第五章 Visual FoxPro中SQL语言的应用,2,江西财经大学信息管理学院数据库应用课程组,第5章 VFP中SQL语言的应用,SQL语言概述SQL语言的特点和分类基本表与视图SQL数据查询语句SELECT 单表查询SELECT 多表查询视图创建与使用(自学)SQL数据操纵语句插入INSERT;更新UPDATE;删除DELETESQL数据定义语句(选讲)创建表 Create;更改表 Alter;删除表Drop,3,江西财经大学信息管理学院数据库应用课程组,5.1 SQL语言概述(1),问题:不同关系数据库使用不同查询语言带来的问题。,解决方法:标准化-SQL,4,江西财
2、经大学信息管理学院数据库应用课程组,5.1 SQL语言概述(2),SQL全称是结构化查询语言(Structured Query Language)SQL的历史和标准SQL89、SQL99SQL的优点所有用户使用的统一语言所有关系数据库的公共语言非过程化语言,5,江西财经大学信息管理学院数据库应用课程组,过程化语言示例,煮饭买米淘米开始煮等待饭好,6,江西财经大学信息管理学院数据库应用课程组,非过程化语言示例,饭店吃饭,点菜,7,江西财经大学信息管理学院数据库应用课程组,5.1 SQL语言概述(3),SQL语言结构简洁,功能强大,简单易学。SQL语言是关系数据库管理系统的标准语言。SQL分成3类
3、:,以记录为对象,以基本表为对象,8,江西财经大学信息管理学院数据库应用课程组,5.1 SQL语言概述(4),基本表和视图基本表(Base Table)是独立存在的表。在Visual FoxPro中,一个基本表对应一个.DBF文件,一个表可以带若干索引。视图(view):从一个或几个基本表中根据用户需要而导出的一个虚表1:视图是虚表,它在存储时只存储视图的定义,而没有存储对应的数据2:视图只在刚刚打开的一瞬间,通过定义从基表中搜集数据,并展现给用户,9,江西财经大学信息管理学院数据库应用课程组,什么是视图,基本表,视图定义Create view as select,执行显示,10,江西财经大学
4、信息管理学院数据库应用课程组,5.1 SQL语言概述(5),基本表和视图实际的应用中,由于安全控制的原因,在数据库中,一般用户通常不能看到所有的基本表,基本表通常只有数据库管理员DBA可以看到。用户看到的是与他们自己业务相关的视图(View)。数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。视图在概念上与基本表等同,用户可以在视图上再定义视图。,11,江西财经大学信息管理学院数据库应用课程组,5.2 数据查询,SELECT语句单表查询多表查询创建和使用视图,12,江西财经大学信息管理学院数据库应用课程组,SELECT语句,一般格式:SEL
5、ECT ALL|DISTINCT,FROM,WHERE GROUP BY HAVING ORDER BY ASC|DESC 简单格式:select 字段列表 from 数据来源列表where 条件,13,江西财经大学信息管理学院数据库应用课程组,5.2.1 单表查询(1),1.单表基本查询单表查询的含义:from子句只有一个数据表。(1)查询所有列例5-1:返回“学生表”中的所有行和所有列。open database“d:我的数据库项目数据库教学管理数据库.dbc“select*;from 教学管理数据库!学生表例5-2:查询成绩表中的所有记录。open database“d:我的数据库项目数
6、据库教学管理数据库.dbc“select*;from 成绩表,14,江西财经大学信息管理学院数据库应用课程组,5.2.1 单表查询(2),(2)查询指定的列(投影操作)例5-3:检索“学生表”中的学号、姓名、性别和籍贯字段。open database“d:我的数据库项目数据库教学管理数据库.dbc“select 学号,姓名,性别,籍贯;from 学生表(3)消除取值重复的行例5-6:显示学生表中的学生来自全国那些地方。open database“d:我的数据库项目数据库教学管理数据库.dbc“select distinct 籍贯;from 学生表,15,江西财经大学信息管理学院数据库应用课程组
7、,5.2.1 单表查询(3),(4)查询经过计算的值,更改查询结果中的列标题名例5-4:对“学生表”的“入学成绩”除以600,求相对成绩,其显示的字段名为“相对成绩”。open database“d:我的数据库项目数据库教学管理数据库.dbc“select 学号,姓名,入学成绩/600 as 相对成绩;from 学生表例5-5:求所有学生在2004年的年纪。open database“d:我的数据库项目数据库教学管理数据库.dbc“select 学号,姓名,2004-year(出生日期)as 年龄;from 学生表,16,江西财经大学信息管理学院数据库应用课程组,5.2.1 单表查询(4),2
8、.选择表中的若干元组选择一个表中的若干元组(或记录)操作,是对该表实行选择操作。其方法是使用SELECT语句的WHERE子句中的条件。,17,江西财经大学信息管理学院数据库应用课程组,5.2.1 单表查询(5),(1)查询满足条件的元组常用的的查询条件如右表。,18,江西财经大学信息管理学院数据库应用课程组,5.2.1 单表查询(6),1)大小比较例5-8:查找入学成绩大于等于600的同学的学号、姓名和入学成绩。select 学号,姓名,入学成绩;from 学生表;where 入学成绩=600例5-9:查找学生表中的少数民族学生。select 学号,姓名;from 学生表;where 少数民族
9、否=.T.,19,江西财经大学信息管理学院数据库应用课程组,5.2.1 单表查询(7),2)多重条件查询 例5-11:查找入学成绩在500分以上的少数民族学生的学号、姓名和少数民族否。select 学号,姓名,少数民族否;from 学生表;where 入学成绩=500 and 少数民族否=.T.,20,江西财经大学信息管理学院数据库应用课程组,5.2.1 单表查询(8),3)确定范围(数值、日期、时间等可比较的数据类型)例5-13:求入学成绩在500到600间的学生学号、姓名和入学成绩。select 学号,姓名,入学成绩;from 学生表;where 入学成绩 between 500 and
10、600(where 入学成绩=500 and入学成绩=600),21,江西财经大学信息管理学院数据库应用课程组,5.2.1 单表查询(9),4)确定集合 例5-14:求籍贯为“江西南昌”或“吉林”的学生学号、姓名和籍贯。select 学号,姓名,性别,籍贯;from 学生表;where 籍贯 in(“江西南昌”,“吉林”)例5-15:求籍贯不为“江西南昌”和“吉林”的学生学号、姓名和籍贯。select 学号,姓名,性别,籍贯;from 学生表;where 籍贯 not in(“江西南昌”,“吉林”)IN后面的集合可以是一个记录集(详见子查询),22,江西财经大学信息管理学院数据库应用课程组,5
11、.2.1 单表查询(10),5)字符匹配 例5-16:查找以姓“李”开头的学生学号和姓名。select 学号,姓名;from 学生表;where 姓名 like“李%”例5-18:查找第二个字符为“阳”字的学生学号和姓名。select 学号,姓名;from 学生表;where 姓名 like“_阳%”,23,江西财经大学信息管理学院数据库应用课程组,5.2.1 单表查询(11),3.对查询结果排序用户可以用ORDER BY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,缺省值为升序。例5-23:查询所有学生的入学成绩,查询结果按入学成绩的降序排列。select 学号,
12、姓名,入学成绩;from 学生表;Order by 入学成绩 desc,24,江西财经大学信息管理学院数据库应用课程组,5.2.1 单表查询(12),4.对查询结果使用聚集函数,25,江西财经大学信息管理学院数据库应用课程组,5.2.1 单表查询(13),4.使用聚集函数例5-26:求学生表中入学成绩在600分以上的人数。select count(*);from 学生表;where 入学成绩=600例5-27:求学生表中入学成绩的平均成绩。select avg(入学成绩);from 学生表;,26,江西财经大学信息管理学院数据库应用课程组,5.2.1 单表查询(14),5.对查询结果分组例5-
13、28:按课程类别号,求各种类别课程的门数。Select 课程类别号,count(*);from 课程表;group by 课程类别号注意:使用GROUP BY子句要注意,SELECT的输出字段列表中,凡没有出现在聚集函数中的字段,必须出现在GROUP BY子句中。例如“年级”字段出现在字段列表中,但它没有出现在聚集函数中,故字段“年级”必须出现在GROUP BY子句中。,27,江西财经大学信息管理学院数据库应用课程组,5.2.1 单表查询(15),5.对查询结果分组,只显示满足给定条件的结果select 字段列表from 单表where 条件group by 分组条件having 子句havi
14、ng 子句中出现聚集函数。例5-29:求各个年级的班数,要求只输出3个班以上的年级。select 年级,count(*);from 班级表;group by 年级;having count(*)=3,28,江西财经大学信息管理学院数据库应用课程组,5.2.2 多表查询(1),问题:已经学习一元关系操作(投影、选择),如何实现二元关系操作(自然连接)?,29,江西财经大学信息管理学院数据库应用课程组,5.2.2 多表查询(2),1.多表查询的工作原理所谓多表查询是指from子句包括多个数据表,即数据表列表。知识补允:笛卡尔乘积A=a1,a2,a3,an B=b1,b2,bmAB=(a1,b1),
15、(a1,b2),(a1,bm),(a2,b1),(a2,b2),(a2,bm),(an,b1),(an,b2),(an,bm)例A:select*;from stu2,ach2注意:这里没有where子句,30,江西财经大学信息管理学院数据库应用课程组,基本表:stu2,8个字段6条记录,31,江西财经大学信息管理学院数据库应用课程组,基本表:ach2,3个字段7条记录,32,江西财经大学信息管理学院数据库应用课程组,例子结果,33,江西财经大学信息管理学院数据库应用课程组,5.2.2 多表查询(3),结果分析:语句“select*from stu2,ach2”的结果非常庞大有11个字段,42
16、条记录。“表stu2”的8个字段+“表ach2”的3个字段=11个字段“表stu2”(共6条记录)“表ach2”(共7条记录)=42条记录。如果SELECT从两表检索结果,且不带WHERE子句时,首先从前“学生表”中取一条记录,然后与“成绩表”中的每条记录进行逐一匹配后送入输出结果中。再在学生表中取下一条记录,重复上面过程。结果为在字段数(横向上)是两表的字段数相加;在记录数(纵向上)是两表的记录数相乘。结果存在记录组合爆炸的问题,这会产生很多无用的垃圾数据。,34,江西财经大学信息管理学院数据库应用课程组,5.2.2 多表查询(4),自然连接操作复习前提条件这二个表必须存在一个公共的属性(称
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VisualFoxPro SQL 语言 应用
链接地址:https://www.31ppt.com/p-6523107.html