第四章关系数据库标准语言SQL_第1页
第四章关系数据库标准语言SQL_第2页
第四章关系数据库标准语言SQL_第3页
第四章关系数据库标准语言SQL_第4页
第四章关系数据库标准语言SQL_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品文档 你我共享第四章 关系数据库标准语言 SQL 第一节 查询功能 一. 最短格式 :SELECT 查询项 FROM 表名列表 | 视图名 列表 注: 查询项 : 要查询的字段 , 表达式例: 查询职工表中的所有信息 SELE * FROM 职工 注 : * 代表所有字段 例: 查询仓库表中仓库号 , 面积信息 SELE 仓库号 , 面积 FROM 仓库 例: 查询职工表中不重复的仓库号信息 SELE DIST 仓库号 FROM 职工 注: DISTINCT 代表在查询结果中去掉重复 值, 并进行升序排序 例: 查询职工表所有职工的职工号 , 月工资 ( 工资 ) 和年工资 ( 工资 *1

2、2)SELE 职工号 , 工资 AS 月工资 , 工资 *12 AS 年工资 FROM 职工二. 条件短语WHERE条件表达式注: 条件表达式是能返回一个逻辑值的式子 , 该短语相当于 VFP命令中的FORv条件短语, 让查询命令仅对符合条件的记录进行操作 例: 查询职工表中工资大于 1210元的职工信尸t息SELE * FROM 职工 WHERE工资 1210例: 查询在北京和上海的仓库信息SELE * FROM 仓库 WHERE 城市 IN( 北 京, 上海 )注 : v 字段名 IN ( 表达式列表 ) 当字段的值与表达式列表中的任何一项相 等时返回 .T.例: 查询不在北京和上海的仓库

3、信息SELE * FROM 仓库 WHER就市 NOT IN( 北京, 上海 ) 注: v 字段名 NOT IN ( 表达式列表 ) 当字段的值与表达式列表中的任何一项都 不相等时返回 .T.例:查询职工表中工资在 1230 与 1250 之间 的职工信息SELE * FROM 职工 WHERE工资 BETWEEN 1230 AND 1250注: BETWEEN 数 AND 当字段的值在数据 1 与数据 2 之间时返 回.T.例:查询订购单表中所有供应商号为NULL的信息SELE * FROM订购单 WHERE供应商号ISNULL注: IS NULL 当字段的值为NULL值时返回.T.例: 查

4、询订购单表中所有订购日期不为 NULL 值的信息SELE * FROM 订购单 WHERE订购日期IS NOT NULL注: IS NOT NULL 当字段的值不为NULL值时返回.T.例: 查询供应商表中供应商名里包含厂字的信息SELE * FROM供应商 WHERE供应商名 LIKE % 厂%注: 字段名 LIKE 当字符型字段的值符合通配符表达式时返回在SQL中,%代表多个任意字符,_”代表 单个字符三 . 排序短语ORDER BY 字段名 1 DESCASC,v 字段名2 DESCASC 例: 按面积降序查询仓库表的所有信息SELE * FROM 仓库 ORDER BY面积 DESC例

5、: 按工资降序 , 工资相同按职工号升序查 询职工表的所有信息SELE * FROM 职工 ORDER BY工资 DESC, 职工号例: 按仓库号降序查询职工表的所有信息SELE * FROM 职工 ORDER BY 1 DESC注: ORDERBY 或 GROUPBY 短语后跟的是数 字而不是字段名则代表按查询结果的第几 列进行排序或分组 四 . 计算查询1.SUM 求和 2.AVG 求平均 3.MAX 求最 大值4.MIN 求最小值 5.COUNT 计数SELE 计算函数 (表达式)FROM 表名列表| 视图名列表 注: 根据使用的计算函数 , 查询计算结果 . 一 般在查询项中只包括计算

6、项 , 查询结果如果 没有分组短语则只有一条记录 例: 查询职工表中的职工人数SELE COUNT(*) AS 职工人数 FROM 职工 注:COUNT函数是用来统计记录个数的,因此, 括号内如果没有 DISTINCT 选项则无论是使 用哪一个字段名都是同样的结果 , 所以一般 使用 *例: 统计职工表中的仓库个数SELE COUNT(DIST 仓库号 ) AS 仓库个数FROM职工例: 查询职工表中职工的总工资和平均工资 以及年总工资和年平均工资SELE SUM工资)AS 总工资,AVG(工资)AS 平 均 工 资 ,SUM( 工 资 *12) AS 年 总 工 资,AVG(工资*12) A

