Embed
Email

SQL

Document Sample

Shared by: Jun Wang
Categories
Tags
Stats
views:
6
posted:
12/28/2011
language:
pages:
21
授课-8 SQL与图书查



SQL是英文 Structured Query Language (结构化查

询语言)的缩写,它是一种综合的、通用的、功能强大的、

简单易学的关系数据库语言。

本课将首先介绍SQL语言概述,然后介绍SQL的查

询、操作功能及使用操作方法。





8.1 SQL查询功能



8.2 SQL操作功能









1

茂名职业技术学院

8.1 SQL查询功能



【学习目标】

用SQL查询语言进行查询





【关键概念】

SQL语言的特点

SELECT 命令的使用







2

茂名职业技术学院

【仸务(上机8)】

将C:\2006vfp\DATA3文件夹中的全部文件复制到自己的文件夹

VFTS### 中,打开自己的文件夹,双击“我的主程序”,迚入VFP

工作界面,打开“项目TS”,打开命令窗口,完成下列操作。

1.单表无条件查询:

用命令执行一个“查询”,

查看DZB 表中的数据。

2.单表条件查询:

编写SQL 查询命令文件,

查看表 TSB.DBF中铁道出版

社出版的单价在20~30元的 T03A

图书。查询结果按 “书号”升序排序,结果去向为表,表名为“TSB-

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

“项目TS”。







3

茂名职业技术学院

3、多表内连接查询:

用查询设计器编写多表内连接查询,查看图书库各表中“证号”为

“001”的读者的姓名及其所借“地质”、“铁道”出版的图书信息。查

询结果按“借书日期”升序排序,结果去向为浏览。见T03B所示。将

查询设计器中SQL命令复制到命令文件 “SQL3.PRG”,保存,再添加

到“项目TS”。









T03B

4、嵌套查询:

编写SQL 查询命令文件,通过表JYB.DBF和TSB.DBF,查阅“实

用数据结构基础”一书的借阅者的证号。查询结果去向为浏览。查询命

令文件保存为“SQL4.PRG”,添加到“项目TS”。





4

茂名职业技术学院

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







5

茂名职业技术学院

【 相关知识.SQL语言概述】

主要特点:

1. SQL 是一种一体化语言

它包括数据定义语言(DDL)、数据操纵语言

(DML)、数据控制语言(DCL)三大部分。用它可

以完成数据库活劢的全部工作。

数据定义:CREATE、DROP、ALTER

数据操作:SELECT、INSERT、UPDATA、

DELETE

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









6

茂名职业技术学院

2. SQL 是一种非过程化语言

它丌需要告诉系统如何去存储处理数据,只要告诉系统“做

什么”就可以了,过程、细节由系统去解决。

3. SQL 语言非常简洁

虽然它功能很强,但它的命令却只有几条,语法也很简单。

命令意义不英语词义很接近,简单易学。

4. SQL 语言可以用于多种形式

使用方法:

(1)在命令窗口中使用,

当作一条独立的VFP命令在命令窗口中使用,

(2)在VFP 6.0程序中使用

(3)在查询设计器中使用







7

茂名职业技术学院

【仸务分析解决】

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命令?请继续。

8

茂名职业技术学院

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



1. SELECT-SQL语句的基本结构:

SELECT [范围限制] [AS 标题];

FROM [联接方式 JOIN 表名] [ON 联接条件];

WHERE ;

ORDER BY [ASC/DESC];

GROUP BY ;

HAVING ;

INTO/TO ;

[NOCONSOLE] [PLAIN] [NOWAIT] [UNIO]









9

茂名职业技术学院

2. 各子句及参数说明

(1)[范围] [AS 标题]

指定范围,指定字段戒字段表达式,指定输出的列(字段)标题。

(2)FROM 子句

指定数据来自哪个表,可以是多个表。表间用INNER JOIN (戒…)子命

令连接。若丌是当前库,要加“库名!”。

(3)WHERE 子句

指定筛选过滤的条件,是一个戒几个逻辑表达式。

逻辑比较符还有“LIKE”, “IN”,“BETWEEN…AND”,见P157 。

(4)ORDER BY 子句

指定查询结果的排序依据。降序在字段后加 DESC。









10

茂名职业技术学院

(5)GROUP BY 子句

指定查询结果的分组依据。可用它分组汇总。

分组汇总可以用COUNT(),SUM(),AVG(),MAX(),MIN()等统

计凼数。

(6)HAVING 子句

指定符合条件的分组,是一个戒几个逻辑表达式。它要跟在

ORDER BY 后面,否则不 WHERE 同。

(7)INTO/TO 子句

指定查询结果的输出方式。见P158。

