zoukankan      html  css  js  c++  java
  • orcale 之 SQL 数据查询

      从数据库中检索行,并允许从一个或多个表中选择一个或多个行或列。虽然 SELECT 语句的完整语法较复杂,但是其主要的子句可归纳如下:
      
    SELECT select_list
    [ INTO new_table ]
    FROM table_source
    [ WHERE search_condition ]
    [ GROUP BY group_by_expression ]
    [ HAVING search_condition ]
    [ ORDER BY order_expression [ ASC | DESC ] ]

      SELECT 子句

        指定由查询返回的列。
        语法
    SELECT [ ALL | DISTINCT ]
         [ TOP n [ PERCENT ] ]

      ALL 指定在结果集中可以显示重复行。ALL 是默认设置。DISTINCT 指定在结果集中只能显示唯一行。为了 DISTINCT 关键字的用途,空值被认为相等。TOP n [PERCENT] 指定只从查询结果集中输出前 n 行。

    select * from emp;

      INTO 子句

        创建新表并将结果行从查询插入新表中。
        用户若要执行带 INTO 子句的 SELECT 语句,必须在目的数据库内具有 CREATE TABLE 权限。
        语法
    [ INTO new_table ]

      FROM 子句

        指定从其中检索行的表。需要 FROM 子句,除非选择列表只包含常量、变量和算术表达式(没有列名)。
        语法
    [ FROM { < table_source > } [ ,...n ] ]
        table_source 根据选择列表中的列和 WHERE 子句选择的行,指定要创建的新表名。new_table 的格式通过对选择列表中的表达式进行取值来确定。new_table 中的列按选择列表指定的顺序创建。new_table 中的每列有与选择列表中的相应表达式相同的名称、数据类型和值。

      WHERE 子句

        指定用于限制返回的行的搜索条件。
        语法
    [ WHERE < search_condition > | < old_outer_join > ]

      GROUP BY 子句

        指定用来放置输出行的组,并且如果 SELECT 子句 <select list> 中包含聚合函数,则计算每组的汇总 值。指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。
        说明  如果未指定 ORDER BY 子句,则使用 GROUP BY 子句不按任何特定的顺序返回组。建议始终使用 ORDER BY 子句指定具体的数据顺序。
        语法
    [ GROUP BY group_by_expression [ ,...n ]]

        例子:

      1. 统计各个部门的员工的工资的总和
        select deptno ,sum(sal) 
        from emp 
        group by deptno;
      2. 统计各个部门各个职业的员工的工资的总和 
        select deptno,job,sum(sal) 
        from emp 
        group by(deptno,job) 
        order by deptno; 
     select job from emp group by job;

      HAVING 子句

        指定组或聚合的搜索条件。HAVING 通常与 GROUP BY 子句一起使用。如果不使用 GROUP BY 子句,HAVING 的行为与 WHERE 子句一样。
        语法
    [HAVING <search_condition>]
        search_condition 指定组或聚合应满足的搜索条件。当 HAVING 与 GROUP BY ALL 一起使用时,HAVING 子句替代 ALL。HAVING 子句与组有关,WHERE 子句与单个列有关。
        例子:
        统计各个部门的员工的工资的总和,且工资总和必须在10000以上
        
    select deptno ,sum(sal) 
    from emp 
    group by deptno 
    having sum(sal)>10000;

      ORDER BY 子句

        指定结果集的排序。除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。
        语法
    [ ORDER BY { order_by_expression [ ASC | DESC ] }    [ ,...n ] ]
        order_by_expression 指定要排序的列。可以将排序列指定为列名或列的别名(可由表名或视图名限定)和表达式,或者指定为代表选择列表内的名称、别名或表达式的位置的负整数。
        可指定多个排序列。ORDER BY 子句中的排序列序列定义排序结果集的结构。
  • 相关阅读:
    Fractions Again?! UVA
    Maximum Product UVA
    Investigating Div-Sum Property UVA
    Period UVALive
    Numbers That Count POJ
    Orders POJ
    小明的数列
    Spreading the Wealth uva 11300
    Play on Words UVA
    第二百七十天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/brother-four/p/6407822.html
Copyright © 2011-2022 走看看