8.1 sql 查询功能 8.2 sql 操作功能

21
1 茂茂茂茂茂茂茂茂 8.1 SQL 茂茂茂茂 8.2 SQL 茂茂茂茂 SQL 是是是 Structured Query Language 是是是是是是是是 是是是是 是是是 是是是是是 是是是是 是是是是是是 是是是是是是是 (),一、、、 是是是是是是是是是是是是 SQL 是是是是 是是是是 SQL 是是是 是是是是是是 是是是是是是是 -8 SQL 是是 是是

Upload: carnig

Post on 30-Jan-2016

135 views

Category:

Documents


0 download

DESCRIPTION

授课 -8 SQL 与图书查询. SQL 是英文 Structured Query Language (结构化查询语言)的缩写,它是一种综合的、通用的、功能强大的、简单易学的关系数据库语言。 本课将首先介绍 SQL 语言概述,然后介绍 SQL 的查询、操作功能及使用操作方法。. 8.1 SQL 查询功能 8.2 SQL 操作功能. 8.1 SQL 查询功能. 【 学习目标 】 用 SQL 查询语言进行查询 【 关键概念 】 SQL 语言的特点 SELECT 命令的使用. 【 任务(上机 8 ) 】 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 8.1   SQL 查询功能 8.2   SQL 操作功能

1茂名职业技术学院

8.1 SQL查询功能

8.2 SQL操作功能

SQL 是英文 Structured Query Language (结构化查询语言)的缩写,它是一种综合的、通用的、功能强大的、简单易学的关系数据库语言。 本课将首先介绍 SQL 语言概述,然后介绍 SQL 的查询、操作功能及使用操作方法。

授课 -8 SQL 与图书查询

Page 2: 8.1   SQL 查询功能 8.2   SQL 操作功能

2茂名职业技术学院

8.1 SQL8.1 SQL 查询功能查询功能

【学习目标】 用 SQL 查询语言进行查询

【关键概念】 SQL 语言的特点 SELECT 命令的使用

Page 3: 8.1   SQL 查询功能 8.2   SQL 操作功能

3茂名职业技术学院

【任务(上机 8)】 将 C:\2006vfp\DATA3 文件夹中的全部文件复制到自己的文件夹 VFTS### 中,打开自己的文件夹,双击“我的主程序”,进入VFP 工作界面,打开“项目 TS” ,打开命令窗口,完成下列操作。

1. 单表无条件查询: 用命令执行一个“查询”,查看 DZB 表中的数据。2. 单表条件查询: 编写 SQL 查询命令文件,查看表 TSB.DBF 中铁道出版社出版的单价在 20 ~ 30 元的图书。查询结果按 “书号”升序排序,结果去向为表,表名为“ TS

B-TD” 。见 T03A 所示。查询命令文件保存为“ SQL2.PRG” ,添加到“项目 TS” 。

T03A

Page 4: 8.1   SQL 查询功能 8.2   SQL 操作功能

4茂名职业技术学院

3 、多表内连接查询: 用查询设计器编写多表内连接查询,查看图书库各表中“证号”为“ 001” 的读者的姓名及其所借“地质”、“铁道”出版的图书信息。查询结果按“借书日期”升序排序,结果去向为浏览。见 T03B 所示。将查询设计器中 SQL 命令复制到命令文件 “ SQL3.PRG” ,保存,再添加到“项目 TS” 。

4 、嵌套查询: 编写 SQL 查询命令文件,通过表 JYB.DBF 和 TSB.DBF ,查阅“实用数据结构基础”一书的借阅者的证号。查询结果去向为浏览。查询命令文件保存为“ SQL4.PRG” ,添加到“项目 TS” 。

T03B

Page 5: 8.1   SQL 查询功能 8.2   SQL 操作功能

5茂名职业技术学院

5 、图书查询实例 1 : 编写 SQL 查询命令文件,通过表 TSB.DBF ,显示“编码”为“ T54560” 一书的书名和库存数量。查询命令文件保存为“ SQL5.PRG” ,添加到“项目 TS” 。6 、图书查询实例 2 : 编写 SQL 查询命令文件,通过分别查询表 JYB.DBF 和 DZB.DBF ,显示“证号”为“ 001” 的读者姓名及其所借书的数量。查询命令文件保存为“ SQL6.PRG” ,添加到“项目 TS” 。7 、图书查询实例 3 : 编写 SQL 查询命令文件,通过分别查询表 JYB.DBF 和 DZB.DBF ,显示“证号”为“ 001” 的读者姓名及其所借书未还的最长天数。见 T03C 所示。查询命令文件保存为“ SQL7.PRG” ,添加到“项目 TS” 。

