zoukankan      html  css  js  c++  java
  • 学习资料 数据查询语言DQL

    数据查询语言DQL介绍及其应用:

    查询是SQL语言的核心,SQL语言只提供唯一一个用于数据库查询的语句,即SELECT语句。用于表达SQL查询的SELECT语句是功能最强也是最复杂的SQL语句,它提供了很多选项和使用方法。SELECT语句的命令格式如下: SELECT查询语句是由七个子句构成,其中SELECT和FROM

     

    查询是SQL语言的核心,SQL语言只提供唯一一个用于数据库查询的语句,即SELECT语句。用于表达SQL查询的SELECT语句是功能最强也是最复杂的SQL语句,它提供了很多选项和使用方法。SELECT语句的命令格式如下:

    SELECT查询语句是由七个子句构成,其中SELECT和FROM子句是一个完整SELECT查询语句必须要有的,其它的子句可以根据具体需要任选。上述的每个子句功能说明如下:

    (1)SELECT子句

    列出所有要求SELECT语句进行检索的数据项,这些项可能取自数据库中关系表的列,也可以是SQL在执行查询时进行计算的表达式。这里的ALL和DISTINCT选项,表示查询出的结果中是否容许有内容重复的行出现,缺省时是ALL项,表示容许有重复的行出现,而*则表示查询出所指定关系表中所有的列。

    (2)FROM子句

    FROM子句列出包含所要查询的数据关系表。

    (3)WHERE子句

    WHERE子句告诉SQL只查询某些关系表中满足一定要求的行的数据,查询要求由WHERE子句中的查询条件确定。

    (4)GROUP BY子句

    GROUP BY子句指定当前查询是汇总查询,即不是对根据每行产生一个查询结果,而是对相似的行进行分组,然后再对每组产生一个汇总查询的结果。

    (5)HAVING子句

    HAVING子句告诉SQL只对由GROUP BY所得到的某些行组的结果进行过滤,选择出满足分组条件的分组。

    (6)ORDER BY子句

    ORDER BY子句确定是否将查询出的结果按一列或多列中的数据进行排序,缺省时是不排序的。

    (7)INTO子句

    INTO子句确定是否将查询出的结果存入一张新的关系表中,缺省时只将查询出现的结果显示在屏幕上。这是非标准SELECT语句中的子句,但目前绝大多数实际应用的SQL数据库系统的SQL语言提供了这一选项。

    下面是一些使用SELECT查询语句进行数据查询的示例。

    例1:列出销售额超过6000元的销售人员的姓名、销售目标和超过销售目标的销售额。

    SELECT NAME,QUOTA,(SALES_QUOTA)

    FROM SALESREPS

    WHERE SALES>6000

    例2:查出1999年最后一个季度的订单情况。

    SELECT ORDER_NUM,ORDER_DATE,PRODUCT,AMOUNT

    FROM ORDERS

    WHERE ORDER_DATE BETWEEN "01-OCT-99" AND "31-DEC-99"

    例3:查出名称是以ABC开头的产品订单情况。

    SELECT ORDER_NUM,ORDER_DATE,PRODUCT,AMOUNT

    FROM ORDERS

    WHERE PRODUCT LIKE "ABC%"

    例4:列出所有的销售处,按区域名字母顺序排列。

    SELECT CITY,REGION

    FROM OFFICE

    ORDER BY REGION ASC

    在这里ASC表示升序,如果表示降序可用DESC。

    例5:列出每个销售人员以及他们工作的城市和区域的情况。

    SELECT NAME,CITY,REGION

    FROM SALESREPS,OFFICE

    WHERE REP_OFFICE=OFFICE

    例6:查出有多少销售员的销售额超过了其目标额,以及他们的销售额总和。

    SELECT COUNT(NAME),SUM(SALES)

    FROM SALESREPS

    WHERE SALES>QUOTA

    注意本例中使用了函数,与前面介绍的查询不同之处在于:它不仅仅是从数据库中查出某些数据,并且对查出的数据进行多种计算处理,并将结果作为查询结果输出。SQL语言提供了6种处理函数,帮助完成不同的处理工作。这6种函数是:

    ▲SUM(),用于计算表中某一列的总和。

    ▲AVG(),用于计算表中某一列的平均值。

    ▲MIN(),用于选择表中某一列的最小值。

    ▲MAX(),用于选择表中某一列的最大值。

    ▲COUNT(),用于计算表中某一列中值的个数。

    ▲COUNT(*),用于计算某张表的行数。

    例7:对于每两个或更多的销售员的销售点,计算其中所有销售员的总销售员的总销售目标值和总销售员金额。

    SELECT CITY,SUM(QUOTA),SUM(SQLESREPS.SALES)

    FROM OFFICE,SALESREPS

    GROUP BY CITY

    HAVING COUNT(*)>=2

    例8:列出哪些所有的销售员已销售了销售点指标50%的销售点和指标。

    SELECT CITY,TARGET

    FROM OFFICE

    WHERE (0.5*TARGET)<ALL(SELECT SALES

    FROM OFFICE

    WHERE REP_OFFICE=OFFICE)

    SELECT查询处理工作过程描述总结:

    ▲形成FROM子句所指定的目标表(表的乘积)。如果FROM子句仅指定一个表,则此表为目标表。

    ▲如果有WEHER子句,则将其搜索条件用于目标表中的每一行,保留使搜索条件为TRUE的行,剔除使搜索条件为FALSE或NULL的行。若WHERE子句中包含另一个SELECT查询语句,先去完成另一个SELECT查询语句操作,然后将其查询结果用到本次查询的搜索条件中,进行检测。

    ▲若有GROUP BY子句,则对目标表中所保留的行进行分组,以使得每组中的各行具有相同的分组列的列值。

    ▲若有HAVING子句,则将其搜索条件作用于每个行组,保留那些使搜索条件为TRUE的组,剔除使搜索条件为FALSE或NULL的行。若HAVING子句中包含另一个SELECT查询语句,先去完成另一个SELECT查询语句操作,然后将其查询结果用到本次查询的HAVING子句搜索条件中,进行检测。

    ▲对于所保留的每一行(或行组),计算由SELECT子句所指定的每项值,对于简单的列指定,取当前行(或行组)中该列的值;对于列函数,若有GROUP BY子句,则用当前行组作为参数;否则,用所有行作为其参数;剔除SELECT子句中没有指定的各列。本文来自编程入门网

    ▲若SELECT子句后选择了DISTINCE,则将所生成结果中的所有内容重复的行剔除掉。

    ▲若有ORDER BY子句,则按相应的排序设置对结果进行排序。

  • 相关阅读:
    JS-得到屏幕宽高、页面宽高
    CSS3-border-radius 属性
    从30岁到35岁:为你的生命多积累一些厚度【转载】
    HTML5-IOS WEB APP应用程序(IOS META)
    HTML-Meta中的viewport指令
    EasyUI-window包含一个iframe,在iframe中如何关闭window
    JS-为句柄添加监听函数
    EasyUI-EasyUI框架入门学习
    Linux下的C编程
    ***经典笔试题
  • 原文地址:https://www.cnblogs.com/zhoudi/p/5579485.html
Copyright © 2011-2022 走看看