版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Visual
FoxPro程序设计教程讲师:徐红波E-mail:在软件开发中经常用到数据的查询,如学生成绩管理、人事档案、图书检索等软件,查询的准确性、速度直接影响软件的质量、效率、应用及维护。VFP开发工具用三种途径解决查询问题:用查询设计器建立查询;用视图设计器建立视图;用SQL语句查询。第4章查询与视图4.1概念4.1.1
查询使用查询设计器,从数据库表或自由表中获取有用数据,经过对查询条件、查询要求的设置,形成一个后缀为qpr的文件,通过do命令来执行。用视图设计器从数据库表中获取有用数据,与查询一样经过查询条件、查询要求的设置形成视图。视图是以视图名的形式存在数据库中。视图中数据的更新可以使源表相应数据更新。视图的执行要在数据库中执行。4.1.2
视图SQL语言是关系数据库的标准语言。它是结构化的查询语言。它集数据定义语言、数据操纵语言、数据控制语言的功能为一体。4.1.3SQL查询4.2
SQL语句4.2.1
SELECT查询语句1、基本语句格式:SELECT<行列限制表达式>[INTO
DBF|TABLE<新表名>]FROM<表名列表>[WHERE<条件>]功能:从表名列表的表中查询符合条件的,按<行列限制表达式>的形式显示。若选[INTO
DBF|TABLE<新表名>]子句,查询结果存入新表。说明:<行列限制表达式>格式:[ALL|DISTINCT][TOP<数值表达式>[PERCENT][别名.][列名[AS栏目名]][,[别名.][列名AS[栏目名]……][ALL|DISTINCT]子句:ALL输出结果有重复记录,是子句默认值。
DISTINCT输出结果无重复记录。[TOP<数值表达式>[PERCENT]]子句:TOP<数值表达式>是符合条件的内容中取前<数值表达式>个记录。PERCENT是取前面分之<数值表达式>个记录。[别名.][列名[AS栏目名]][,[别名.][列名AS[栏目名]……]子句:列名可以是字段、含字段的表达式。指定输出结果中的
字段,此子句也可用*代替此时显示表中所有字段。例4.1
SELECT基本语句应用opendatabase
学生select
*
from
学生select
*
from
学生into
table
学生yselect姓名,入学成绩from
学生where
入学成绩>=500select
distinct
性别from学生select学生.学号,学生.姓名,学生成绩.数学from
学生,学生成绩where
学生.性别=‘女’and学生成绩.数学>=60and学生.学号=学生成绩.学号select
top2*
from
学生orderby
学号closedatabase
all2、SELECT中常用的系统函数在实际应用中经常有统计、求平均值、汇总等操作。SQL提供一些常用的系统函数。函数说明AVG(<表达式>)求<表达式>的平均值COUNT(*)统计记录个数MIN(<表达式>)求<表达式>的最小值MAX(<表达式>)求<表达式>的最大值SUM(<表达式>)求<表达式>的和3、SELECT分组子句格式:[GROUP
BY<表达式1>[,<表达式2>[,……]]][HAVING<筛选条件>]功能:对查询结果进行分组。[HAVING<筛选条件>]为指定分组必须满足的条件例4.2
分组查询应用open
database
学生select
avg(入学成绩)from
学生select
count(*)
from
学生select
sum(入学成绩)from
学生group
by
性别having
性别=‘女’4、排序子句格式:[ORDER
BY<关键字表达式>[ASC|DESC][,<关键字表达式>[ASC|DESC]……]]功能:查询结果按关键字排序,ASC升序为默认值,DESC为降序例4.3
查询排序应用open
database
学生select学号,姓名,入学成绩from学生orderby
入学成绩descselect学生.学号,学生.姓名,学生成绩.英语from学生,学生成绩where
学生.学号=学生成绩.学号
order
by
学生成绩.英语select
avg(入学成绩)as“入学成绩平均分”from
学生group
by
性别order
by入学成绩descclose
database
all5、嵌套查询嵌套查询就是在SELECT语句中套用SELECT语句,被套在内的SELECT子句通常称为子查询(1)IN等谓词及比较运算符结合使用例4.4
IN与NOT
IN在嵌套查询中的应用
open
database
学生select
*
from
学生where学号in
(select
学号from
学生成绩where
英语>=90)select
*
from
学生where学号not
in
(select学号from学生成绩where
英语<90)close
database
all例4.5
比较运算符在嵌套查询中的应用open
database
学生select
*
from
学生a1
where入学成绩=(select
入学成绩from学生a2wherea1.学号=a2.学号and入学成绩>=500)close
database
all(2)使用量词和谓词的嵌套查询格式:<表达式><比较表达式>[ANY|ALL|SOME](子查询)[NOT]
EXIST(子查询)说明:ANY、ALL、SOME为量词,ANY与SOME是同义词,在查询中,只要子查询有一行能使结果为.T.,则结果就为.T.。ALL要求子查询中所有行结果为.T.时,结果才能为.T.。EXIST或NOTEXIST是检查在子查询中是否有结果返回。EXIST为有结果返回为真否则为假。NOTEXIST刚好与EXIST相反。例4.6
查询数学成绩高于90分的学生的学号,姓名open
database
学生select
学号,姓名from学生where
exist
(select*
from学生成绩where
学号=学生.学号and
数学>=90)close
database
all例4.7查找比所有入学成绩小于500分学生的年龄都小的学生open
database
学生select
*
from
学生where出生>all
(select
出生from
学生where
入学成绩<500)close
database
all6、几个特殊运算符(1)BETWEEN
AND运算符格式:BETWEEN<表达式1>AND<表达式2>说明:表示在一个区间范围内例4.8查询入学成绩480-600分学生情况,与不在500-600之间的学生open
database
学生select
*
from
学生where
入学成绩between
490
and
600select
*
from
学生where
入学成绩not
between
490
and
600close
database
all(2)LIKE运算符LIKE后含有%或_通配符的字符型表达式。%表示0个或多个字符,_表示一个字符。例4.9查询姓王的所有学生情况,查询姓名前两个字为王丽的学生情况open
database
学生select
*from
学生where
姓名like“王%”select
*
from
学生where
姓名like“王丽_”close
database
all7、连接查询格式:<表名1>
[LEFT|RIGHT|FULL]
JOIN<表名2>ON<连接条件>(1)LEFTJOIN为左连接,在满足连接条件的记录出现在结果中基础上,第一个表不满足条件的记录也出现在结果中。例4.11
用左连接查找学生表与学生成绩表open
database
学生select*from
学生left
join
学生成绩on学生.学号=学生成绩.学号close
database
all(2)RIGHTJOIN为右连接,在满足连接条件的记录出现在结果中基础上,第二个表不满足条件的记录也出现在结果中例4.12用右连接查找学生表与学生成绩表open
database
学生select
*from
学生right
join学生成绩on学生.学号=学生成绩.学号close
database
all(3)FULL
JOIN为全连接。即满足连接条件的记录出现在结果上,两表不满足连接条件的记录也出现在结果上4.13用全连接查找学生表与学生成绩表open
database
学生select*from
学生full
join
学生成绩on学生.学号=学生成绩.学号close
database
all8、UNION子句用此子句可以将多个表的查询结果,合并成一个结果,要求查询结果具有相同字段与个数,且对应字段类型要兼容。例如:select
*
from
学生where
性别=‘女’union
all
select
*
from学生where
性别=‘男’9、查询结果的存放用INTO
[DBF|TABLE]<表名>可将查询结果存放表中用INTO
ARRAY<数组名>将查询结果存入数组用INTO
CURSOR<临时表名>将查询结果存入临时表用TO
FILE<文件名>[ADDITIVE]将结果存入文本文件,用ADDITIVE将结果追加到由<文件名>指定的文本文件尾部。否则将覆盖原有文件例4.15
关于结果存放的应用open
database
学生select
*from
学生into
table
新学生select
*from
学生into
array
aselect
*
from
学生into
cursor
临时学生
select
*from
学生to
file
学生文本
close
database
all4.2.2
操作功能(插入、更新、删除)1、插入格式1:INSERT
INTO<表名>[字段1[,字段2,…]]
VALUES(表达式1[,
表达式2…])格式2:INSERT
INTO<表名>FROM
ARRAY
数组名|
MEMVAR功能:在表尾添加一个指定字段的记录说明:(1)格式1中字段名1,字段名2是用于指定添加记录的字段名,如省略,说明所有字段,表达式1,表达式2是添加字段1,字段2的具体值。(2)格式2ARRAY数组名是从指定的数组中添加记录的值,MEMVAR是从与字段同名的内存变量中添加记录的值例4.16
插入应用open
database
学生use
学生成绩insert
into
学生成绩values
(“105010120”,90,80,72)go
1scatter
memvarinsert
into
学生成绩from
memvargo
2scatter
to
ainsert
into
学生成绩from
array
a2、更新格式:UPDATE<表名>SET
字段名1=<表达式1>[,字段名2=<表达式2>……][WHERE<条件>]功能:更新满足条件的记录的值,若省略WHERE,更新全部记录的值例4.17
更新应用use
学生成绩update
学生成绩set
数学=数学+10
where
数学<80update学生成绩set
英语=英语+10use3、删除格式:DELETE
FROM<表名>[WHERE<条件>]功能:删除符合条件的记录,若省略WHERE将删除全部记录例4.18
删除应用use
学生成绩delete
from学生成绩where
英语>100use4.3查询建立查询1、用向导建立查询2、用查询设计器建立查询执行查询1、用界面执行查询2、用命令执行查询DO<查询文件名.qpr>4.3.3
查询设计器的局
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训学校教师考勤制度
- 工程现场人员考勤制度
- 企业运动俱乐部考勤制度
- 员工请事假周末考勤制度
- 如何给老板提议考勤制度
- 北辰区机关单位考勤制度
- 企业食堂员工考勤制度
- 京东物流正式员工考勤制度
- 店长如何做员工考勤制度
- 交通局考勤制度管理规定
- 常态化消防安全巡查制度
- 2024版2026春新教科版科学三年级下册教学课件:第一单元1.根据太阳辨别方向含2个微课视频
- 水利水电工程单元工程施工质量检验表与验收表(SLT631.8-2025)
- 儿科病历标准书写及PDCA循环管理
- 2026年湖南铁道职业技术学院单招职业技能测试题库附答案
- GB/T 17587.2-2025滚珠丝杠副第2部分:公称直径、公称导程、螺母尺寸和安装螺栓公制系列
- AKI免疫炎症反应与CRRT免疫调节策略
- 医疗技术临床应用质量控制管理制度(2025年等级医院评审制度)
- 初一地理上册期末试卷附参考答案
- HSK6标准教程课件
- 2025年福建省中考数学试卷(含答案)
评论
0/150
提交评论