SELECT数据查询培训课件_第1页
SELECT数据查询培训课件_第2页
SELECT数据查询培训课件_第3页
SELECT数据查询培训课件_第4页
SELECT数据查询培训课件_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、SELECT数据查询SELECT数据查询第六章 SELECT数据查询SELECT查询语句1简单查询2连接查询3SELECT数据查询子查询4联合查询5实训:数据查询62第六章 SELECT数据查询SELECT查询语句1简单查询SELECT查询语句SELECT查询语句结构 SELECT查询语句的基本语法格式如下:SELECT ALL | DISTINCT TOP n 表达式列表INTO 新表名FROM 基本表 | 视图名列表WHERE 查询条件GROUP BY 分组列名表HAVING 逻辑表达式ORDER BY 排序列名表 ASC | DESCSELECT子句的执行顺序:INTO,FROM,WHE

2、RE,GROUP BY,HAVING,ORDER BY。第六章 SELECT数据查询SELECT数据查询3SELECT查询语句SELECT查询语句结构 第六章 SESELECT查询语句SELECT的子句 SELECT子句格式:SELECT ALL|DISTINCTTOP n 表达式1,表达式2,表达式n功能:用于确定查询结果集的列。INTO子句格式:INTO新表名功能:将查询结果集存储到新表中。FROM子句格式:FROM基本表|视图名1,基本表|视图名2,基本表|视图名n功能:指定要查询的基本表或视图。第六章 SELECT数据查询SELECT数据查询4SELECT查询语句SELECT的子句 第

3、六章 SELECSELECT查询语句SELECT的子句 WHERE子句格式:WHERE查询条件功能:用于选择操作,定义了源表中的行要满足查询条件。GROUP BY子句格式:GROUP BY列名表功能:与列名或列函数配合,把结果集数据进行分组统计。第六章 SELECT数据查询SELECT数据查询5SELECT查询语句SELECT的子句 第六章 SELECSELECT查询语句SELECT的子句 HAVING子句格式:HAVING逻辑表达式功能:与GROUP BY选项配合筛选统计结果。ORDER BY子句格式:ORDER BY列名表达式表 ASC|DESC功能:按一列或多列(最多8060个字节)对查

4、询结果进行排序。第六章 SELECT数据查询SELECT数据查询6SELECT查询语句SELECT的子句 第六章 SELEC简单查询查询列 查询指定列格式:SELECT 列名1,列名2,列名n【例6-1】从客户信息Customer表中查询客户ID(CID)、客户名称(CName)、类型(CType)、状态(CStatus)的数据信息。USE BillingSysGOSELECT CID,CName,CType,CStatus FROM CustomerGO第六章 SELECT数据查询SELECT数据查询7简单查询查询列 第六章 SELECT数据查询SELECT数简单查询查询列 查询所有列格式:

5、SELECT *【例6-2】在计费系统中,需要新建一个表Public_Customer,用于存储所有单位客户信息。CREATE TABLE Public_Customer( CID int NOT NULL PRIMARY KEY, RID int CONSTRAINT fk_RID FOREIGN KEY (RID) REFERENCES Relationer(RID), CName varchar(60) NULL, CPassword char(6) NULL, CRegistrationDate datetime NULL, CType char(6) NULL, CStatus bi

6、t NULL CONSTRAINT ck_CStatus CHECK(CStatus=0 or CStatus=1), CAccountBalance numeric(7,2) NULL);INSERT INTO Pubic_CustomerSELECT * FROM Customer WHERE CType=公众 OR CType=大户 OR CType=商业GO第六章 SELECT数据查询SELECT数据查询8简单查询查询列 第六章 SELECT数据查询SELECT数简单查询查询列 使用运算列格式:SELECT 表达式1, 表达式2, 表达式n【例6-3】查询客户信息表中的CID、CNam

7、e、CType列,并将客户信息表中的客户类型的值都加上“客户”两字显示。SELECT CID,CName,CType+客户 FROM CustomerGO第六章 SELECT数据查询SELECT数据查询9简单查询查询列 第六章 SELECT数据查询SELECT数简单查询查询列 使用运算列格式:SELECT 表达式1, 表达式2, 表达式n在SELECT查询语句中,常见的聚合函数如下:COUNT:统计列中选取的项目个数或查询输出的行数。SUM:计算指定的数值型列名表达式的总和。AVG:计算指定的数值型列名表达式的平均值。MAX:求出指定的数值、字符或日期型列名表达式的最大值。MIN:求出指定的数

