第4章数据查询ppt课件_第1页
第4章数据查询ppt课件_第2页
第4章数据查询ppt课件_第3页
第4章数据查询ppt课件_第4页
第4章数据查询ppt课件_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、第4章 数据查询 数据库将数据合理地组织在一同。数据查询那么是从数据库中检索符合条件的数据记录的选择过程,它是数据库中一个最常用的操作。本章要点: 4.1 SELECT语句 4.2 根本查询 4.3 高级查询 第4章 数据查询 SELECT语句的作用是让数据库效力器根据客户的要求从数据库中搜索出所需求的信息资料,并且可以按规定的格式进展分类、统计、排序,再前往给客户。语法方式为:SELECT ALL|DISTINCT TOP n PERCENT select_list INTO new_table FROM table_name WHERE search_condition GROUP BY

2、group_by_expression HAVING search_condition ORDER BY order_expression ASC | DESC 关键字进入结果集的列源表名第4章 数据查询 当运用SELECT语句时,可以用两种方式来控制前往的数据:选择列和选择行。 选择列就是垂直地划分数据,限制前往结果中的列,这由SELECT语句中的SELECT子句指定要前往的列来控制; 选择行那么是程度地划分数据,限制前往结果中的行,这由SELECT语句中的WHERE子句指定选择条件来控制。 4.2.1 选择列 1指定列 SELECT column_name1,column_name2, F

3、ROM table_name 第4章 数据查询例4-1 我们选择Products表中的产品ID、产品称号ProductName和单价Price三列。USE salesGOSELECT ProductID,ProductName,Price FROM Products 留意:在数据查询时,列的显示顺序由SELECT语句的SELECT子句指定,顺序可以和列定义时顺序不同,这并不影响数据在表中的存储顺序。在查找多列内容时,用,将各字段分开。 第4章 数据查询 2选择一切列 在SELECT子句中可以运用星号*,显示表中一切的列。例4-2 显示Orders表中的一切信息。SELECT *FROM Ord

4、ers 3运用计算列 在SELECT子句中可以运用算术运算符对数值型数据列进展加+、减-、乘*、除/和取模%运算,构造计算列。 第4章 数据查询例4-3 从Products表中检索出产品IDProductID、产品称号ProductName、产品单价Price、产品库存量Stocks及产品的总价值,查询如图4-2所示。SELECT ProductID,ProductName,Price,Stocks,Price*Stocks FROM Products 例4-4 从pubs数据库的authors表查询作者的姓和名,以及作者所居住的州和城市的名字,查询结果如图4-3所示。USE pubsGOSE

5、LECT au_lname+.+au_fname,city+,+state FROM authors 第4章 数据查询 4添加阐明列 为了添加查询结果的可读性,可以在SELECT子句中添加一些阐明列,添加的阐明文字串需用单引号括起来。例4-5 从pubs数据库的publishers表中查询出版商ID及出版商名字,查询结果如图4-4所示。SELECT pub_id,publisher name is: ,pub_nameFROM publishers 5改动列标题 假设我们想改动查询结果中所显示的列标题,可以在SELECT语句中运用列标题列名 或 列名 AS 列标题两种方法。 第4章 数据查询例

6、4-6 为例4-3中的计算列指定一个列标题“总价值。SELECT ProductID,ProductName,Price, Stocks,total cost=Price*StocksFROM Products例4-7 按如下格式显示销售员信息。SELECT SaleName AS 姓名,Sex AS 性别, Birthday AS 出生日期,Address AS 地址FROM Salers 第4章 数据查询4.2.2 4.2.2 选择行选择行 运用运用WHEREWHERE子句的目的是从表中挑选出子句的目的是从表中挑选出符合条件的行,其语法方式如下:符合条件的行,其语法方式如下:SELECT

7、column_name1,column_name2,SELECT column_name1,column_name2,FROM table_nameFROM table_nameWHERE search_conditionWHERE search_condition :定义查询条件。:定义查询条件。 SQL ServerSQL Server支持的查询条件包括比较运支持的查询条件包括比较运算、逻辑运算、模糊匹配、范围、列表、以及能算、逻辑运算、模糊匹配、范围、列表、以及能否为空。否为空。第4章 数据查询 1运用比较运算符 WHERE子句中允许运用的比较运算符包括: 例4-8 查询Products