7、S 年平均工资 FROM职 工例: 查询职工表中职工的最高工资和最低工资SELE MAX(工资)AS 最高工资,MIN(工资)AS 最低工资 FROM 职工五. 分组计算查询GROUP BY分组项 1,分组项 2HAVING 分组条件 例: 查询各仓库职工的总工资和平均工资SELE 仓 库 号 ,SUM( 工 资 ) AS 总 工 资,AVG(工资)AS平均工资FROM职工GROUP BY仓库号例: 查询订单数不小于 2 的所有职工的订单 数 , 平均金额信息SELE职工号,COUNT(*) AS订单数,AVG(总 金额 ) AS 平均金额 FROM 订购单 GROUP BY 职工号 HAVI

8、 COUNT(*)=2六. 联接查询SELE 查询项 FROM 表 1, 表 2, 表 3WHERE 联接条件 AND 查询条 件 例: 查询在北京工作的职工的职工号 , 工资 及所在仓库的仓库号 , 面积SELE 职工号 , 工 资 , 仓 库 . 仓库号 , 面 积FROM仓库,职工 WHERE仓库.仓库号=职工. 仓库号 AND 城市 = 北京 例: 查询由在北京工作的职工所开的订购单 的订购单号 , 订购日期 , 职工号 , 供应商号 , 并将结果按订购单号升序排列SELE 订购单号 , 订购日期 , 职工 . 职工号 , 供应商号 FROM 仓库 , 职工 , 订购单 WHERE 仓

9、库 . 仓库号 =职工 . 仓库号 AND 职工 . 职工 号=订购单 . 职工号 AND 城市 = 北京 ORDER BY 订购单号七. 嵌套查询SELE FROM WHERE IN|=|=|=|NOT IN 注: 子查询是另一个查询 , 它只有一个查询 项, 它的查询结果是括号外查询的条件的一 部分例: 查询在北京和上海工作的职工的职工号,SELE 职工号 , 工资 FROM 职工 , 仓库 WHERE 职工 . 仓库号 =仓库 . 仓库号 AND 城市 IN ( 北京 , 上海 )* 以上方法是用连接完成的 *SELE 职工号 , 工资 FROM 职工 WHERE 仓 库号 IN (SE

10、LE 仓库号 FROM 仓库 WHERE 城市 IN ( 北京 , 上海 )* 此类查询 ( 查询项在一个表 , 查询条件在 另一表 ) 的一般格式SELEv查询项 FROM WHERE IN (SELE FROM WHERE查询条件)注:在VFP中,SQL语言的嵌套只能有一层例 : 查询没有职工工作的仓库信息SELE * FROM 仓库 WHERE仓库号 NOT IN(SELE 仓库号 FROM 职工 )例: 查询工资高于所有职工平均工资的职工 信息 ( 大于等于 )SELE * FROM职工 WHEREX 资 =(SELEAVG工资)FROM职工)八. 超连接查询SELE v 查 询 项

11、FROM v 表 1 INNER|LEFT|RIGHT|FULL JOIN v 表 2 ON v 联接条件 INNERJOIN 等价于 JOIN 为内部连接 , 与普 通连接相同LEFT JOIN 左连接 , 即除满足条件的记录出AAAAAA精品文档 你我共享 现在查询结果中外 , 第一个表中不满足连接 条件的记录也出现在查询中 RIGH JOIN 右连接 , 即除满足条件的记录出 现在查询结果中外 , 第二个表中不满足连接 条件的记录也出现在查询中 FULL JOIN 完全连接 , 即两个表中记录不管 是否满足条件都在查询结果中出现 注 : 不 满 足 条 件 的 记 录 对 应 部 分 显

12、 示 为.NULL.例:INSERT INTO 职工 VALUE(WH5,E8,1240)注 : 在职工表的尾部加入一条新记录 *普通连接SELE * FROM仓库,职工 WHERE仓库.仓库 号 =职工 . 仓库号* 超连接SELE * FROM 仓库 INNER JOIN 职工 ON 仓 库. 仓库号 =职工 . 仓库号将 INNER JOIN 改为 LEFT JOIN 、RIGHT JOIN、FULL JOIN 分别练习。例 : 查询由工资高于 1230 元的职工所开的订 购单信息AAAAAA精品文档 你我共享SELE 订购单 .* FROM 订购单 INNER JOIN 职 工 ON

