《2022年SQL的数据查询功能 .pdf》由会员分享,可在线阅读,更多相关《2022年SQL的数据查询功能 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、SQL的数据查询功能SQL的核心是查询,SQL的查询命令也称作SELECT命令。格式如下:SELECT ALL|DISTINCTTOP ,PERCENTAS , FROM ,INNER|LEFT|RIGHT|FULL|JOIN ,ON, WHERE , GROUP BY ,HAVING , ORDER BY ,ASC|DESC UNION ALL , INTO ,| TO FILE ,| TO PRINTER | TO SCREEN 1.1 简单查询一、简单查询SELECT ,FROM WHERE ORDER BY,ASC|DESC 功能特点:(查询结果与查询条件均基于一个表)说明: (1)S
2、ELECT子句包括: *、表中的字段名称、函数、常数(2)可用 AS子句为字段起别名。(3)使用 DISTINCT 消除重复行。(4)使用 TOP ,PERCENT ,显示部分结果。(5)使用 WHERE 子句说明选择记录的条件。(6)使用 ORDER BY 子句指定显示结果的顺序。(7)使用 GROUP BYY 子句对指定字段进行分组。例 1 找出工资多于1230 元的职工号SELECT 职工号 FROM 职工表 WHERE 工资 1230 例 2 给出在仓库” WH1 ”或” WH2 ”工作并且工资少于1250 元的职工号 SELECT 职工号 FROM 职工表 WHERE 工资 ; 12
3、30 AND 职工表 . 仓库号 =仓库表 . 仓库号(2) 找出工作在面积大于400 的仓库的职工号以及这些职工工作的城市SELECT 职工号 , 城市 FROM 职工表 , 仓库表 ; WHERE 面积 400 AND 职工表 . 仓库号 =仓库表 . 仓库号三、嵌套查询Select ,From Where In (SELECT ,) 功能特点:查询的结果字段基于一个关系,但相关条件却涉及多个关系。例 4 哪些城市至少有一个仓库的职工的工资为1250 元 SELECT 城市 FROM 仓库表 WHERE 仓库号 IN; (SELECT 仓库号 FROM 职工表 WHERE 工资 =1250
4、) 例 5 查询所有职工的工资都多于1210 元的仓库信息。 ( 该仓库至少有一个职工) SELECT * FROM 仓库表 WHERE 仓库号 NOT IN; (SELECT 仓库号 FROM 职工表 WHERE 工资 =1220 AND 工资 =2 利用空值的查询例 12 找出尚未确定供应商的订购单SELE * FROM 订购单表 WHERE 供应商号 IS NULL 1.2 内外层互相关嵌套功能特点:内外层互相关查询是指内层查询的条件需要外层查询提供值, 而外层查询的条件需要内层查询的结果。例 13 列出每个职工经手的具有最高总金额的订购单信息。SELECT OUT. 职工号 ,OUT.
5、供应商号 ,OUT.订货日期 ,OUT.总金额 ; FROM 订购单表 OUT WHERE 总金额 =; (SELECT MAX(总金额 ) FROM 订购单表 INNER1 WHERE OUT. 职工号 =INNER1.职工号 ) 本查询中内外层查询使用一个关系, 外层查询提供每个元组的职工号值给内层查询使用 , 内层查询根据这个职工号值确定该职工经手的具有最高金额的定购单的总金额, 然后外层查询再根据这个总金额的值找到相应的元组. 量词和谓词在嵌套查询中的应用运算符主要有两种形式:ANY|ALL|SOME( 子查询 ) NOTEXISTS( 子查询 ) 功能: ANY和 SOME 是同义词
6、,在进行比较运算时只要子查询中有一行能使结果为真,则结果为真; 而 ALL 要求子查询中的所有行都使结果为真时,结果才为真。 NOTEXISTS 只是判断子查询中是否有或没有结果返回。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - 例 14 检索哪些仓库中至少已经有一个职工的仓库信息SELECT * FROM 仓库表 WHERE EXISTS; (SELECT * FROM 职工表 WHERE 仓库号 =仓库表 . 仓库号 )
7、等价于 :SELECT * FROM 仓库表 WHERE 仓库号 IN; (SELECT 仓库号 FROM 职工 ) 例 15 检索有职工的工资大于或等于WH1 仓库中任何一名职工工资的仓库号SELECT DISTINCT 仓库号 FROM 职工表 WHERE 工资 =ANY; (SELECT 工资 FROM 职工表 WHERE 仓库号 =WH1) 等价于 :SELECT DISTINCT 仓库号 FROM 职工表 WHERE 工资 =; (SELECT MIN(工资 ) FROM 职工表 WHERE 仓库号 =WH1) 例 16 检索有职工的工资大于或等于WHI仓库中所有职工的工资的仓库号S
8、ELECT DISTINCT 仓库号 FROM 职工表 WHERE 工资 =ALL; (SELECT 工资 FROM 职工表 WHERE 仓库号 =WH1) 等价于 :SELECT DISTINCT 仓库号 FROM 职工表 WHERE 工资 =; (SELECT MAX(工资 ) FROM 职工表 WHERE 仓库号 =WH1) 超联接查询SQL中 FROM 子句后的联接称为超联接,超联接有四种形式。格式: SELECT ,. FROM 表名 INNER|LEFT| RIGHT| 表名 ON 联接条件WHERE ,说明: INNER JOIN: 普通连接,等价于 JOIN LEFT JOIN
9、: 左连接RIGHT JOIN :右连接FULL JOIN:全连接即两个表中的记录不管是否满足连接条件将都在查询结果中出现,不满足条件的记录的对应部分为NULL 下面我们分别以几个实例来说明这四种超联接的含义及区别。1. 内部联接使用 INNER JOIN 形式的联接称为内部联接,INNER JOIN 等价于 JOIN。 INNER JOIN 与普通联接相同:只有满足条件的记录才出现在查询结果中。内部联接是满足联接条件的记录才出现在查询结果中。例:将仓库表和职工表的职工号字段联接在一起。 SELECT 仓库表 . 仓库号 , 城市 , 面积 , 职工号 , 工资 ; FROM 仓库表 JOIN
10、 职工表 ON 仓库表 . 仓库号 =职工表 . 仓库号如下两种命令格式也是等价的: SELECT 仓库表 . 仓库号 , 城市 , 面积 , 职工号 , 工资 ; FROM 仓库表 INNER JOIN 职工表 ON 仓库表 . 仓库号 =职工表 . 仓库号和 SELECT 仓库表 .仓库号 , 城市 , 面积 ,职工号 , 工资 ; FROM 仓库表 , 职工表 WHERE 仓库表 . 仓库号 =职工表 . 仓库号2. 左联接使用 LEFT JOIN 称为左联接,在查询结果中包含JOIN 左侧表中的所有记录,以及JOIN 右侧表中匹配的记录。左联接,即除满足联接条件的记录出现在查询结果中外
11、,第一个表中不满足联接条件的记录也出现在查询结果中。例:将仓库表和职工表的职工号和工资字段联接在一起。SELECT 仓库表 . 仓库号 , 城市 , 面积 , 职工号 , 工资 ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - FROM 仓库表 LEFT JOIN 职工表 ; ON 仓库表 . 仓库号 =职工表 . 仓库号从以上查询结果中可以看到,首先以左边表即A 表中的第一条记录为准,在B 表中查询,找到了,则显示,找不到相
12、应的字段以NULL显示,本例中有相应的值。以下记录也是按照这种方法进行查询的。3. 右联接使用 RIGHT OUTER JOIN 称为右联接,在查询结果中包含JOIN 右侧表中的所有记录,以及 JOIN 左侧表中匹配的记录。为了看到右联接和全联接的效果,假设在职工表中插入了如下一条记录: WH8, E8 ,1200 右联接,即除满足联接条件的记录出现在查询结果中外,第二个表中不满足联接条件的记录也出现在查询结果中。例:将仓库表和职工表的职工号和工资字段联接在一起。 SELECT 仓库表 . 仓库号 , 城市 , 面积 , 职工号 , 工资 ; FROM 仓库表 RIGHT JOIN 职工表 O
13、N 仓库表 . 仓库号 =职工表 . 仓库号实际上职工“E8”所在的仓库并不存在,这在实际应用中是不允许的4. 完全联接FULLOUTER JOIN 称为完全联接,在查询结果中包含JOIN 两侧所有的匹配记录和不匹配的记录。完全联接,即除满足联接条件的记录出现在查询结果中外,两个表中不满足联接条件的记录也出现在查询结果中。例:将仓库表和职工表的职工号和工资字段联接在一起。 SELECT 仓库表 . 仓库号 , 城市 , 面积 , 职工号 , 工资 ; FROM 仓库表 FULL JOIN 职工表 ON 仓库表 . 仓库号 =职工表 . 仓库号说明: Visual FoxPro的 SQL SEL
14、ECT语句的联接格式只能实现两个表的联接,如果要实现多个表的联接,还需要使用标准格式。例如:下面是一个基于4 个关系的联接查询。SELECT 仓库表 . 仓库号 , 城市 , 供应商名 , 地址 ; FROM 供应商表 , 订购单表 , 职工表 , 仓库表 ; WHERE 供应商表 .供应商号 =订购单表 . 供应商号 ; AND 订购单表 . 职工号 =职工表 . 职工号 ; AND 职工表 . 仓库号 =仓库表 . 仓库号这样的查询用Visual FoxPro的专门格式就写不出来了。SELECT 仓库表 . 仓库号 , 城市 , 供应商名 , 地址 ; FROM 供应商表 a, 订购单表
15、b, 职工表 c, 仓库表 d; WHERE a.供应商号 =b. 供应商号 ; AND b.职工号 =c. 职工号 ; AND c.仓库号 =d.仓库号集合的并运算运算符: UNION 功能:将两个SELECT 语句的查询结果通过并运算合并成一个查询结果。要求两个查询结果具有相同的字段个数, 对应字段具有相同的数据类型和取值范围. 例:查询城市为北京和上海的仓库信息。SELECT * FROM 仓库表 WHERE 城市 =北京 UNION; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -
16、- 第 4 页,共 6 页 - - - - - - - - - SELECT * FROM 仓库表 WHERE 城市 =上海 查询输出去向1. 显示部分结果格式 : TOP 表达式PERCENT 功能 : 显示需要满足条件的前几个记录。说明 :(1) 表达式是数字表达式,当不使用PERCENT 时, 表达式是1 至 32767 间的整数,说明显示前几个记录。(2) 当使用PERCENT 时, 表达式是0.01 至 99.99 间的实数,说明显示结果中前百分之几的记录。需要注意的是TOP短语要与ORDERBY 短语同时使用才有效。例:在职工表中, 显示工资最高的三位职工的信息。 SELECT *
17、 TOP 3 FROM 职工表 ORDER BY 工资 DESC 在职工表中 , 显示工资最低的那30% 职工的信息。SELECT * TOP 30 PERCENT FROM 职工表 ORDER BY 工资2. 将查询结果存放到数组中格式 : INTO ARRAY 数组名功能 : 将查询结果存放到数组中。说明 : 数组名可以是任意的数组变量名。一般将存放查询结果的数组作为二维数组来使用,每行一条记录,每列对应于查询结果一列。查询结果存放在数组中,可以非常方便地在程序中使用。例:将查询到的职工信息存放在数组T1 中。 SELECT * FROM 职工表 INTO ARRAY T1 T1(1,1)
18、 存放的是第一条记录的仓库号字段值,T1(1 ,3) 存放的是第一条记录的工资字段值等。3. 将查询结果存放在临时文件中格式 : INTO CURSOR临时表功能 : 将查询结果存放到临时数据库文件中。说明 : 临时表是临时文件名,该短语产生的临时文件是一个只读dbf 文件,当查询结束后该临时文件是当前文件,可像一般的dbf文件一样使用,但仅是只读。当关闭文件时该文件将自动删除。例:将查询到的职工表信息存放在临时dbf 文件 T2 中。 SELECT * FROM 职工表 INTO CURSOR T2 一般利用INTO CURSOR 短语存放一些临时结果,比如一些复杂的汇总可能需要分阶段完成,
19、需要根据几个中间结果再汇总等,这时利用该短语存放中间结果就非常合适,当使用完后临时文件会自动删除。4. 将查询结果存放到永久表中格式 : INTO DBF|TABLE 表名功能 : 可以将查询结果存放到永久表中(dbf文件 ) 。5. 将查询结果存放到文本文件中格式: TO FILE 文本文件名ADDITIVE功能:可以将查询结果存放到文本文件中。说明:文本文件名( 默认扩展名是txt),如果使用ADDITIVE 选项,结果将追加在原文件的尾部,否则将覆盖原有文件。例:将查询结果以文本的形式存储在文本文件A2.txt中。 SELECT * TOP 3 FROM 职工表 TO FILE A2 O
20、RDER BY 工资 DESC 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - 如果 TO短语和 INTO 短语同时使用,则TO短语将会被忽略。6. 将查询结果直接输出到屏幕格式 :TO SCREEN 功能 : 将查询结果输出到屏幕。7. 将查询结果直接输出到打印机格式 :TO PRINTER PROMPT功能 : 将查询结果输出到打印机,如果使用了PROMPT 选项,在开始打印之前会打开打印机设置对话框。 FROM 子句中 I
21、NTO 与 TO选项, 用于指定查询结果的输出去向,默认查询结果显示在浏览窗口中。INTO 选项中的 查询结果 有 3 种:ARRAY 数组、CURSOR临时表、TABLE | DBF 表名。TO选项也有3 种:文本文件、屏幕、打印机查询去向1、INTO DBF|TABLE, &查询结果存放到永久表中2、INTO ARRAY , &查询结果存放到数组中3、INTO CURSOR , & 查询结果存放到临时表中4、TO FILE , &查询结果存放到文本文件中5、TO PRINTER PROMPT & 查询结果输出到打印机查询去向举例例: SELECT * FROM 职工 INTO TABLE abc SELECT * FROM 职工 INTO ARRAY tmp SELECT * FROM 职工 INTO CURSOR tmp1 SELECT * FROM 职工 TO FILE tmp2 SELECT * FROM 职工 TO PRINTER 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -