4.3 select-sql 语句

22
4.3 SELECT-SQL 语语 4.3.1 语语 SQL Structured Query Language 语语语语语语 语语语语语语语语 ANSI 语语语 语语语语语语语语语Visual FoxPro 语语 SQL 语语语 Rushmore 语语语语语语语 语语 SQL 语语语语语语语语 Visual Foxpro 语语 语语语 语语语语 语 一。 VFP 语 语语语语语 SQL 语 语语语语语 语语VFP 语语

Upload: skyler-barnett

Post on 02-Jan-2016

71 views

Category:

Documents


8 download

DESCRIPTION

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, 创建一个临时表 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 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 命令。

Page 2: 4.3 SELECT-SQL 语句

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

Page 3: 4.3 SELECT-SQL 语句

复习

Page 4: 4.3 SELECT-SQL 语句

1. 使用 CREATE TABLE-SQL 命令创建表结构

例如:创建学生表CREATE TABLE JS(GH C(5),XM C(8),XB C(2),;XDH C(2),GL N(2,0),CSRQ D,JBGZ N(7,2),JL M)

Page 5: 4.3 SELECT-SQL 语句

2. 使用 ALTER TABLE-SQL 命令修改表的结构(添加字段)

ALTER TABLE JS ADD COLUMN Fax c(20) NULL

Page 6: 4.3 SELECT-SQL 语句

例: ALTER TABLE js RENAME COLUNM jl TO jsjl

2. 使用 ALTER TABLE-SQL 命令修改表的结构(字段重命名)

Page 7: 4.3 SELECT-SQL 语句

ALTER TABLE js DROP COLUMN jbgz

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

Page 8: 4.3 SELECT-SQL 语句

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

Page 9: 4.3 SELECT-SQL 语句

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

Page 10: 4.3 SELECT-SQL 语句

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

VFP 中:CLOSE TABLES ALLUSE xscjDELETE FOR cj<60

Page 11: 4.3 SELECT-SQL 语句

4.3.2 SELECT-SQL 命令

Page 12: 4.3 SELECT-SQL 语句

1. 命令格式SELECT 表名 1. 字段名 1[AS 标题名 1], 表名 1. 字段名 2[AS 标题名 2] ,

…FROM 数据库名!表名 1[ ,数据库名!表名 2][ ,数据库名!表名 3][inner|LEFT [OUTER]|RIGHT[OUTER]|FULL[OUTER] JOIN DatabaseN

ame] Talbe Name [ON JoinCondition] [TO FILE 文本文件名 |INTO TABLE|INTO CURSOR 表文件名 ][WHERE 选定条件 ][GROUP BY 分组字段名 ] (字段名或数值表达式(备注、通用字段除

外))[HAVING 分组中的满足条件 ][ORDER BY 排序字段名 1[ASC|DESC][, 排序字段名 2[ASC|DESC]…]]

Page 13: 4.3 SELECT-SQL 语句

4.3.3 SELECT-SQL 应用举例 (以下表均在数据库 example 中),

1. 基于单个表的查询示例例 1 基于教师表(表 js.dbf) ,查询所有教师的工号和姓名。

Select 表 js.gh, 表 js.xm from example! 表js

Page 14: 4.3 SELECT-SQL 语句

1. 基于单个表的查询示例例 2 基于学生表 xs ,查询学号以“ 03” 开头的学生情况,并保存到临时表 TEMP 中。

Select * from example! 表 xs where like("03*",xh) into cursor temp

Page 15: 4.3 SELECT-SQL 语句

1. 基于单个表的查询示例例 3 查询成绩表 cj 中课程代号为“ 03”的学

生的学号和成绩,且要求查询结果按成绩降序排列。select 表 cj.xh, 表 cj.cj from example! 表 cj;

where kcdh='03' order by 2 desc

Page 16: 4.3 SELECT-SQL 语句

1. 基于单个表的查询示例例 4 显示成绩表中各门成绩的课程代号和最高分( GROUP BY 子句),且按最高分,从低到高排序( ORDER BY )。

select 表 cj.kcdh,max( 表 cj.cj) as 最高分;from example! 表 cj group by 1 order by 2 desc

Page 17: 4.3 SELECT-SQL 语句

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 最高分

Page 18: 4.3 SELECT-SQL 语句

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>=60 order by xh

select top 30.00 percent 表 cj.xh as 学号 ,;sum( 表 cj.cj) as 总成绩 from example! 表 cj where 表 cj.cj>=60;group by xh order by xh into cursor temp1

Page 19: 4.3 SELECT-SQL 语句

例 7 基于成绩表 cj 和学生表 xs ,查询有不及格课程成绩的学生的学号和姓名,且有多门课程不及格的学生只显示一次。

2. 基于两个表的查询示例

select distinct 表 xs.xm, 表 cj.xh from ; example! 表 xs inner join example! 表 cj on ; 表 xs.xh= 表 cj.xh where 表 cj.cj<60

Page 20: 4.3 SELECT-SQL 语句

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

Page 21: 4.3 SELECT-SQL 语句

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

Page 22: 4.3 SELECT-SQL 语句

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