1 / 21

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

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

carnig
Download Presentation

8.1 SQL 查询功能 8.2 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. 授课-8 SQL与图书查询 SQL是英文 Structured Query Language (结构化查询语言)的缩写,它是一种综合的、通用的、功能强大的、简单易学的关系数据库语言。 本课将首先介绍SQL语言概述,然后介绍SQL的查询、操作功能及使用操作方法。 8.1 SQL查询功能 8.2 SQL操作功能

  2. 8.1 SQL查询功能 • 【学习目标】 • 用SQL查询语言进行查询 • 【关键概念】 • SQL语言的特点 • SELECT 命令的使用

  3. 【任务(上机8)】 将C:\2006vfp\DATA3文件夹中的全部文件复制到自己的文件夹VFTS### 中,打开自己的文件夹,双击“我的主程序”,进入VFP工作界面,打开“项目TS”,打开命令窗口,完成下列操作。 1.单表无条件查询: 用命令执行一个“查询”, 查看DZB 表中的数据。 2.单表条件查询: 编写SQL 查询命令文件, 查看表 TSB.DBF中铁道出版 社出版的单价在20~30元的 图书。查询结果按 “书号”升序排序,结果去向为表,表名为“TSB-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语言概述】 • 主要特点: • 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 BROW 2.单表条件查询: 编写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查询功能】 • 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”,见P157 。 • (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 TSL CLEA ? 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 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。 返回本课目录

More Related