8.1 SQL 查询功能 8.2 SQL 操作功能
description
Transcript of 8.1 SQL 查询功能 8.2 SQL 操作功能
1茂名职业技术学院
8.1 SQL查询功能
8.2 SQL操作功能
SQL 是英文 Structured Query Language (结构化查询语言)的缩写,它是一种综合的、通用的、功能强大的、简单易学的关系数据库语言。 本课将首先介绍 SQL 语言概述,然后介绍 SQL 的查询、操作功能及使用操作方法。
授课 -8 SQL 与图书查询
2茂名职业技术学院
8.1 SQL8.1 SQL 查询功能查询功能
【学习目标】 用 SQL 查询语言进行查询
【关键概念】 SQL 语言的特点 SELECT 命令的使用
3茂名职业技术学院
【任务(上机 8)】 将 C:\2006vfp\DATA3 文件夹中的全部文件复制到自己的文件夹 VFTS### 中,打开自己的文件夹,双击“我的主程序”,进入VFP 工作界面,打开“项目 TS” ,打开命令窗口,完成下列操作。
1. 单表无条件查询: 用命令执行一个“查询”,查看 DZB 表中的数据。2. 单表条件查询: 编写 SQL 查询命令文件,查看表 TSB.DBF 中铁道出版社出版的单价在 20 ~ 30 元的图书。查询结果按 “书号”升序排序,结果去向为表,表名为“ TS
B-TD” 。见 T03A 所示。查询命令文件保存为“ SQL2.PRG” ,添加到“项目 TS” 。
T03A
4茂名职业技术学院
3 、多表内连接查询: 用查询设计器编写多表内连接查询,查看图书库各表中“证号”为“ 001” 的读者的姓名及其所借“地质”、“铁道”出版的图书信息。查询结果按“借书日期”升序排序,结果去向为浏览。见 T03B 所示。将查询设计器中 SQL 命令复制到命令文件 “ SQL3.PRG” ,保存,再添加到“项目 TS” 。
4 、嵌套查询: 编写 SQL 查询命令文件,通过表 JYB.DBF 和 TSB.DBF ,查阅“实用数据结构基础”一书的借阅者的证号。查询结果去向为浏览。查询命令文件保存为“ SQL4.PRG” ,添加到“项目 TS” 。
T03B
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
6茂名职业技术学院
【 【 相关知识相关知识 .SQL.SQL 语言概述语言概述】】主要特点:1. SQL 是一种一体化语言它包括数据定义语言( DDL )、数据操纵语言( DML )、数据控制语言( DCL )三大部分。用它可以完成数据库活动的全部工作。数据定义: CREATE 、 DROP 、 ALTER
数据操作: SELECT 、 INSERT 、 UPDATA 、 DELETE
数据控制: GRANT , REVOKE ( 注 :VFP 不支持这两句 )
7茂名职业技术学院
2. SQL 是一种非过程化语言 它不需要告诉系统如何去存储处理数据,只要告诉系统“做什么”就可以了,过程、细节由系统去解决。3. SQL 语言非常简洁 虽然它功能很强,但它的命令却只有几条,语法也很简单。命令意义与英语词义很接近,简单易学。4. SQL 语言可以用于多种形式
使用方法:(1) 在命令窗口中使用, 当作一条独立的 VFP 命令在命令窗口中使用,(2) 在 VFP 6.0 程序中使用(3) 在查询设计器中使用
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 命令?请继续。
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]
10茂名职业技术学院
2. 各子句及参数说明( 1 ) [ 范围 ] < 目标表达式 > [AS 标题 ]
指定范围,指定字段或字段表达式,指定输出的列(字段)标题。( 2 ) FROM 子句指定数据来自哪个表,可以是多个表。表间用 INNER JOIN (或… )子命令连接。若不是当前库,要加“库名!”。( 3 ) WHERE 子句指定筛选过滤的条件,是一个或几个逻辑表达式。逻辑比较符还有“ LIKE” , “ IN” ,“ BETWEEN…AND” ,见 P1
57 。( 4 ) ORDER BY 子句指定查询结果的排序依据。降序在字段后加 DESC 。
11茂名职业技术学院
( 5 ) GROUP BY 子句 指定查询结果的分组依据。可用它分组汇总。 分组汇总可以用 COUNT() , SUM() , AVG() , MAX() ,
MIN()等统计函数。( 6 ) HAVING 子句 指定符合条件的分组,是一个或几个逻辑表达式。它
要跟在 ORDER BY 后面,否则与 WHERE 同。( 7 ) INTO/TO 子句 指定查询结果的输出方式。见 P158 。( 8 )其它 子句 NOWA :不等待浏览窗口关闭,继续执行后面 的程序。
UNIO : 连接多个 SELE 的查询结果。
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
13茂名职业技术学院
【任务分析解决】4 、嵌套查询:编写 SQL 查询命令文件,通过表 JYB.DBF 和 TSB.DBF ,查阅“实用数据结构基础”一书的借阅者的证号。查询结果去向为浏览。查询命令文件保存为“ SQL4.PRG” ,添加到“项目 TS” 。分析:这里实际是两个查询,一是查借了“实用数据结构基础”一书的证号,由于 JYB 表中没有书名这个字段,于是,要用第二个查询,从 TSB表中查这本书的编码。将两个查询一起完成,就是嵌套查询。前者为外查询,后者为内查询,内查询的结果是外查询筛选条件的实例。解决:直接使用 SQL 语言在命令文件 “ SQL4.PRG” 中编写,其清单如下: SELECT 证号 FROM tsk!JYB WHERE 编码 = ;
(SELECT 编码 FROM TSB WHERE 书名 = ' 实用数据结构基础 ')
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) + " 本 "
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) +" 本 "
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
17茂名职业技术学院
8.2 SQL8.2 SQL 操作功能操作功能【学习目标】 用 SQL 命令进行记录的插入、删除和更新操作
【关键概念】 INSERT 命令的使用 DELETE 命令的使用 UPDATE 命令的使用
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
19茂名职业技术学院
8.2.2 删除记录 命令格式:
DELETE FROM < 表名 > [WHERE < 条件 >] 功能:逻辑删除表中满足条件的记录,即对满足条件的 记录做删除标志。 [ 例 8-2] 将表 jyb.dbf 中读者已还书超过 30 天的记录删除。 DELE FROM jyb WHER DATE()- 还书日期 > 30 && 做删除标记 SELE jyb PACK &&彻底删除有删除标记的记录 LIST USE
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
21茂名职业技术学院
【本课小结】1. SQL 查询命令: SELE ……; FROM …… INNE JOIN ……; ON ……; WHER …… ; ORDE BY ……; INTO TABL ……2. SQL记录操作命令: INSERT …… DELETE …… UPDATE ……
【作业】 完成上机 8 。
返回本课目录