1 / 46

4.3 SELECT-SQL 语句

4.3 SELECT-SQL 语句. 4.3.1 概述 SQL ( Structured Query Language , 结 构化查询语句 )是美国国家标准局 ANSI 确认的 关系数据库语言标准。 Visual FoxPro 支持 SQL ,它使用 Rushmore 技术来优化性能,通常 一个 SQL 命令可以代替多个 Visual Foxpro 命令 来完成一项操作。在 VFP 中,尽可能采用 SQL 命 令来代替一般的 VFP 命令。. VFP 中支持的 SQL 命令. CREATE TABLE-SQL CREATE CURSOR-SQL, 创建一个临时表

roscoe
Download Presentation

4.3 SELECT-SQL 语句

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 4.3 SELECT-SQL语句 4.3.1 概述 SQL(Structured Query Language,结 构化查询语句)是美国国家标准局ANSI确认的 关系数据库语言标准。Visual FoxPro支持 SQL,它使用Rushmore技术来优化性能,通常 一个SQL命令可以代替多个Visual Foxpro命令 来完成一项操作。在VFP中,尽可能采用SQL命 令来代替一般的VFP命令。

  2. VFP中支持的SQL命令 • CREATE TABLE-SQL • CREATE CURSOR-SQL,创建一个临时表 • ALTER TABLE-SQL • INSERT-SQL • UPDATE-SQL • DELETE-SQL • SELECT-SQL

  3. 复习

  4. 1.使用CREATE TABLE-SQL命令创建表结构 例如:创建学生表 CREATE TABLEJS(GH C(5),XM C(8),XB C(2),; XDH C(2),GL N(2,0),CSRQ D,JBGZ N(7,2),JL M)

  5. ALTER TABLEJSADD COLUMN Fax c(20)NULL 2.使用ALTER TABLE-SQL命令修改表的结构(添加字段)

  6. 2.使用ALTER TABLE-SQL命令修改表的结构(字段重命名) 例:ALTER TABLE js RENAME COLUNM jl TO jsjl

  7. 2.使用ALTER TABLE-SQL命令修改表的结构(删除字段) ALTER TABLE js DROP COLUMN jbgz

  8. 3.使用INSERT-SQL命令追加记录 INSERT INTOxscj(xh, cj) VALUES (“050412”,85.5)

  9. 4.UPDATE-SQL语句 UPDATE cj SET cj*1.05 WHERE cj>80

  10. 5.DELETE-SQL语句 DELETE FROM xscj WHERE cj<60

  11. 4.3.2 SELECT-SQL 命令

  12. 1.命令格式 SELECT 表名1.字段名1[AS 标题名1],表名1.字段名2[AS 标题名2],… FROM 数据库名!表名1[,数据库名!表名2][,数据库名!表名3] [inner|LEFT [OUTER]|RIGHT[OUTER]|FULL[OUTER] JOIN DatabaseName] Talbe Name [ON JoinCondition] [TO FILE 文本文件名|INTOTABLE|INTOCURSOR表文件名] [WHERE 选定条件] [GROUP BY 分组字段名] (字段名或数值表达式(备注、通用字段除外)) [HAVING 分组中的满足条件] [ORDER BY 排序字段名1[ASC|DESC][,排序字段名2[ASC|DESC]…]]

  13. 4.3.3 SELECT-SQL应用举例(以下表均在数据库example中), 1.基于单个表的查询示例 例1 基于教师表(表js.dbf),查询所有教师的 工号和姓名。 Select 表js.gh,表js.xm from example!表js

  14. 1.基于单个表的查询示例 例2 基于学生表xs,查询学号以“03”开头的 学生情况,并保存到临时表TEMP中。 Select * from example!表xs where like("03*",xh) into cursor temp

  15. 1.基于单个表的查询示例 例3 查询成绩表cj中课程代号为“03”的学 生的学号和成绩,且要求查询结果按成绩降 序排列。 select 表cj.xh,表cj.cj from example!表cj; where kcdh='03' order by 2 desc

  16. 1.基于单个表的查询示例 例4 显示成绩表中各门成绩的课程代号 和最高分(GROUP BY子句),且按最高 分,从低到高排序(ORDER BY)。 select表cj.kcdh,max(表cj.cj) as最高分; from example!表cj group by 1 order by 2 desc

  17. 1.基于单个表的查询示例 例5 显示成绩表中各门成绩的课程代号 和最高分,且把最高分大于85的,从低到 高排序(HAVING子句),结果显示前10 条记录(TOP nExpr[PERCENT])。 select top 10 表cj.kcdh,max(表cj.cj) as ;最高分 from example!表cj group by ; kcdh having 最高分>85 order by最高分

  18. 1.基于单个表的查询示例 例6 查询各门考试成绩均在60分以上学生成 绩情况,要求输出学号和总成绩,且只输出总 成绩前30%的同学。 select top 30.00 percent表cj.xh as 学号,; sum(表cj.cj) as 总成绩 from example!表cj; group by xh HAVING表cj.cj>=60order by xh

  19. 2.基于两个表的查询示例 例7 基于成绩表cj和学生表xs,查询有 不及格课程成绩的学生的学号和姓名,且 有多门课程不及格的学生只显示一次。 select distinct表xs.xm,表cj.xhfrom;example!表xs inner join example!表cjon; 表xs.xh=表cj.xhwhere表cj.cj<60

  20. 2.子查询 例8 基于教师表js和任课表rk,查询已 担任课程的教师的姓名和系代号。 select 表js.xm,表js.xdh from example!; 表js where表js.gh in (select 表rk.gh; from example!表rk)

  21. 2.基于多个表的查询 例9 完善下列SELECT-SQL命令,其功能是基于XS 表和CJ表查询有两门或两门以上课程不及格的学生情况。 要求输出为XH、XM、选课门数和不及格门数,查询结 果按不及格门数排序,且将查询结果输出到打印机打印。 select表xs.xh,表xs.xm,count(*) as 选课门数,; sum(iif(表cj.cj<60,1,0)) as不及格门数; from example!表xs inner join表cj on; 表xs.xh=表cj.xh group by 1 order by 4; to printer

  22. 3.组合查询示例 例10 显示成绩表中及格学生人数和不及格学生人数,输出字段为分数类型和人数。 select "及格 "AS 分数类型,count(*) as 人数 from sjk!cj where cj.cj>=60; union; select "不及格" AS 分数类型,count(*) as 人数 from sjk!cj where cj.cj<60

  23. 4.4 视图的创建和使用 • 视图是数据库的一个组成部分,是基于表且可更新的数据集合。视图分两种类型: • 本地视图:使用VFP SQL语法选择储存在本地计算机上表或视图中的数据。 • 远程视图:使用远程SQL语法从远程ODBC数据源表中选择数据(ODBC是一种用于数据库服务器的标准协议,通过ODBC可以访问多种数据库中的数据) • 视图兼有表和查询的特点: • 与查询类似之处:可以用来从一个或多个相关联 的表中提取数据; • 与表相类似的地方是:可以更新其数据,并将更新 结果反映到源数据表(基表)中。

  24. 2010年VFP全国笔试题中出现的相关SQL语句的试题2010年VFP全国笔试题中出现的相关SQL语句的试题

  25. 4.4.1 创建本地视图 1.使用视图设计器

  26. 4.4.2 用视图更新源表数据 在视图中更新数据与在表中更新数据类似。此外,使 用视图还可以对其基表进行更新。

  27. 1.使表可更新 利用视图设计器中的“更新条件”页面可以设置将对视图数据的修改“回送”到数据源中的方式。 =DESETPROP(“视图1”,“VIEW”,“SendUpdates”,.t.)

  28. 2.设置关键字段 Visual FoxPro用关键字段来唯一标识那些已在视图中修改过的 源表的更新记录。设置“关键字段”可用来检验更新冲突。

  29. 2.设置关键字段 (1)指定可更新字段 如果要设置给定表中部分或全部字段允许更新,必 须在该表的所有字段中设置一个关键字段。 (2)控制如何检查更新冲突 在“更新条件”页面的“SQL WHERE子句包括”框中 可设置将哪些字段添加到UPDATE-SQL语句的WHERE 子句中,这样,在将视图修改传送到基表时就可以检测 服务器上的更新冲突。

  30. 2.设置关键字段 “冲突”与否是由视图中的旧值和原始表的当前值之间的比较结 果决定的(由系统进行比较)。如果两个值相等,则认为原始值未 做修改,不存在冲突;如果它们不相等,则存在冲突,数据源返回 一条错误信息。 当源表中的关键字段被修改时 当远程表中可更新字段被修改时 当在本地改变的任一字段在源表中已被改变时 当远程表上记录的时间戳在首次检索之后被改变时

  31. 例:创建一个本地视图(viewjsjbgz),要求结果中包含工号、姓名、和该教师的基本工资等字段,并按基本工资排序,在视图中将jbgz表中的工号为b0002的职工jbgz字段更新为2000元。例:创建一个本地视图(viewjsjbgz),要求结果中包含工号、姓名、和该教师的基本工资等字段,并按基本工资排序,在视图中将jbgz表中的工号为b0002的职工jbgz字段更新为2000元。 第一步:在sjk库中新建一个本地视图

  32. 将这里改为2000

  33. 4.4.3 创建参数化视图 例4.14基于成绩表cj,创建一个参数化视图,根据提供 的课程代号下载该课程的成绩。

  34. ’01’

  35. 4.4.4 视图的使用 1.视图的打开(命令方式) OPEN DATABASE SJK USE viewjsjbgz browse

  36. 4.4.4 视图的使用 2.视图的关闭 Select viewjsjbgz use

More Related