8、值、字符或日期型列名表达式的最小值。【例6-4】从客户信息表中的统计出客户的总数。SELECT COUNT(CID) FROM CustomerGO第六章 SELECT数据查询SELECT数据查询10简单查询查询列 第六章 SELECT数据查询SELECT数简单查询查询列 改变列标题显示格式:SELECT 列标题=列名或列名 AS 列标题【例6-5】将上例中的CID列显示为“客户ID”,CName列显示为“客户名称”,运算列标题显示为“客户类型”。SELECT CID AS 客户ID,CName AS 客户名称,CType+客户 AS 客户类型 FROM CustomerGO第六章 SELEC

9、T数据查询SELECT数据查询11简单查询查询列 第六章 SELECT数据查询SELECT数简单查询查询列 返回查询的部分数据行格式:SELECT TOP n PERCENT例如输入代码类型”:SELECT TOP 5 CID,CName,CType,CStatusFROM Customer WHERE Cpassword is NULLGO第六章 SELECT数据查询SELECT数据查询12简单查询查询列 第六章 SELECT数据查询SELECT数简单查询查询列 消除结果的重复数据行格式:SELECT ALL|DISTINCT【例6-6】从客户信息表中查询有几种不同的客户类型。SELECT

10、DISTINCT CType FROM CustomerGO第六章 SELECT数据查询SELECT数据查询13简单查询查询列 第六章 SELECT数据查询SELECT数简单查询选择行 使用比较表达式在WHERE子句中,使用比较表达式主要的比较(关系)运算符有:=(等于)、(大于)、(不等于)、!(不大于)、!=(大于等于)、=2005/1/1GO【例6-8】从客户信息表Customer中查询普通客户的客户ID(CID)、客户名称(CName)、注册时间(CRegistrationDate)的数据信息。SELECT CID,CName,CRegistrationDate FROM Custom

11、er WHERE CType=普通GO第六章 SELECT数据查询SELECT数据查询15简单查询选择行 第六章 SELECT数据查询SELECT数简单查询选择行 使用逻辑比较表达式在WHERE子句中,使用逻辑运算符把多个查询条件连接起来逻辑运算符有:NOT(非)AND(与)OR(或)【例6-9】从Customer表中查询出注册时间(CRegistrationDate)在2002年之后的流动客户的客户ID(CID)、客户名称(CName)、注册时间(CRegistrationDate)的数据信息。SELECT CID,CName,CRegistrationDate FROM Customer