8、表中价钱小于5的产品记录。 SELECT ProductID,ProductName,PriceFROM products WHERE Price=5.0 AND Price200的产品数量。SELECT COUNT(ProductID) FROM Products WHERE Stocks200例4-36 统计Products表中的产种类数。SELECT COUNT(*) FROM Products第4章 数据查询 2运用分组汇总子句 当需求显示分组的汇总数据时,就应运用GROUP BY子句。该子句的功能是根据指定的列将表中数据分成多个组后进展汇总。其语法格式为:SELECT column_

9、name1,nFROM table_nameWHERE search_conditionGROUP BY ALL colum_name1,n HAVING search_condition 例4-37 将Products表中的数据按CategoryID进展分组,然后分别统计每一组产品的平均价钱及总库存。第4章 数据查询SELECT CategoryID,AVG(Price) AS 平均价钱, SUM(Stocks) AS 总库存 FROM Products GROUP BY CategoryID 留意:运用GROUP BY子句为每一个组产生一个汇总结果,每个组只前往一行,不前往详细信息。SEL

10、ECT子句中指定的列必需是GROUP BY子句中指定的列,或者是和聚合函数一同运用。假设包含WHERE子句,那么只对满足WHERE条件的行进展分组汇总。假设GROUP BY子句运用关键字ALL,那么WHERE子句将不起作用。HAVING子句可进一步排除不满足条件的组 第4章 数据查询例4-38 在上例根底上只显示平均价钱低于10元的分组汇总信息。SELECT CategoryID,AVG(Price) AS 平均价钱, SUM(Stocks) AS 总库存 FROM ProductsGROUP BY CategoryID HAVING AVG(Price)5GROUP BY CategoryI

11、D HAVING AVG(Price)15假设GROUP BY子句中指定了多个列,那么表示要基于这些列的独一组合来进展分组。在分组过程中,首先按第一列进展分组并按升序陈列,然后再按第二列进展分组并按升序陈列,依次类推,最后在分好的组中进展汇总。 第4章 数据查询 2运用明细汇总子句 运用GROUP BY对查询出来的数据作分类汇总后,只能显示统计结果,看不到详细的数据。运用COMPUTE和COMPUTE BY子句既能阅读详细数据又可看到统计的结果。其语法方式为:COMPUTE affregate_function(column_name),n BY column_name ,n 其中:affre

12、gate_function表示聚合函数。第4章 数据查询例4-40 运用COMPUTE子句对一切订单订购产品数量进展明细汇总。SELECT OrderID,ProductID,QuantityFROM OrderDetailsCOMPUTE sum(Quantity)例4-41 用COMPUTE BY子句按订单号汇总出OrderDetails表中每个订单订购产品的数量。SELECT OrderID,ProductID,Quantity FROM OrderDetailsORDER BY OrderIDCOMPUTE SUM(Quantity)BY OrderID第4章 数据查询留意:COMPU

13、TE BY 子句不能与SELECT INTO子句一同运用。COMPUTE子句中的列必需出如今SELECT子句的列表中。COMPUTE BY表示按指定的列进展明细汇总,运用BY关键字时必需同时运用ORDER BY子句,并且COMPUTE BY后出现的列必需具有与ORDER BY后出现的列一样的顺序,且不能跳过其中的列。例如:假设ORDER BY子句按照如下顺序指定排序列:ORDER BY CategoryID,Price,Stocks那么COMPUTE BY后的列表只能是下面任一种方式:BY CategoryID,Price,StocksBY CategoryID,PriceBY Categor

14、yID第4章 数据查询4.3.3 4.3.3 嵌套查询嵌套查询 所谓嵌套查询指的是在一个所谓嵌套查询指的是在一个SELECTSELECT查询内再查询内再嵌入一个嵌入一个SELECTSELECT查询。外层的查询。外层的SELECTSELECT语句叫外部语句叫外部查询,内层的查询,内层的SELECTSELECT语句叫子查询。语句叫子查询。 运用子查询时需留意:运用子查询时需留意:子查询可以嵌套多层。子查询可以嵌套多层。子查询需用圆括号括起来。子查询需用圆括号括起来。子查询中不能运用子查询中不能运用COMPUTE BY COMPUTE BY 和和INTOINTO子句。子句。子查询的子查询的SELEC

