Oracle sql语句学习

  转载请声明来自http://www.cnblogs.com/ulli/archive/2012/02/27/2369882.html

1: Oracle中双引号与单引号的区别

             Oracle中的单引号用来表示字符串常量,常用在这些位置

                  1: where 条件判断里面,作为字符串常量。 

                              

             1 SELECT    last_name,hire_date
2 FROM employees
3 WHERE last_name = 'yinyunan'

                 2: 作为查询的结果或者 作为一列 放在SELECT 列表后面

                          

         1 SELECT   last_name || ' is a ' || job_id AS "Details",
       2 'Literal String '
       3 FROM employees;

           单引号的字符串不能使用的地方: 

                1: 作为列名或列的别名

           Oracle中双引号则常常用在列明或列的别名。

 

2: Oracle函数介绍

        a:  单行函数(数据中每一行只返回一个结果,会操作结果中的每一行数据)

                a1:  字符串函数,接收字符型参数,返回类型为字符型或数值型。

                a2:  数字型函数,接收数字型参数,返回数字型。

                a3:  日期型函数,处理日期型数据,

                       所有函数军返回Date类型(MONTHS_BETWEEN()函数除外)

                a4:  转换函数,负责数据类型键的转换。

                a5:  通用函数,常用的函数。

      b:  多行函数   

 

3: Oracle中组函数相关

      1:  执行顺序为 where、group by、having、order by;

      2:如果在select中为列去了别名,那么只能在order by中使用,where、group by、having中都不能使用

      3:如果select中包含了组函数,那么select中不能出现其他的列,除非,该列出现在group by中。 

 

4: Oracle表别名引用的范围

    1: 别名存在的可用范围只在该select语句块中。

    2: 由上可以推知,在子查询块中能够使用外查询的别名,而在外查询中,不能使用子查询中的别名和标明,贴代码

            

       1 SELECT  employee_id,last_name
       2 FROM employees e1
       3 WHERE employee_id IN (
       4 SELECT employee_id
       5 FROM employees e2)


    在此处,子查询可以访问外查询的表,即employees(e1),而外查询不能访问子查询的表(e2)

5:  Oracle中的子查询相关

     1:若子查询当中存在空值,则应该注意使用 NOT IN等 与集合所有元素相关的操作(ALL ANY),见代码

      1 SELECT  last_name
      2 FROM employees
      3 WHERE employee_id NOT IN(
      4 SELECT manager_id
      5 FROM employees)

     此处,如果子查询返回的结果中包含null值得话,该查询将得不到任何结果,

     因为not in会导致外查询与集合里面的值都进行比较,而

     任何值和null比较都为null,这样的话,外where判断总是为null

     此处的解决办法是,在子查询中加入where判断,manager_id是否为空

     

原文地址:https://www.cnblogs.com/ulli/p/2369882.html