T03C

Page 6: 8.1   SQL 查询功能 8.2   SQL 操作功能

6茂名职业技术学院

【 【 相关知识相关知识 .SQL.SQL 语言概述语言概述】】主要特点:1. SQL 是一种一体化语言它包括数据定义语言( DDL )、数据操纵语言( DML )、数据控制语言( DCL )三大部分。用它可以完成数据库活动的全部工作。数据定义: CREATE 、 DROP 、 ALTER

数据操作: SELECT 、 INSERT 、 UPDATA 、 DELETE

数据控制: GRANT , REVOKE ( 注 :VFP 不支持这两句 )

Page 7: 8.1   SQL 查询功能 8.2   SQL 操作功能

7茂名职业技术学院

2. SQL 是一种非过程化语言 它不需要告诉系统如何去存储处理数据,只要告诉系统“做什么”就可以了,过程、细节由系统去解决。3. SQL 语言非常简洁 虽然它功能很强,但它的命令却只有几条,语法也很简单。命令意义与英语词义很接近,简单易学。4. SQL 语言可以用于多种形式

使用方法:(1) 在命令窗口中使用, 当作一条独立的 VFP 命令在命令窗口中使用,(2) 在 VFP 6.0 程序中使用(3) 在查询设计器中使用

Page 8: 8.1   SQL 查询功能 8.2   SQL 操作功能

8茂名职业技术学院

【任务分析解决】 1. 单表无条件查询: 用命令执行一个“查询”,查看 DZB 表中的数据。 解决: 用 SQL 命令: SELE * FROM DZB 对应的 VFP 命令: USE DZB BROW2. 单表条件查询: 编写 SQL 查询命令文件,查看表 TSB.DBF 中铁道出版社出版的单价在 20 ~ 30 元的图书。查询结果按“书号”升序排序,结果去向为表,表名为“ TSB-TD” 。见样文 T03A 所示。查询命令文件保存为“ SQL2.PRG” ,添加到“项目 TS” 。

解决:用前面学习过的查询设计器依题意制作这个查询,再点击其“ SQL” 钮,将其命令复制到程序文件“ SQL2.PRG” ,其程序清单如下:

SELECT * FROM TSB WHERE 出版社 =' 铁道 ' AND 单价 BETWEEN 20 AND 30 ;

ORDER BY 书号 ; INTO TABL TSB-TD && 用 SQL 查询形成表 TSB-TD SELE * FROM TSB-TD && 用查询命令浏览表 TSB-TD 如何使用 SELECT 命令?请继续。

Page 9: 8.1   SQL 查询功能 8.2   SQL 操作功能

9茂名职业技术学院

【【相关知识相关知识 .SQL.SQL 查询功能查询功能】】

1. SELECT-SQL 语句的基本结构: SELECT [ 范围限制 ] < 目标表达式 > [AS 标题 ]; FROM < 表名 > [联接方式 JOIN 表名 ] [ON 联接条件 ]; WHERE <筛选条件 >; ORDER BY < 排序字段 > [ASC/DESC]; GROUP BY < 分组依据 > ; HAVING < 分组筛选条件 >; INTO/TO < 查询去向 > ; [NOCONSOLE] [PLAIN] [NOWAIT] [UNIO]

Page 10: 8.1   SQL 查询功能 8.2   SQL 操作功能

10茂名职业技术学院

2. 各子句及参数说明( 1 ) [ 范围 ] < 目标表达式 > [AS 标题 ]

指定范围,指定字段或字段表达式,指定输出的列(字段)标题。( 2 ) FROM 子句指定数据来自哪个表,可以是多个表。表间用 INNER JOIN (或… )子命令连接。若不是当前库,要加“库名!”。( 3 ) WHERE 子句指定筛选过滤的条件,是一个或几个逻辑表达式。逻辑比较符还有“ LIKE” , “ IN” ,“ BETWEEN…AND” ,见 P1

57 。( 4 ) ORDER BY 子句指定查询结果的排序依据。降序在字段后加 DESC 。

Page 11: 8.1   SQL 查询功能 8.2   SQL 操作功能

11茂名职业技术学院

( 5 ) GROUP BY 子句 指定查询结果的分组依据。可用它分组汇总。 分组汇总可以用 COUNT() , SUM() , AVG() , MAX() ,