15、TSELECT语句中不能运用语句中不能运用imageimage、texttext或或ntextntext数据类型数据类型 第4章 数据查询 1子查询前往值类型为单值单列例4-43 查询订单ID为10249的顾客信息。SELECT CustomerID,CompanyName,ConnectName, Address,ZipCode,TelephoneFROM CustomersWHERE CustomerID=( S E L E C T C u s t o m e r I D F R O M O r d e r s W H E R E OrderID=10249) 该子查询的执行过程:首先对子

16、查询求值仅一次,求出OrderID为10249CustomerID为c02,然后作外部查询,外部查询依赖于子查询的结果。 第4章 数据查询例4-44 显示一切价钱高于平均价钱的产品。SELECT *FROM ProductsWHERE Price(SELECT avg(Price) FROM Products) 假设子查询中前往的是单列多值,那么必需在子查询前运用关键字ALL或ANY,否那么系统会提示错误信息。 第4章 数据查询例4-45 查询订单ID为10248的所订购的产品信息。SELECT *FROM ProductsWHERE ProductID =ANY(SELECT Product

17、ID FROM OrderDetails WHERE OrderID=10248)例4-46 试比较以下两个查询语句的不同。SELECT Stocks FROM ProductsWHERE StocksALL(SELECT Stocks FROM Products)SELECT Stocks FROM ProductsWHERE StocksANY(SELECT Stocks FROM Products)第4章 数据查询 2子查询前往值类型为单列多值 当子查询的结果是单列多值时,除了运用关键字ALL或ANY之外,还经常运用关键字IN或NOT IN。IN表示属于关系,即能否在子查询的结果集中。N

18、OT IN那么表示不属于集合或不是集合的成员。例4-47 修正例4-45运用关键字IN。SELECT *FROM ProductsWHERE ProductID IN(SELECT ProductID FROM OrderDetails WHERE OrderID=10248) 第4章 数据查询例4-48 显示没有订购过P03001产品的顾客ID。SELECT CustomerID FROM OrdersWHERE OrderID NOT IN( SELECT OrderID FROM OrderDetails WHERE ProductID=p03001) 3带关键字 NOT EXISTS的

19、子查询 在WHERE子句中运用EXISTS关键字,表示判别子查询的结果集能否为空,假设子查询至少前往一行时,WHERE子句的条件为真,前往TRUE;否那么条件为假,前往FALSE。加上关键字NOT,那么刚好相反。 第4章 数据查询例4-49 运用关键字EXISTS。USE pubsGOSELECT pub_nameFROM publishersWHERE EXISTS(SELECT * FROM publishers WHERE city=paris)运用EXISTS引入的子查询需留意:EXISTS关键字前面没有列名、常量或其他表达式。由EXISTS引入的子查询的选择列表通常几乎都是由*组成,

20、这是由于,只是测试能否存在符合子查询中指定条件的行,所以不用列出列名。 第4章 数据查询4.3.4 4.3.4 合并数据集合并数据集 在在SELECTSELECT语句中,运用语句中,运用UNIONUNION子句可以把两个子句可以把两个或多个或多个SELECTSELECT语句查询的结果组合成一个结果集。语句查询的结果组合成一个结果集。语法方式:语法方式:S E L E C T _ s t a t e m e n t 1 U N I O N A L L S E L E C T _ s t a t e m e n t 1 U N I O N A L L SELECT_statement2 SELEC

21、T_statement2 例例4-50 4-50 用用UNIONUNION子句将子句将CustomersCustomers表中顾客表中顾客IDID、姓名及姓名及SalersSalers表中销售人员的表中销售人员的IDID、姓名组合在一、姓名组合在一个结果集中。个结果集中。SELECT CustomerID,ConnectNameSELECT CustomerID,ConnectNameFROM CustomersFROM CustomersUNIONUNIONSELECT SaleID,SaleNameSELECT SaleID,SaleNameFROM SalersFROM Salers第4章 数据查询留意:一切查询中的列的数量必需一样,数据类型必需兼容,且顺序必需一致。列名来自第一个SELECT语句。运用关键字ALL,将保管结果集中的一切的行,包括反复行。假设没有指定关键字ALL,系统自动删除反复行。 第4章 数据查询4.3.5 4.3.5 在查询的根底上创建新表在查询的根底上创建新表 在对表进展查询时,可以运用在对表进展查询时,可以运用INTOINTO子句将查子句将查询结

温馨提示

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

评论

0/150

提交评论