13、订 购 单 . 职 工 号 =职 工 . 职 工 号WHERE!资 =1230九. 显示部分结果SELE TOP N PERCENT 查询项 FROM 表名列表 ORDER BY 排序依据例 29: 显示面积最大的 2 个仓库的信息SELE TOP 2 * FROM 仓库 ORDER BY 面积 DESC例 30: 显示!资最低的 50%职!的职!号 , !SELETOP50 PERCENT职工号,工资 FROM 职 工ORDER BY工资十查询去向1. 将查询结果保存在数组INTO ARRAY 数组名 *DISP MEMO LIKE AAA2. 将查询结果保存在临时文件 ( 临时表 )INT

14、O CURSOR文件名显示方法 :BROWSEAAAAAA精品文档 你我共享3. 将查询结果保存在DBF表文件INTO TABLE|DBF 例33:将仓库表复制到CKBAK.DBF中SELE * FROM 仓库 INTO TABLE CKBAK例 34: 查询工资最高的三个职工的职工号 , 仓库号信息 , 并将结果保存在表文件 JG.DBF 中SELE TOP 3职工号,仓库号 FROM职工ORDER BY工资 DESC INTO TABLE JG注:此时JG.DBF自动处于打开状态,且为当、八1-前表4. 将查询结果保存在文本文件 TO FILE ADDITIVE 显示方法: MODIFY

15、FILE JG5. 将查询结果通过打印机进行输出TO PRINTER PROMPT第二节 操作功能一 . 插入INSERT INTO ( 字 段 名 列 表 )VALUES数据列表)例 : 在仓库表中插入一条记录 WH5 兰 州700AAAAAA精品文档 你我共享INSERT INTO 仓 库 VALUE(WH5, 兰 州,700)注: 当为指定表的所有字段都给数据时 , 不 用指定字段 , 但数据的类型和个数必须与表 结构相符二. 更新UPDATEv表名 SET =WHERE 例: 为所有北京职工工资上调 20%UPDA职工SET工资=工资*1.2 WHER电库 号IN (SELE 仓库号F

16、ROM仓库WHERE城 市= 北京)三 . 删除DELETE FROM 表名 WHERE 注: 本命令同样为逻辑删除 , 如果要物理删 除记录需要继续使用 PACK命令 例:删除面积为 750 的仓库DELE FROM仓库 WHERE面积=750第三节 定义功能一 . 表的定义CREATE TABLE|DBF 表名 FREE(,)【字段描述】字段名 类型 (,) NULL|NOT NULLPRIMARY KEY|UNIQUECHECK ERROR DEFAULT 【表联系描述】FOREIGN KEY TAG REFERENCES另一表名 TAG 例: 创建数据库订货管理 1, 并创建数据库表

17、仓库 1, 职工 1, 订购单 1, 供应商 1 以及表与 表之间的联系MODI DATA 订货管理 1CREATE TABLE仓库 1(仓库号 C(5) PRIM KEY,城市 C(10), 面积 I CHECK 面积 =0 ERROR 面积不能小于 0 DEFAULT 400) CREATE TABLE职工1(仓库号 C(5),职工 号 C(5) PRIM KEY, 工资 I,FORE KEY 仓库 号 TAG 仓库号 REFE 仓库 1)CREATE TABLE 供应商 1( 供应商号 C(5)PRIM KEY,供应商名 C(20),地址 C(5)CREATE TABLE订购单 1(职工

18、号 C(5),供 应商号C(5) NULL,订购单号C(5) PRIMKEY, 订购日期D NULL,FORE KEY职工号TAG职 工号 REFE 职工 1,FORE KEY 供应商号 TAG 供应商号 REFE 供应商 1)二. 表的修改 格式 1:ALTER TABLE ALTER|ADD COLUMN 功能:修改(ALTER)或添加(ADD)指定的字段* 在表创建命令完成的基础上完成如下例 题:例 : 为订购单 1 表添加一个新字段 总金额 N(7)ALTER TABLE订购单1 ADD总金额 N(7) 例: 将订购单 1 表中的总金额字段改为整型ALTER TABLE订购单1 ALT

19、ER总金额I 格式 2:ALTER TABLE ALTER COLUMN NULL NOT NULLSET CHECK ERROR SET DEFAULT DROP CHECKDROP DEFAULT功能 : 为指定的字段添加有效规则或默认值,也可用来删除有效规则或默认值例: 为订购单 1 表的总金额字段设置有效规 则为总金额不能小于 0ALTER TABLE订购单 1 ALTER 总金额 SETCHECK总金额=0 ERROR 总金额不能小于0!例: 删除订购单 1 表总金额字段的有效规则ALTER TABLE订购单 1 ALTER 总金额 DROP CHECK格式 3:ALTER TABLE DROP COLUMN DROP PRIMARY KEYDROP UNIQUE TAG索弓I名 ADDPRIMAR*EY TA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论