码迷,mamicode.com
首页 > 数据库 > 详细

SQL语言 之 数据查询

时间:2016-08-27 12:41:03      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:

  在Oracle 数据库中,SELECT 语句的基本语法为:

SELECT [ALL|DISTINCT] column_name [,expression...]
FROM table1_name [, table2_name, view_name, ...]
[ WHERE condition ]
[ GROUP BY column1_name [, column2_name , ...] ]
[ HAVING group_condition ]
[ ORDER BY column1_name [ ASC | DESC ] [, column2_name , ...]]

一、基本查询

  1、无条件查询

  [1] 查询所有列 :可以用“*”表示目标列;

  [2] 查询指定列;

  [3] 使用算是表达式:如 column1 * 8;

  [4] 使用字符常量:如 ‘ name ‘;

  [5] 使用函数:如 UPPER(column1);

  [6] 使用列名别名:在列名后加“ 空格 ”或者“ AS ”,再加别名;

  [7] 使用连接字符串:使用“ || ”来连接字符串;

  [8] 消除重复行:使用“ DISTINCT ”去除重复行记录。

  2、有条件查询

  2.1 关系运算:=、>、<、>=、<=、<>、!=

  2.1 确定范围:BETWEEN...AND... 和 NOT BETWEEN...AND...

  2.3 确定集合:IN 和 NOT IN

  2.4 字符匹配:LIKE 和 NOT LIKE,有 “ % ” 和 “ _ ”两个通配符。

  [1] %:代表0个或多个任意字符;

  [2] _:代表单个任意字符;

  2.5 控制判断:IS NULL 和 IS NOT NULL;

  2.6 逻辑操作:NOT、AND、OR,优先级 NOT > AND > OR

  3、查询排序

  3.1 单列升序、降序排序:ASC 或 DESC;

  3.2 多列排序:

  当按多个列或多个表达式排序时,先按第一列或表达式排序,当排序后第一列或表达式的数据向同时,相同的数据以第二列或表达式进行排序,以此类推。

  3.3 按表达式排序:如 column1 * 8;

  3.4 使用列明别名排序;

  3.5 使用列位置编号排序:位置编号为列名 或 表达式在SELECT子句中的位置编号(从1开始)。

  如果使用 UNION、INTERSECT、MINUS等集合查询,且目标列名不同,必须使用列位置排序。

  4、查询统计

  通常使用内置的聚集函数(又称分组函数,聚合函数)实现。

  常用聚集函数:

  COUNT(* [| num ]):返回结果集中所有记录个数(包括NULL);

  COUNT([DISTINCT | ALL] column):返回结果集中非空记录个数(不包括NULL);

  AVG([DISTINCT | ALL] column):返回列或表达式的平均值(忽略NULL);

  MAX([DISTINCT | ALL] column):返回列或表达式的最大值(忽略NULL);

  MIN([DISTINCT | ALL] column):返回列或表达式的最小值(忽略NULL);

  SUM([DISTINCT | ALL] column):返回列或表达式的总和(忽略NULL);

  STDDEV(column):返回列或表达式的标准差;

  VARIANCE(column):返回列或表达式的方差;

  使用聚集函数注意:

  [1] 除了COUNT(* [ | num ] )函数外,其他的统计函数都不考虑返回值或表达式为NULL的情况;

  [2] 聚集函数只能出现在 SELECT子句作为目标列表达式、ORDER BY 子句、HAVING 子句中,不能出现在WHERE子句和GROUP BY 子句中;

二、分组查询

  基本语法:

SELECT column,group_function, ...
FROM table
[ WHERE condition ]
[ GROUP BY [ ROLLUP | CUBE | GROUPING SETS] group_by_expression ]
[ HAVING group_condition ]
[ ORDER BY column [ ASC | DESC ] ]

  注意:

  [1] GROUP BY 子句 用于指定分组列或分组表达式。

  [2] HAVING 子句用于限制分组的返回结果。

  [3] WHERE 子句是对表中的记录进行过滤,而HAVING子句是对分组后形成的组进行过滤。

  [4] 在分组查询中,SELECT子句后面的所有目标列或目标表达式只能为:分组列、分组表达式、聚合函数。

  1、单列分组查询;

  2、多列分组查询;

  3、HAVING 子句限制返回组;

  4、 ROLLUP 和 CUBE 选项

  [1] ROLLUP :可以生成横向统计和不分组统计;

  如:查询各个部门中各个工种的平均工资、每个部门的平均工资和所有员工的平均工资。

  [2] CUBE:可以生成横向统计、纵向统计和不分组统计。

  如:查询各个部门中各个工种的平均工资、每个部门的平均工资、每个工种的平均工资和所有员工的平均工资。

  5、合并分组查询:讲几个单独的分组查询合并成一个分组查询。在GROUP BY 子句中使用 GROUPING SETS。

  

SQL语言 之 数据查询

标签:

原文地址:http://www.cnblogs.com/xinaixia/p/5812609.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!