12、WHERE CRegistrationDate=2002/1/1 AND CType=流动GO第六章 SELECT数据查询SELECT数据查询16简单查询选择行 第六章 SELECT数据查询SELECT数简单查询选择行 使用逻辑比较表达式【例6-10】从Customer表中查询出注册时间(CRegistrationDate)在2002年到2007年底的非流动客户的客户ID(CID)、客户名称(CName)、注册时间(CRegistrationDate)的数据信息。SELECT CID,CName,CRegistrationDate FROM Customer WHERE (CRegistrat

13、ionDate=2002/1/1 AND CRegistrationDate=2007/12/31) AND CType流动GO或SELECT CID,CName,CRegistrationDate FROM Customer WHERE (CRegistrationDate=2002/1/1 AND CRegistrationDate=2007/12/31) AND (NOT (CType=流动)GO第六章 SELECT数据查询SELECT数据查询17简单查询选择行 第六章 SELECT数据查询SELECT数简单查询选择行 空值(NULL)的判断格式:SELECT 列名 IS NOT NUL

14、L【例6-11】从Customer表中查询密码为空的客户名称(CName)、注册时间(CRegistrationDate)和类型(CType)的数据信息。SELECT CName,CRegistrationDate,CType,CPassword FROM Customer WHERE CPassword IS NULLGO第六章 SELECT数据查询SELECT数据查询18简单查询选择行 第六章 SELECT数据查询SELECT数简单查询选择行 限定数据范围格式:SELECT 列名 NOT BETWEEN 开始值 AND 结束值【例6-12】统计Customer表中查询客户ID在250000

15、00到35000000之间(包括35000000)的记录数。SELECT COUNT(CName) FROM Customer WHERE CID BETWEEN 25000000 AND 35000000GO第六章 SELECT数据查询SELECT数据查询19简单查询选择行 第六章 SELECT数据查询SELECT数简单查询选择行 限制检索数据的范围格式:SELECT 列名 NOT IN (列名 | 子查询)【例6-13】从Customer表中查询客户类型为大户、商业或公众的客户信息。SELECT * FROM Customer WHERE CType IN (大户,商业,公众) GO或SE

16、LECT * FROM Customer WHERE CType =大户 OR CType =商业 OR CType =公众GO第六章 SELECT数据查询SELECT数据查询20简单查询选择行 第六章 SELECT数据查询SELECT数简单查询选择行 模糊查询格式:SELECT 列名 NOT LIKE 通配符4种LIKE子句的通配符%(百分号):代表任意多个字符。_(下划线):代表一个任意单个字符。 (封闭方括号):表示方括号里列出的任意一个字符。(封闭方括号):任意一个没有在方括号里列出的字符。第六章 SELECT数据查询SELECT数据查询21简单查询选择行 第六章 SELECT数据查询

17、SELECT数简单查询选择行 模糊查询通配符%【例6-14】从Customer表中查询所有客户名称为姓石的数据行信息。SELECT * FROM Customer WHERE CName LIKE 石%GO第六章 SELECT数据查询SELECT数据查询22简单查询选择行 第六章 SELECT数据查询SELECT数简单查询选择行 模糊查询通配符_【例6-15】从Customer表中查询所有客户名称为姓“李”,而且是三个字姓名的数据行信息。SELECT * FROM Customer WHERE CName LIKE 李_GO第六章 SELECT数据查询SELECT数据查询23简单查询选择行 第

18、六章 SELECT数据查询SELECT数简单查询选择行 模糊查询通配符 【例6-16】从Customer表中查询所有客户名称为姓“李”或姓“王”或姓“张”的数据行信息。SELECT * FROM Customer WHERE CName LIKE 王张李%GO第六章 SELECT数据查询SELECT数据查询24简单查询选择行 第六章 SELECT数据查询SELECT数简单查询选择行 模糊查询通配符 【例6-17】从Customer表中查询所有客户名称不姓“李”也不姓“王”的数据行信息。SELECT * FROM Customer WHERE CName LIKE 王李%GO第六章 SELECT

19、数据查询SELECT数据查询25简单查询选择行 第六章 SELECT数据查询SELECT数简单查询选择行 模糊查询ESCAPE定义转义符 【例6-18】从Customer表中查询所有密码以“%”结尾的数据行信息。SELECT * FROM Customer WHERE CPassword LIKE %D% ESCAPE DGO第六章 SELECT数据查询SELECT数据查询26简单查询选择行 第六章 SELECT数据查询SELECT数简单查询分组与汇总 分组汇总格式:GROUP BY 列名表【例6-19】统计Customer表中“普通”和“流动”类型客户的最早注册日期、最晚注册日期以及客户数目

20、。SELECT CType AS 类型,MAX(CRegistrationDate ) AS 最早注册,MIN(CRegistrationDate) AS 最后注册,COUNT(CName) AS 客户数FROM Customer WHERE CType IN (普通,流动)GROUP BY CTypeGO第六章 SELECT数据查询SELECT数据查询27简单查询分组与汇总 第六章 SELECT数据查询SELEC简单查询分组与汇总 分组筛选格式:HAVING 逻辑表达式【例6-20】统计Customer表中非大户类型客户,且客户数超过1的最早注册日期、最晚注册日期以及客户数目。SELECT

21、CType AS 类型,MAX(CRegistrationDate ) AS 最早注册,MIN(CRegistrationDate) AS 最后注册,COUNT(CName) AS 客户数FROM Customer WHERE CType大户GROUP BY CTypeHAVING COUNT(CName)1GO第六章 SELECT数据查询SELECT数据查询28简单查询分组与汇总 第六章 SELECT数据查询SELEC简单查询排序查询结果 使用ORDER BY子句排序格式:ORDER BY 列名表达式表 ASC|DESC注意:ntext、text、image或xml类型的列,不能用于ORDE

22、R BY子句。空值(NULL)被视为最低的可能值。除非同时指定TOP,否则ORDER BY子句在视图、内联函数、派生表和子查询中无效。ORDER BY子句一定要放在以上所有子句的最后。第六章 SELECT数据查询SELECT数据查询29简单查询排序查询结果 第六章 SELECT数据查询SELE简单查询排序查询结果 使用ORDER BY子句排序【例6-21】查询Customer表中有效客户的客户ID、客户名称、注册日期,并且按注册日期的先后顺序输出。SELECT CID AS 客户ID,CName AS 客户名称,CRegistrationDate AS 注册日期 FROM Customer W

23、HERE CStatus=1ORDER BY CRegistrationDateGO 第六章 SELECT数据查询SELECT数据查询30简单查询排序查询结果 第六章 SELECT数据查询SELE连接查询FROMWHERE子句连接查询 格式:FROM 表名1,表名n WHERE 等值条件指定表名【例6-22】从计费系统数据库中查询出客户ID、客户名称、产品号码、产品名称、客户类型信息。其中客户ID、客户名称、客户类型是Customer表中的字段列CID、CName、CType,产品号码、产品名称是EProduct表中的字段列ENo、EName。SELECT Customer.CID AS 客户

24、ID,CName AS 客户名称, ENo AS 产品号码, EName AS 产品名称,CType AS 客户类型FROM Customer,EProduct WHERE Customer.CID= EProduct.CIDGO第六章 SELECT数据查询SELECT数据查询31连接查询FROMWHERE子句连接查询 第六章 SELE连接查询FROMWHERE子句连接查询 为表指定临时别名格式:表名AS别名【例6-23】同上例,在命令中要求将Customer表和EProduct表的别名分别指定为C和E。SELECT C.CID AS 客户ID,CName AS 客户名称, ENo AS 产品

25、号码, EName AS 产品名称,CType AS 客户类型FROM Customer AS C,EProduct EWHERE C.CID= E.CIDGO第六章 SELECT数据查询SELECT数据查询32连接查询FROMWHERE子句连接查询 第六章 SELE连接查询FROM子句的ANSI连接查询 内连接格式:FORM 表名1 INNER JOIN 表名2 ON 连接表达式功能:从两个表的笛卡儿积中,选出符合连接条件的数据行。等值连接【例6-24】使用内连接完成例6-21。SELECT Customer.CID AS 客户ID,Cname AS 客户名称, ENo AS 产品号码,EN

26、ame AS 产品名称,CType AS 客户类型FROM Customer INNER JOIN EProduct ON Customer.CID= EProduct.CIDGO第六章 SELECT数据查询SELECT数据查询33连接查询FROM子句的ANSI连接查询 第六章 SELEC连接查询FROM子句的ANSI连接查询 内连接自然连接【例6-25】从计费系统数据库中查询出客户ID、客户名称、联系人姓名、联系人职务、产品号码、产品名称、客户类型信息。其中客户ID、客户名称、客户类型是Customer表中的CID、CName、CType列,联系人姓名、联系人职务是Relationer表中的

27、RName、RDuty列,产品号码、产品名称是EProduct表中的ENo、EName列。SELECT C.CID AS 客户ID,CName AS 客户名称, RName AS 联系人, RDuty AS联系人职务, ENo AS 产品号码,EName AS 产品名称, CType AS 客户类型FROM Customer AS C INNER JOIN Relationer AS R ON C.RID=R.RID INNER JOIN EProduct AS E ON C.CID=E.CIDGO 第六章 SELECT数据查询SELECT数据查询34连接查询FROM子句的ANSI连接查询 第

28、六章 SELEC连接查询FROM子句的ANSI连接查询 外连接左外连接格式:FROM 表名1 LEFT OUTER JOIN 表名2 ON 连接表达式【例6-26】从计费系统数据库的Customer和EProduct表中查询出所有客户的客户ID、客户名称、产品号码、产品名称、客户类型信息,包括无效客户的信息。SELECT C.CID AS 客户ID,CName AS 客户名称, ENo AS 产品号码,EName AS 产品名称, CType AS 客户类型FROM Customer AS C LEFT JOIN EProduct AS E ON C.CID=E.CIDGO第六章 SELECT

29、数据查询SELECT数据查询35连接查询FROM子句的ANSI连接查询 第六章 SELEC连接查询FROM子句的ANSI连接查询 外连接右外连接格式: FROM 表名1 RIGHT OUTER JOIN 表名2 ON 连接表达式全外连接格式: FROM 表名1 FULL OUTER JOIN 表名2 ON 连接表达式第六章 SELECT数据查询SELECT数据查询36连接查询FROM子句的ANSI连接查询 第六章 SELEC连接查询FROM子句的ANSI连接查询 交叉连接格式1 :FROM 表名1 CROSS JOIN 表名2格式2 :FROM 表名1,表名2第六章 SELECT数据查询SEL

30、ECT数据查询37连接查询FROM子句的ANSI连接查询 第六章 SELECSELECT数据查询培训课件子查询子查询 单列单值查询:如果子查询的字段列表只有一项,而且子查询结果只返回一个值时,称为单列单值子查询。【例6-27】从EProduct表中查询客户名称为“新大白宾馆”的产品号码、产品名称和购买日期。SELECT ENo AS 号码,EName AS 名称,EJoinDate AS 购买日期FROM EProductWHERE CID=(SELECT CID FROM Customer WHERE CName= 新大白宾馆)GO第六章 SELECT数据查询SELECT数据查询39子查询子

31、查询 第六章 SELECT数据查询SELECT数据子查询子查询 单列多值子查询:NOT IN子查询格式:列名 NOT IN(子查询)功能:判断列名的值(不)被包含在子查询结果集中。【例6-28】从Relationer表中查询客户注册时间在2006年之后的联系人姓名、职务和电话号码。SELECT RName AS 姓名,RDuty AS 职务,RTelephone AS 联系电话FROM RelationerWHERE RID IN (SELECT RID FROM Customer WHERE CRegistrationDate=2006/1/1)GO第六章 SELECT数据查询SELECT数

32、据查询40子查询子查询 第六章 SELECT数据查询SELECT数据子查询子查询 单列多值子查询:比较子查询关键字ALL格式:列名 比较符 All(子查询)功能:判断当列名的值在关系上满足子查询中的每一个值时,逻辑表达式的值为真,否则为假。【例6-29】查询Customer表的客户ID与联系人ID不相等的客户联系人的联系人姓名、职务和电话号码。SELECT RName AS 姓名,RDuty AS 职务,RTelephone AS 联系电话 FROM RelationerWHERE RIDALL (SELECT RID FROM Customer WHERE CID=RID)GO第六章 SEL

33、ECT数据查询SELECT数据查询41子查询子查询 第六章 SELECT数据查询SELECT数据子查询子查询 单列多值子查询:比较子查询关键字ANY格式:列名 比较符 ANY(子查询)功能:判断当列名的值在关系上满足子查询中的任何一个值时,逻辑表达式的值为真,否则为假。如上例6-28,可以使用如下代码实现:SELECT RName AS 姓名,RDuty AS 职务,RTelephone AS 联系电话 FROM RelationerWHERE RID=ANY (SELECT RID FROM Customer WHERE CRegistrationDate=2006/1/1)GO第六章 SE

34、LECT数据查询SELECT数据查询42子查询子查询 第六章 SELECT数据查询SELECT数据子查询子查询 多列多值子查询:格式:NOT EXISTS(子查询)功能:关键词EXISTS表示,当子查询的结果不为空集(存在)时,返回逻辑真值,否则(不存在)返回逻辑假值。NOT EXISTS与EXISTS则相反。注意:NOT EXISTS关键字前没有列名、常量或表达式。由NOT EXISTS关键字引入的子查询的字段列表通常都是*。第六章 SELECT数据查询SELECT数据查询43子查询子查询 第六章 SELECT数据查询SELECT数据子查询子查询 多列多值子查询:【例6-30】查询Custo

35、mer表的客户ID与联系人ID不相等的客户联系人的联系人姓名、职务和电话号码。SELECT RName AS 姓名,RDuty AS 职务, RTelephone AS 联系电话 FROM RelationerWHERE EXISTS (SELECT * FROM Customer WHERE Relationer.RID=RID AND CType=商业)GO第六章 SELECT数据查询SELECT数据查询44子查询子查询 第六章 SELECT数据查询SELECT数据联合查询集合并运算UNION 格式:SELECT语句1 UNION ALL SELECT语句2 UNION 功能:实现集合并操

36、作。即将两个或更多查询的结果合并为单个结果集,该结果集包含集合查询中所有查询的全部行。用UNION、EXCEPT和 INTERSECT运算联合的查询语句必须满足以下准则:(1) 各SELECT后的列名数目必须相同。(2) 各SELECT后所对应的列都必须具有相同的数据类型。第六章 SELECT数据查询SELECT数据查询45联合查询集合并运算UNION 第六章 SELECT数据查询联合查询集合并运算UNION 格式:SELECT语句1 UNION ALL SELECT语句2 UNION 功能:实现集合并操作。即将两个或更多查询的结果合并为单个结果集,该结果集包含集合查询中所有查询的全部行。用UNION、EXCEPT和 INTERSECT运算联合的查询语句必须满足以下准则:(1) 各SELECT后的列名数目必须相同。(2) 各SELECT后所对应的列都必须具有相同的数据类型。第六章 SELECT数据查询SELECT数据查询46联合查询集合并运算UNION 第六章 SELECT数据查询联合查询集合并运算UNION 【例6-31】查询联系人电话号码或客户产品号码是以133开头的信息。SELECT RID,RTelephone FROM Relationer WHERE RTelephone LIKE 133%UNION ALLSELECT CID,ENo FROM

温馨提示

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

评论

0/150

提交评论