二级VF讲义.doc_第1页
二级VF讲义.doc_第2页
二级VF讲义.doc_第3页
二级VF讲义.doc_第4页
二级VF讲义.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1节: 基本认识一: vf基础1: vf软件的安装与卸载:开始设置控制面板添加/删除程序 2: vf界面认识(1) 标题栏(2) 工具栏 :显示/隐藏/移动(3) 工作区域(4) 状态栏 (5) 命令窗口(6) 任务栏 二: 文件的安全性1: 建立文件夹 2: 文件默认打开/保存的位置 (1) 新建word文件设置默认保存的位置:工具选项文件位置文档修改找自己的文件夹(2) (重点) vf中默认目录的设置(文件默认打开/保存的位置):vf中,工具选项文件位置默认目录修改找自己的文件夹3: word文档的加密:工具选项安全性4: 文件的隐藏(1) 文件隐藏属性的设置方法:文件上单右属性选中隐藏(2) 具有隐藏属性的文件的显示/隐藏的设置方法:在windows中,工具文件夹选项查看三: 表的基本操作 1: 几个专业的术语 (1) 表表格 (2) 表结构有几列,列标题,数据类型,宽度(统称 表的框架)(3) 字段列 (4) 字段名列标题 (5) 记录行 2: 建立表: create 表名 3: 表的扩展名: dbf4: 字段的数据类型,代表字母,以及部分字段的默认宽度 数据类型代表字母默认宽度数据类型代表字母默认宽度字符型C数值型N浮动型F双精度型B8整型i4逻辑型L1日期型D8日期时间型T8备注型M4通用型G4货币型Y85: 修改(1) 修改记录:让表处于浏览状态,然后直接修改。(2) 修改结构(增加/删除字段,修改字段名,修改数据类型,修改宽度):显示表设计器 或 modify structure 。注意:若表设计器中出现”只读”,解决的方法是:首先在命令窗口中输入close all ;然后重新以独占的方式打开表。6: 打开表:use 表名 7: 浏览表:显示浏览 或 browse 8: 追加记录 :显示追加方式 或 append blank9: 插入记录(1) 插入记录只能为当前记录相邻的位置进行插入,因此,在插入记录之前,必须确定当前记录的位置。(2) 命令:insert before blank10: 删除(1) 删除表:drop table 表名(2) 删除字段(列) :在表设计器中进行(3) 删除记录(A) 逻辑删除:给要删除的记录做删除标记,被逻辑删除的记录在表中依然存在。(B) 恢复记录:去掉逻辑删除的标记。(C) 物理删除:彻底删除表中的记录,被物理删除的记录是不能恢复。l pack 彻底删除表中带有逻辑删除标记的记录。l zap 彻底删除表中的所有记录,包括带有删除标记的记录,也包括不带删除标记的记录,最终只有表结构。11: 若表中出现备注型或通用型字段,它们的内容存放在:文件的主名和表的主名相同,扩展名为fpt的文件中。第2节: Sql语句(重点 60%-90%)一: 简单查询1: 格式:select 查询结果的字段名 from 提供数据的表 where 查询条件 order by 排序字段 2: select * from jbqk (1) * 表示所有的字段。(2) from 后面提供数据的表,可以处于打开状态,也可以处于关闭状态。3: select 姓名,性别,出生年月,婚否,基本工资 from jbqk &查询结果的各字段名之间用逗号分隔。4: 表达式 as 新字段名 ,此短语只能使用在select和from之间,查询结果的字段名中,其他短语中不得使用。这个as也可以用空格来代替。(1) select 姓名,性别,基本工资+奖金 as 钱 from jbqk (2) select 姓名,性别,year(date()-year(出生年月) as 年龄 ,婚否,基本工资 from jbqk 5: select distinct 职称 from jbqk (1) distinct 去掉查询结果中的重复记录。(2) 若使用了distinct短语,在没有排序的情况下,查询结果的记录默认按字段的升序排列。6: where 条件:对原表中的记录进行筛选,让符合该条件的记录参与操作(1) select * from jbqk where 基本工资=500 &数值型常量直接写。(2) select * from jbqk where 婚否=.F. &逻辑真 .t. 或 .y. ,逻辑假 .f. 或 .n. ,此时,不区分字母的大小写。(3) select * from jbqk where 性别=女 &字符型常量在书写时,两端必须加定界符 或 或 ,仅仅表示字符开始与结束的位置。(4) select * from jbqk where 出生年月=1970-01-01 &日期型常量的书写格式:yyyy-mm-dd (5) 查找未婚美女的姓名:select 姓名 from jbqk where 婚否=.f. and 性别=女 (6) 查找老爷子的姓名和年龄:select 姓名,year(date()-year(出生年月) as 年龄 from jbqk where 性别=男 and 年龄=60 &该条语句为错误,错误的原因:where条件中出现的字段名,原表必须存在。正确的为: where 性别=男 and year(date()-year(出生年月) =60 (7) 查询教授和副教授的职工信息:select * from jbqk where 职称=教授 or 职称=副教授 7: 排序(order by ) : 对查询的结果进行排序,因此,排序字段名一定在查询结果中存在。(1) select 姓名,性别,基本工资+奖金 as 钱 from jbqk order by 钱 desc (2) asc 表示升序,desc表示为降序,默认为升序。(3) select 姓名,性别,基本工资+奖金 as 钱 from jbqk order by 性别,钱 desc &先按性别的升序排列,同一性别,再按钱的降序排列。(4) order by后面排序字段的书写格式:不得使用函数,也不得使用表达式,可以直接写字段名,也可以写查询结果字段的顺序号,若为多个字段,各个字段之间用逗号分隔。(5) 排序字段的优先顺序:按从左往右的顺序依次排列。(6) select 姓名,性别,year(date()-year(出生年月) as 年龄 from jbqk order by 3 desc top 3 &top n 表示前n条记录,该短语必须和order by同时使用,不得单独使用。(7) select 姓名,性别,year(date()-year(出生年月) as 年龄 from jbqk order by 3 desc top 30 percent &percent 表示百分比,percent必须和order by以及top n短语同时使用,不得单独使用。二: 查询结果记录的保存 1: 永久性表: into table 表名 或 into dbf 表名 2: 文本文件: to file 文本文件名 3: 临时表 : into cursor 表名 4: 数组: into array 数组名 5: 打印机: to printer 三: 统计分组查询(难点,重点 )考试的概率为100%1: 统计查询(1) 统计函数(5个):sum、avg、max、min、count (计数) ,均为列向统计函数。(2) select sum(基本工资) as 工资合计,avg(基本工资) as 平均工资,max(基本工资) as 最高工资, min(基本工资) as 最低工资 from jbqk where 性别=女(3) count(*) ,作为计算机而言,永远统计的是:表中满足where条件的记录个数,统计出来的结果到底代表什么含义,应该由人根据表中所存放的记录来确定(这是人的思维)。(4) select count(*) as 女职工人数 from jbqk where 性别=女 (5) select count(*) as 选课门数 from score1 where 学号=993503438(6) select count(*) as 学生人数 from score1 where 课程号=0001(7) select count(*) as 外币种类数 from currency_sl where 姓名=林诗因2: 分组查询 (1) select 部门,avg(基本工资) as 平均工资 from jbqk where 婚否=.t. group by 部门 (2) 何时考虑分组:在查询的过程中,必须使用统计函数,且查询的结果可能有多个值,此时必须分组,否则,均不分组。 (3) 若使用了分组,在没有排序的情况下,查询结果的记录默认按分组字段的升序排列。(4) 统计各部门男女职工的人数:select 部门,性别,count(*) as 人数 from jbqk group by 1,2 (5) group by后面分组字段的书写格式:不得使用函数,也不得使用表达式,可以直接使用字段名(可以为原表中的字段名,也可以为查询结果中的字段名),也可以写查询结果字段的顺序号。若为多个字段,各个字段之间用逗号分隔。(6) 查询结果字段的顺序号,只能使用在order by和group by短语,其他短语中不得使用。(7) 统计各部门男职工人数:select 部门,count(*) as 人数 from jbqk where 性别=男 group by 1 (8) having条件 (A) select 部门,avg(基本工资) as 平均工资 from jbqk where 婚否=.t. group by 部门 having 平均工资=400 (B) where条件和having条件的区别 where条件having条件名称查询条件分组条件操作对象提供数据的原表分组后的查询结果作用让满足条件的记录参与操作去掉不满足条件的分组结果统计函数不得使用统计函数只能也必须使用统计函数(C) where条件和having条件,可以同时使用,也可以单独使用。(D) having条件必须和group by短语同时使用,不得单独使用。(E) 至少有5位职工的部门名:select 部门 from jbqk group by 部门 having count(*)=5 (F) 例题:P147-: select 出版单位,avg(价格) as 均价 from books group by 1 having 均价=25 order by 2 top 1 into table newtable3: 截至目前sql语句的书写格式:select 查询结果的字段名 from 提供数据的表 where 查询条件 group by 分组字段 having 分组条件 order by 排序字段 into table 表名 四: 简单连接 (考试概率100%,分值=20分,绝对的重点)1: select student.学号,姓名,avg(成绩) as 平均成绩 from student,score1 where student.学号=score1.学号 and 性别=男 group by 1 order by 3 desc into table results1 2: 简单连接做题的书写格式:select 查询结果的字段名 from 提供数据的表 where 这些表之间的联系 and 查询条件 group by 分组字段 having 分组条件 order by 排序字段 into table 表名3: 注意事项(1) from后面提供数据的表,为本题所涉及到的全部表,在书写时各表之间用逗号分隔,不区分表的先后顺序。例题:选修了“基础会计”这门课的学生姓名:select 姓名 from student,score1,course where student.学号=score1.学号 and score1.课程号=course.课程号 and 课程名=基础会计 order by 姓名 into table results2select 姓名 from student join score1 join course on score1.课程号=course.课程号on student.学号=score1.学号 where 课程名=基础会计 order by 姓名 into table results2 (2) 若某个字段在两个以上(含)的表中出现, 书写格式为: 表的别名.字段名 , 若某个字段只在一个表中出现,则字段名前面 表的别名可以写,也可以不写。例题:P145-: select a.订单号,客户名,签订日期,商品名,单价,数量,单价*数量 as 金额 from order a,orderitem b,goods c where a.订单号=b.订单号 and b.商品号=c.商品号 order by a.订单号 desc,商品名 desc into table tableoneselect a.订单号,客户名,签订日期,商品名,单价,数量,单价*数量 as 金额 from goods c join orderitem b join order a on a.订单号=b.订单号 on b.商品号=c.商品号 order by a.订单号 desc,商品名 desc into table tableone (3) 若from后面表的个数=2,在where中必须写表之间的联系。4: 例题:(1) P145-: select 姓名,sum(基准价*持有数量) as 人民币价值 from rate_exchange a,currency_sl b where a.外币代码=b.外币代码 group by 1 order by 2 desc into table results (2) select 供应商号,工程号,数量 from 供应 a,零件 b where a.零件号=b.零件号 and 颜色=红 order by 3 desc into table supply_temp(3) select 外币名称,持有数量 from currency_sl a,rate_exchange b where a.外币代码=b.外币代码 and 姓名=林诗因 order by 2 into table rate_tempselect 外币名称,持有数量 from currency_sl a join rate_exchange b on a.外币代码=b.外币代码 where 姓名=林诗因 order by 2 into table rate_temp(4) select a.职工号,姓名,sum(金额) as 总金额 from employee a,orders b where a.职工号=b.职工号 group by 1 having 总金额15000 order by 3select a.职工号,姓名,sum(金额) as 总金额 from employee a join orders b on a.职工号=b.职工号 group by 1 having 总金额15000 order by 3(5) select 姓名 from 学生 a,选课 b where a.学号=b.学号 and 成绩=70 group by a.学号 having count(*)=3 order by 姓名 into table resultsselect 姓名 from 学生 a join 选课 b on a.学号=b.学号 where 成绩=70 group by a.学号 having count(*)=3 order by 姓名 into table results(6) select a.学号,姓名,avg(成绩) as 平均分 ,count(*) as 选课门数 from 学生 a,选课 b where a.学号=b.学号 group by 1 having 选课门数=5 order by 3 desc into table stu_tempselect a.学号,姓名,avg(成绩) as 平均分 ,count(*) as 选课门数 from 学生 a inner join 选课 b on a.学号=b.学号 group by 1 having 选课门数=5 order by 3 desc into table stu_temp五: 超姐连接1: 两表超级连接的书写格式:select 查询结果的字段名 from 表1 inner / left / right / full join 表2 on 表之间的联系 where 查询条件 group by 分组字段 having 分组条件 order by 排序字段 2: 超级连接中的内部连接和简单连接在查询结果上是等价。3: 考试的重点:(笔试)写等价的sql语句。4: 多表超级连接的书写格式(以3表为例):select 查询结果的字段名 from 表1 join 表2 join 表3 on 后两个表之间的联系 on 前两个表之间的联系 where 查询条件 (1) from后面的表和on后面表之间的联系 在书写顺序上是相反。(2) 表2为中间纽带表,也就是说,from后面每相邻的两个表之间,必须存在联系。5: 无论超级连接中的哪一种连接,查询结果中都包含两个表中相同关键字段所对应的记录。(若查询一个表中存在,而另一个表中不存在的记录,则不能使用超级连接来做)六: 空值查询1: .null. 表示字段的数据类型和值均为不确定。2: 查询空值: 字段名 is null 3: 查询非空:字段名 is not null 七: 嵌套查询1: 没有选修课程的学生信息:select * from 学生 where 学号 not in (select 学号 from 选课) order by 年龄 into table a1 2: 嵌套查询的做题格式:select 查询结果的字段名 from 表1 where 表1.关键字段名 not in (select 表2.关键字段名 from 表2 ) 3: 能用嵌套查询做题的条件:查询的结果必须来自于一个表,而查询的条件却涉及到了其他表。4: 注意(1) 查询结果的字段名必须来自于一个表(表1)。(2) 子查询的查询结果只能有一个字段名,该字段名必须和in前面的字段名在内容上必须一致,但它们却属于两个表。(3) 子查询也是一条完整的sql语句,只不过该条sql语句的查询结果作为主查询的一个查询条件。(4) 在嵌套查询中,子查询的内部不能再次使用嵌套查询。5: 例题(1) select 课程名称 from 课程 where 课程号 not in(select 课程号 from 选课 ) to file b1 &查询没有被学生选修的课程名称,将结果存入文本文件b1中。select 课程名称 from 课程 where not exists (select * from 选课 where 课程.课程号=选课.课程号 ) to file b1(2) 第25题:select * from employee where 职工号 not in(select 职工号 from orders) order by 仓库号 desc(3) 第27题:select * from customer where 客户号 in(select 客户号 from order_list) order by 客户号 into table resultsselect * from customer a where exists(select * from order_list b where a.客户号=b.客户号) order by 客户号 into table results(4) 第19题:select 供应商号,工程号,数量 from 供应 where 零件号 in(select 零件号 from 零件 where 颜色=红) order by 3 desc into table supply_tempselect 供应商号,工程号,数量 from 供应 where exists(select * from 零件 where 零件.零件号=供应.零件号 and 颜色=红) order by 3 desc into table supply_temp 6: 一般规律(1) 若查询结果的字段名来自于多个表(=2),此时,可以用简单连接来做,不能使用嵌套查询。(2) 若查询的结果来自于一个表,此时,均可以使用嵌套查询。(A) 在嵌套查询中,若使用in格式,则也可以用简单连接来做。(B) 在嵌套查询中,若使用not in格式,则不能用简单连接来做。八: 谓词查询1: exists : 子查询的查询结果有记录存在,就显示主查询中对应的记录。2: not exists 子查询的查询结果没有记录存在,才显示主查询中对应的记录。3: 谓词查询做题的条件:同嵌套查询。能用嵌套查询做的题,均可以使用谓词查询来做。4: 第25题:select * from employee where not exists (select * from orders where orders.职工号=employee.职工号) order by 仓库号 descselect * from employee where 职工号 not in(select 职工号 from orders) order by 仓库号 desc 5: 考试的重点:写等价的sql语句(嵌套和谓词)。笔试6: 谓词和嵌套在书写格式上的区别(1) 嵌套:in的前面有字段名;谓词:exists的前面没有字段名。(2) 嵌套:子查询的查询结果只能有一个字段名;谓词查询:子查询的查询结果可以有任意多个字段名,只要这些字段名来自于子查询中的表即可,一般情况下写*。(3) 嵌套:子查询中不写表之间的联系;谓词:子查询中必须写表之间的联系。26题:select * from order_list where 总金额(select avg(总金额) as 平均金额 from order_list) order by 客户号 into table results九: 查询1: 扩展名:qpr2: 建立:create query 文件名3: 打开(修改)查询设计器: modify query 文件名4: 执行查询:do 文件名.qpr (必须写扩展名,否则,计算机将执行的是同名的程序文件) 例如 do aa.qpr5: 可以利用查询得到相应sql语句的题目:单表 或 超级连接做的题。(嵌套的sql语句不能使用查询)6: (笔试考点)查询设计器中各个选项卡和sql语句中各个短语之间的对应关系。7: 建立查询的数据源:数据库表、自由表、视图 。十: 视图1: 功能:查询和更新2: 视图是寄生于数据库的一种虚拟的表。 3: 视图在物理上是不存放数据。(通过视图可以查询/操作表中的数据)4: 建立的视图存放在数据库中,在默认目录下的文件夹中不存在。5: 建立视图的数据源:数据库表、自由表、视图。6: 建立视图:(必须保证有数据库处于当前打开状态)create view 视图名 as 一条完整的sql-select语句 7: 打开/修改视图设计器:m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论