MIN()等统计函数。( 6 ) HAVING 子句 指定符合条件的分组,是一个或几个逻辑表达式。它

要跟在 ORDER BY 后面,否则与 WHERE 同。( 7 ) INTO/TO 子句 指定查询结果的输出方式。见 P158 。( 8 )其它 子句 NOWA :不等待浏览窗口关闭,继续执行后面 的程序。

UNIO : 连接多个 SELE 的查询结果。

Page 12: 8.1   SQL 查询功能 8.2   SQL 操作功能

12茂名职业技术学院

【任务分析解决】3 、多表内连接查询: 用查询设计器编写多表内连接查询,查看图书库各表中“证号”为“ 001” 的读者的姓名及其所借“地质”、“铁道”出版的图书信息。查询结果按“借书日期”升序排序,结果去向为浏览。见 T03B 所示。将查询设计器中 SQL 命令复制到命令文件 “ SQL3.PRG” ,保存,再添加到“项目 TS” 。分析:这是一个超级连接查询。超级连接查询有:“内部”、“左”、“右”和“完全”等 4 种连接方式。内连接的查询结果是各表的“交集”。解决:直接使用 SQL 语言在命令文件 “ SQL3.PRG” 中编写,其清单如下: SELECT DISTINCT Dzb. 证号 , Dzb. 姓名 , Tsb. 编码 , Tsb. 书名 , Tsb. 出版社 ,;

Jyb. 借书日期 ,Jyb. 还书日期 ;

FROM tsk!dzb INNER JOIN tsk!jyb;

INNER JOIN tsk!tsb ;

ON Tsb. 编码 = Jyb. 编码 ;

ON Dzb. 证号 = Jyb. 证号 ;

WHERE Dzb. 证号 = " 001";

AND Tsb. 出版社 IN (' 地质 ',' 铁道 ');

ORDER BY Jyb. 借书日期

T03B

Page 13: 8.1   SQL 查询功能 8.2   SQL 操作功能

13茂名职业技术学院

【任务分析解决】4 、嵌套查询:编写 SQL 查询命令文件,通过表 JYB.DBF 和 TSB.DBF ,查阅“实用数据结构基础”一书的借阅者的证号。查询结果去向为浏览。查询命令文件保存为“ SQL4.PRG” ,添加到“项目 TS” 。分析:这里实际是两个查询,一是查借了“实用数据结构基础”一书的证号,由于 JYB 表中没有书名这个字段,于是,要用第二个查询,从 TSB表中查这本书的编码。将两个查询一起完成,就是嵌套查询。前者为外查询,后者为内查询,内查询的结果是外查询筛选条件的实例。解决:直接使用 SQL 语言在命令文件 “ SQL4.PRG” 中编写,其清单如下: SELECT 证号 FROM tsk!JYB WHERE 编码 = ;

(SELECT 编码 FROM TSB WHERE 书名 = ' 实用数据结构基础 ')

Page 14: 8.1   SQL 查询功能 8.2   SQL 操作功能

14茂名职业技术学院

【任务分析解决】5 、图书查询实例 1 :编写 SQL 查询命令文件,通过表 TSB.DBF ,显示“编码”为“ T54560”

一书的书名和库存数量。查询命令文件保存为“ SQL5.PRG” ,添加到“项目 TS” 。分析:这个查询是为办理借书提供数据的。将查询结果存放在一个数组变量中,再用显示命令将变量的值在屏幕中显示。

解决:直接使用 SQL 语言在命令文件 “ SQL5.PRG” 中编写,其清单如下:SELE DIST 书名 ,数量 FROM TSK!TSB WHER 编码 ='T54560' INTO ARRA TSLCLEA? TSL(1) + ":" +STR(TSL(2),2) + " 本 "

Page 15: 8.1   SQL 查询功能 8.2   SQL 操作功能

15茂名职业技术学院

【任务分析解决】6 、图书查询实例 2 :编写 SQL 查询命令文件,通过分别查询表 JYB.DBF 和 DZB.DBF ,显示“证号”为“ 001” 的读者姓名及其所借书的数量。查询命令文件保存为“ SQL6.PRG” ,添加到“项目 TS” 。分析:这个查询是为办理借书提供读者数据的。查询分两次完成,查询结果分别存放在两个数组变量中,再用显示命令将变量的值在屏幕中显示。解决:直接使用 SQL 语言在命令文件 “ SQL6.PRG” 中编写,其清单如下: CLEA ZHH='001' SELE COUNT(*) FROM TSK!JYB WHER 证号 =ZHH AND 还书日期 ={ } ; GROUP BY 证号 INTO ARRA JSL SELE 证号 ,姓名 FROM TSK!DZB WHER 证号 =ZHH INTO ARRA DZL ? DZL(1) + " " + DZL(2) + " 已借书 :" + STR(JSL(1),3) +" 本 "

