• 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是否为空

         

  • 相关阅读:
    Gradle中的buildScript,gradle wrapper,dependencies等一些基础知识
    在liferay 7中如何删除service builder已经生成的数据库table
    settings.gradle与build.gradle有什么区别
    如何建一个Liferay 7的theme
    如何在IDE的开发环境中启动Studio和本地build出一个product
    Lunix文件的读写权限问题
    liferay 7用OSGi的方式修改默认权限
    Liferay 7 module项目的依赖问题
    城市选择
    2016/04/26 流程 数据库lcdb 四个表 1,用户表users 2,流程表(设定有哪些流程)liucheng 3,流程发起者表(记录谁发起到哪里) 4,流程经过的人员表 flowpath (order排序)
  • 原文地址:https://www.cnblogs.com/ulli/p/2369882.html
Copyright © 2020-2023  润新知