[Oracle 学习笔记] 03 单表查询

  SELECT 语句功能强大,语法比较复杂,完整的SELECT 语句有六个子句构成 分别是:

  1. SELECT 子句,指定要获取表中那些列数据。
  2. FROM 子句,指定数据来自哪个(些)表。
  3. WHERE 子句,指定获得那些行数据。
  4. GROUP BY 子句,用于对表中数据进行分组统计。
  5. HAVING 子句,在对表中数据进行分组统计时,指定分组统计条件。
  6. ORDER BY 子句,指定使用哪几列来对结果进行排序。

  其中SELECT子句和FROM子句是必选项,其余子句为可选项。ORDER BY 必须是最后一条子句。

 

  DISTINCT 用于消除重复记录行, SQL> SELECT DISTINCT specialty FROM students; 

 

  列别名SELECT 子句中alias用于指定列或者表达式的别名,如果别名有大小写之分,或者包含特殊字符或空格,那么在这种情况下,别名必须用“”(英文双引号)引上。  SQL> SELECT name AS "姓名", dob AS "生日" FROM students;  可以不加AS。   SELECT 子句中, expression可以使用字符串连接,以显示更有意义的查询结构。使用“||”操作符实现字符串连接。连接的字符串要用“”(英文双引号)引上。   SQL> SELECT name||'生日是: '|| dob AS “学生生日清单” FROM students;

 

  空值(NULL)参与运算,如果NULL出现在算数表达式中,其运算结构也为NULL;如果NULL出现在字符串连接表达式中,ORACLE将其作为空串,即等价于零个字符。下面讨论NULL出现在算数表达式中的处理方法。

  1. NVL()函数,语法格式为  NVL(expr1, expr2)  其中,expr1和expr2为函数参数表达式,可以使任意ORACLE内部数据类型,但是expr1与expr2的数据类型必须要匹配,NVL()函数的功能为:如果参数表达式expr1值为NULL,则NVL()函数返回参数表达式expr2的值;如果参数表达式expr1值不为NULL,则NVL()函数返回参数表达式expr1的值。
  2. 函数NVL2(), 语法格式为:NVL2(expr1,expr2,expr3)  其中,expr1、expr2、expr3为函数参数表达式,去Oracle内部数据类型,但是expr2和expr3的数据类型必须要与expr1 的数据类型匹配。NVL2()函数的功能为:如果参数表达式expr1值为NULL, 则NVL2()函数返回参数表达式expr3的值;如果expr1的值不为NULL,则NVL2()返回参数表达式expr2的值。
  3. 函数COALESCE() 语法格式为:COALESCE(expr1 [, expr2...]);  expr1  expr2 ...为函数参数表达式,去Oracle内部数据类型。COALESCE()函数的功能为:返回参数列表中的第一个非控制,如果所有的表达式是空值,最终将返回一个空值。

条件查询

  IN  IN后面加小括号括起来的列表,如果在列表中就符合条件: SQL>SELECT name, hire_date, title, bonus FROM teachers WHERE bonus IN (500, 600);

  BETWEEN ... AND    LIKE   (%  _)    IS NULL

  复合条件  AND OR NOT  优先级  NOT 最高  AND 其次  OR 最低

  记录排序  ORDER BY   升序ASC  降序 DESC   默认是升序

 

 

  分组查询  SELECT <expression1 [AS alias1], ...> FROM table [WHERE condition(s)] [GROUP BY expression1, ...] [HAVING condition(s)];

  列函数

列(Aggregate)函数 功能描述
用于字符、数值、日期型数据的列函数  
MAX(column) 列中最大值
MIN(column) 列中最小的值
用于字符、数值、日期型数据的列函数  
COUNT(*) 表中行的总数
COUNT(column) 列不为NULL的行
COUNT(distinct column) column指定列中相异值的数量
只用于数值型数据的列函数  
SUM(column) 列中所有值的总和
AVG(column) 列中所有值的平均值
STDDEV(column) 列的标准偏差
VARIANCE(column) 列的方差

除了COUNT(*)以外,其他的列函数都不考虑列或者表达式中为NULL的行。

posted @ 2012-12-07 18:45  liangflying  阅读(354)  评论(0编辑  收藏  举报