Page 16: 8.1   SQL 查询功能 8.2   SQL 操作功能

16茂名职业技术学院

【任务分析解决】7 、图书查询实例 3 :编写 SQL 查询命令文件,通过分别查询表 JYB.DBF 和 DZB.DBF ,显示“证号”为“ 001” 的读者姓名及其所借书未还的最长天数。见 T03C 所示。查询命令文件保存为“ SQL7.PRG” ,添加到“项目 TS” 。分析:这个查询是为办理借书提供读者数据的。查询分两次完成,查询结果分别存放在两个数组变量中,再用显示命令将变量的值在屏幕中显示。解决:直接使用 SQL 语言在命令文件 “ SQL7.PRG” 中编写,其清单如下: CLEA ZHH='001' SELE MIN(借书日期 ) FROM TSK!JYB WHER 证号 =ZHH AND ; 还书日期 ={ } GROUP BY 证号 INTO ARRA JSR SELE 证号 ,姓名 FROM TSK!DZB WHER 证号 =ZHH INTO ARRA DZL ? DZL(1) + " " + DZL(2) + "借书未还的最长天数 :" + ; STR((DATE()-JSR(1)),4)

T03C

Page 17: 8.1   SQL 查询功能 8.2   SQL 操作功能

17茂名职业技术学院

8.2 SQL8.2 SQL 操作功能操作功能【学习目标】 用 SQL 命令进行记录的插入、删除和更新操作

【关键概念】 INSERT 命令的使用 DELETE 命令的使用 UPDATE 命令的使用

Page 18: 8.1   SQL 查询功能 8.2   SQL 操作功能

18茂名职业技术学院

8.2.1 插入记录 命令格式: INSERT INTO < 表名 > [(<字段名 1> [, <字段名 2>, ...])] VALUES (< 表达式 1> [, < 表达式 2>, ...]) 或 INSERT INTO < 表名 > FROM ARRAY < 数组 > | FROM MEMVAR 功能:在表的末尾追加一条新的记录。 [ 例 8-1] 向 jyb.dbf 表插入一条当天的借书记录 (设:证号为‘ 002’ ,图书编码为‘ T64493’ )。 ZHH = ’002’ BMM = ’T64493’ INSE INTO JYB( 证号 , 编码 , 借书日期 ) VALUES (ZHH,BMM,DATE()) DISP CLOS DATA

Page 19: 8.1   SQL 查询功能 8.2   SQL 操作功能

19茂名职业技术学院

8.2.2 删除记录 命令格式:

DELETE FROM < 表名 > [WHERE < 条件 >] 功能:逻辑删除表中满足条件的记录,即对满足条件的 记录做删除标志。 [ 例 8-2] 将表 jyb.dbf 中读者已还书超过 30 天的记录删除。 DELE FROM jyb WHER DATE()- 还书日期 > 30 && 做删除标记 SELE jyb PACK &&彻底删除有删除标记的记录 LIST USE

Page 20: 8.1   SQL 查询功能 8.2   SQL 操作功能

20茂名职业技术学院

8.2.3 更新记录 命令格式: UPDATE [< 数据库名 !>] < 表名 > SET <字段名 1> = < 表达式 1> [,<字段名 2> = < 表达式 2> ...] [WHERE < 条件 >] 功能:更新满足条件的记录,该记录指定字段值由相对应的

表达式值来代替。 [ 例 8-3]办理借书后,将表 tsb.dbf 中该编码图书的数量减少 1 本。 BMM = ’T65104’ && 设借书的编码为’ T65104’ UPDA TSK!TSB SET 数量 = 数量 -1 WHER 编码 =BMM &&办理借书后,数量减 1 MESSAGEBOX('已办理成功 !',64,'提示 ') CLOS DATA

Page 21: 8.1   SQL 查询功能 8.2   SQL 操作功能

21茂名职业技术学院

【本课小结】1. SQL 查询命令: SELE ……; FROM …… INNE JOIN ……; ON ……; WHER …… ; ORDE BY ……; INTO TABL ……2. SQL记录操作命令: INSERT …… DELETE …… UPDATE ……

【作业】 完成上机 8 。

返回本课目录