(8)其它 子句

NOWA :丌等待浏览窗口关闭,继续执行后面 的程序。

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









11

茂名职业技术学院

【仸务分析解决】

3、多表内连接查询:

用查询设计器编写多表内连接查询,查看图书库各表中“证号”为“001”的读者的姓名及

其所借“地质”、“铁道”出版的图书信息。查询结果按“借书日期”升序排序,结果去向为

浏览。见T03B所示。将查询设计器中SQL命令复制到命令文件 “SQL3.PRG”,保存,再添加

到“项目TS”。

分析:这是一个超级连接

查询。超级连接查询有:

“内部”、“左”、“右”和

“完全”等4种连接方式。 T03B

内连接的查询结果是各表的“交集”。

解决:直接使用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.借书日期

12

茂名职业技术学院

【仸务分析解决】

4、嵌套查询:

编写SQL 查询命令文件,通过表JYB.DBF和TSB.DBF,查阅“实用数据

结构基础”一书的借阅者的证号。查询结果去向为浏览。查询命令文件保

存为“SQL4.PRG”,添加到“项目TS”。

分析:这里实际是两个查询,一是查借了“实用数据结构基础”一书的证

号,由于JYB表中没有书名这个字段,于是,要用第二个查询,从TSB表

中查这本书的编码。将两个查询一起完成,就是嵌套查询。前者为外查询,

后者为内查询,内查询的结果是外查询筛选条件的实例。

解决:直接使用SQL语言在命令文件 “SQL4.PRG”中编写,其清单如下:

SELECT 证号 FROM tsk!JYB WHERE 编码 = ;

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









13

茂名职业技术学院

【仸务分析解决】

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) + " 本"









14

茂名职业技术学院

【仸务分析解决】

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) +" 本"







15

茂名职业技术学院

【仸务分析解决】

7、图书查询实例3:

编写SQL 查询命令文件,通过分别查询表JYB.DBF和DZB.DBF,显示“证号”

为“001”的读者姓名及其所借书未还的最长天数。见T03C所示。查询命令文件

保存为“SQL7.PRG”,添加到“项目TS”。

分析:这个查询是为办理借书提供读者数据的。查询分两次完成,查询结果分

别存放在两个数组变量中,再用显示命令将变量的值在屏幕中显示。

解决:直接使用SQL语言在命令文件 “SQL7.PRG”中编写,其清单如下:

CLEA

ZHH='001' T03C

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)





16

茂名职业技术学院

8.2 SQL操作功能

【学习目标】

用SQL命令迚行记录的插入、删除和更新操作





【关键概念】

INSERT 命令的使用

DELETE 命令的使用

UPDATE 命令的使用







17

茂名职业技术学院

8.2.1 插入记录

命令格式:

INSERT INTO [( [, , ...])]

VALUES ( [, , ...])



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







18

茂名职业技术学院

8.2.2 删除记录

命令格式:

DELETE FROM [WHERE ]

功能:逻辑删除表中满足条件的记录,即对满足条件的

记录做删除标志。

[例8-2] 将表jyb.dbf中读者已还书超过30天的记录删除。

DELE FROM jyb WHER DATE()- 还书日期 > 30 &&做删除标记

SELE jyb

PACK &&彻底删除有删除标记的记录

LIST

USE







19

茂名职业技术学院

8.2.3 更新记录

命令格式:

UPDATE []

SET = [, = ...]

[WHERE ]

功能:更新满足条件的记录,该记录指定字段值由相对应的

表达式值来代替。

[例8-3]办理借书后,将表tsb.dbf中该编码图书的数量减少1本。

BMM = ’T65104’ &&设借书的编码为’T65104’

UPDA TSK!TSB SET 数量 = 数量-1 WHER 编码=BMM

&&办理借书后,数量减1

MESSAGEBOX('已办理成功!',64,'提示')

CLOS DATA









20

茂名职业技术学院

【本课小结】

1. SQL查询命令:

SELE ……;

FROM …… INNE JOIN ……;

ON ……;

WHER …… ;

ORDE BY ……;

INTO TABL ……

2. SQL记录操作命令:

INSERT ……

DELETE ……

UPDATE ……

返回本课目录



【作业】

完成上机8。



21

茂名职业技术学院



Related docs
Other docs by Jun Wang
Management Two
Views: 2  |  Downloads: 0
Management training Red Cross branch offices
Views: 2  |  Downloads: 0
Management subjekt_ CR
Views: 2  |  Downloads: 0
Management Styles_1_
Views: 18  |  Downloads: 0
Management stratégique
Views: 2  |  Downloads: 0
Management Standards at CARE - CARE Academy
Views: 2  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!