zoukankan      html  css  js  c++  java
  • Oracle 查询基础

    Oracle SELECT示例

    为了方便大家更加了解和掌握Oracle Select语句,下面为大家带来一些示例代码。
     
    1. 查询单个列的数据
    要从客户(customers)表中获取客户名称(name)列,请使用以下语句:
    2. 查询多个列的数据
    要从多个列查询数据,请指定一个以逗号分隔的列名称列表。
     
    3. 查询表中所有列的数据
    以下示例将检索customers表的所有列中的数据,列出所有列的名称,如下所示:
     
     

    Oracle Order By用法详解

    在Oracle中,ORDER BY子句可以用来对一列或多列的结果集按升序或降序进行排序。本文,将为大家带来ORDER BY子句的具体用法。
     

    Oracle ORDER BY子句基本用法

    在Oracle中,表中是以非指定顺序存储行数据记录的,它不管行插入数据库的顺序如何。要按列以升序或降序查询行记录,必须明确指示Oracle数据库要如何去排序。
     
    例如,您可能希望按名称的字母顺序列出所有客户,或者按照从最低到最高信用限额的顺序显示所有客户。
     
    要对数据进行排序,我们可以将ORDER BY子句添加到SELECT语句中,参考以下语法:
     
    SELECT
        column_1,
        column_2,
        column_3,
        ...
    FROM
        table_name
    ORDER BY
        column_1 [ASC | DESC] [NULLS FIRST | NULLS LAST],
        column_1 [ASC | DESC] [NULLS FIRST | NULLS LAST],
    要按列排序结果集,可以在ORDER BY子句之后列出该列。
     
    按照列名是一个排序顺序,可以是:
    • ASC表示按升序排序
    • DESC表示按降序排序
    默认情况下,无论是否指定ASC,ORDER BY子句都按升序对行进行排序。如果要按降序对行进行排序,请明确使用DESC。
     
    NULLS FIRST在非NULL值之前放置NULL值,NULLS LAST在非NULL值之后放置NULL值。
    ORDER BY子句可以按多列对数据进行排序,每列可能有不同的排序顺序。
     
    请注意,ORDER BY子句总是SELECT语句中的最后一个子句。
     
     

    1. 按列排序行示例

    要按照字母顺序按升序排列客户名称,请使用以下语句:
     
    要按字母顺序降序排列客户名称,请在ORDER BY子句中的列名之后显式使用DESC,如下所示:
     

    2. 按多个列排序行示例

    要对多列进行排序,可以用逗号分隔ORDER BY子句中的每列。
     
     
     
    在上面的这个结果中:
     
    首先,按job进行升序排序。
    其次,如果job相同,按ename 降序排列
     
     

    3. 按列位置排序行示例

    不需要指定用于排序数据的列名称。如果您愿意,可以使用ORDER BY子句中列的位置。
     
    请参考下语句:
     
    SELECT name, credit_limit,address
    FROM customers
    ORDER BY 2 DESC, 1;
    在这个例子中,name列的位置是1,credit_limit列的位置是2。相当于以下查询语句:
     
    SELECT name, credit_limit,address
    FROM customers
    ORDER BY credit_limit DESC, name;
     

    4.用NULL值排序行的示例

     
     
    当使用非NULL值对混合NULL进行排序时,Oracle允许指定哪个应该首先出现。
    要放置NULL值在后面,可以使用NULLS LAST,如下面的语句所示:
     
     

    5. 按函数或表达式排序数据

    ORDER BY子句可在一列上应用一个函数,例如字符串函数,数学函数等,并按函数的结果对数据进行排序。
     
    例如,以下语句使用ORDER BY子句中的UPPER()函数来区分客户名称的大小写:
    SQL> select empno,ename,comm from emp order by upper(ename);
     
     
     

    Oracle Distinct用法

    SELECT DISTINCT可以用来过滤结果集中的重复行,确保SELECT子句中返回指定的一列或多列的值是唯一的。本文将为大家带来SELECT DISTINCT的具体用法。
     

    Oracle SELECT DISTINCT用法

    SELECT DISTINCT语句的语法如下:
     
    SELECT DISTINCT
    column_1
    FROM
      table_name;
     
    DISTINCT子句只能在SELECT语句中使用。
    请注意,DISTINCT不是SQL标准的UNIQUE的同义词。总是使用DISTINCT而不使用UNIQUE是一个好的习惯。
     

    Oracle DISTINCT示例

    下面来看看如何使用SELECT DISTINCT来看看它是如何工作的一些例子。
     
    1. Oracle DISTINCT在一列上应用的例子
    以下示例检索所有联系人的名字:
     
    2. Oracle DISTINCT应用多列示例
     
     
    在此示例中,job,ename列的值都用于评估结果集中行的唯一性。
     
    3. Oracle DISTINCT和NULL
    DISTINCT将NULL值视为重复值。如果使用SELECT DISTINCT语句从具有多个NULL值的列中查询数据,则结果集只包含一个NULL值。
    正如上图所看到的,只返回一个NULL值。
     
     
     

    Oracle Where子句用法

     

    Oracle WHERE子句简介

    WHERE子句指定SELECT语句返回符合搜索条件的行记录。下面说明了WHERE子句的语法:
     
    SELECT
        column_1,
        column_2,
        ...
    FROM
        table_name
    WHERE
        search_condition
    ORDER BY
        column_1,
        column_2;
     
     
    WHERE子句出现在FROM子句之后但在ORDER BY子句之前。在WHERE关键字之后是search_condition - 它定义了返回行记录必须满足的条件。
     
    除了SELECT语句之外,还可以使用DELETE或UPDATE语句中的WHERE子句来指定要更新或删除的行记录。
     

    Oracle WHERE示例

     
    1. 通过使用简单的相等运算符来查询行记录
     
     
    2. 使用比较运算符选择行记录
    编号运算符描述
    1 = 等于
    2 !=,<> 不等于
    3 > 大于
    4 < 小于
    5 >= 大于或等于
    6 <= 小于或等于
    7 IN 等于值列表中的任何值
    8 ANY/SOME/ALL 将值与列表或子查询进行比较。它必须以另一个运算符(例如:=><)作为前缀。
    9 NOT IN 不等于值列表中的任何值
    10 [NOT] BETWEEN n AND m 相当于[Not] >= n 且 <= y
    11 [NOT] EXISTS 如果子查询返回至少一行,则返回true
    12 IS [NOT] NULL 测试NULL的值
     
    选择包含值的行作为字符串的一部分
     
    SQL> select * from emp where ename like 'SCO%';
     
    EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
    ----- ---------- --------- ----- ----------- --------- --------- ------
     7788 SCOTT      ANALYST    7566 1987/4/19     3000.00               20
     
     

    Oracle And or子句

    Oracle AND是一个逻辑运算符,可以用来组合两个或更多的布尔表达式。本文就将为大家带来Oracle AND的使用方法。
     
    Oracle AND运算符语法
    AND运算符是一个逻辑运算符,它组合了布尔表达式,如果两个表达式都为真,则返回true。 如果其中一个表达式为假,则AND运算符返回false。
     
    AND运算符的语法如下所示:
    expression_1 AND expression_2
     
    1. Oracle AND结合两个布尔表达式的例子
    以下示例查找具有客户编号为2的那些状态为挂起(Pending)的订单:
     
    SELECT order_id, customer_id, status, TO_CHAR(order_date,'YYYY-MM-DD') AS order_date
    FROM orders
    WHERE  status = 'Pending'  AND customer_id = 2
    ORDER BY order_date;
     
     
    2. Oracle AND结合两个以上的布尔表达式的例子
    可以使用多个AND运算符来组合布尔表达式。
     
    参考以下查询语句:
     
    SELECT
        order_id,
        customer_id,
        status,
        TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date
    FROM
        orders
    WHERE
        status = 'Shipped'
        AND salesman_id = 60
        AND EXTRACT(YEAR FROM order_date) = 2017
    ORDER BY
        order_date;
     
    3. Oracle AND与OR运算符结合示例
    可以将AND运算符与其他逻辑运算符(如OR和NOT)组合,以形成一个条件。
    SELECT
        order_id,
        customer_id,
        status,
        salesman_id,
        TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date
    FROM
        orders
    WHERE
        (status = 'Canceled' OR status = 'Pending')
        AND customer_id = 44
    ORDER BY
        order_date;
     

    Oracle Fetch子句

    FETCH子句在Oracle中可以用来限制查询返回的行数,本教程将教大家如何使用FETCH子句。
     
    Oracle FETCH子句语法
    以下说明了行限制子句的语法:
     
    [ OFFSET offset ROWS]
     FETCH  NEXT [  row_count | percent PERCENT  ] ROWS  [ ONLY | WITH TIES ]
     
    OFFSET子句
    OFFSET子句指定在行限制开始之前要跳过行数。OFFSET子句是可选的。 如果跳过它,则偏移量为0,行限制从第一行开始计算。
     
    偏移量必须是一个数字或一个表达式,其值为一个数字。偏移量遵守以下规则:
     
    如果偏移量是负值,则将其视为0。
    如果偏移量为NULL或大于查询返回的行数,则不返回任何行。
    如果偏移量包含一个分数,则分数部分被截断。
     
    FETCH子句
    FETCH子句指定要返回的行数或百分比。
     
    为了语义清晰的目的,您可以使用关键字ROW而不是ROWS,FIRST而不是NEXT。 例如,以下子句的行为和产生的结果相同:
     
    FETCH NEXT 1 ROWS
    FETCH FIRST 1 ROW
     
    ONLY | WITH TIES选项
    仅返回FETCH NEXT(或FIRST)后的行数或行数的百分比。
     
    WITH TIES返回与最后一行相同的排序键。请注意,如果使用WITH TIES,则必须在查询中指定一个ORDER BY子句。如果不这样做,查询将不会返回额外的行。
     

    Oracle FETCH子句实例

    1. 获取前N行记录的示例
    以下语句返回库存量最高的前10个产品:
     
    -- 以下查询语句仅能在Oracle 12c以上版本执行
    SELECT
        product_name,
        quantity
    FROM
        inventories
    INNER JOIN products
            USING(product_id)
    ORDER BY
        quantity DESC 
    FETCH NEXT 5 ROWS ONLY;
    2. WITH TIES示例
    以下查询使用WITH TIES选项的行限制子句:
     
    -- 以下查询语句仅能在Oracle 12c以上版本执行
    SELECT
     product_name,
     quantity
    FROM
     inventories
    INNER JOIN products
     USING(product_id)
    ORDER BY
     quantity DESC 
    FETCH NEXT 10 ROWS WITH TIES;
    即使查询请求了10行数据,因为它具有WITH TIES选项,查询还返回了另外两行。 请注意,这两个附加行在quantity列的值与第10行quantity列的值相同。
     
     
     

    Oracle In子句

    Oracle IN运算符可以用来确定值是否与列表或子查询中的任何值相匹配,本文就将为大家带来Oracle IN运算符的具体用法。
     
    Oracle IN语法: 
    确定表达式是否与值列表匹配的Oracle IN运算符的语法如下所示:
     
    expression [NOT] IN (v1,v2,...)
    并且表达式的语法与子查询匹配:
     
    expression [NOT] IN (subquery)
    参数
    在上面语法中,这里将介绍每个参数含义:
     
    expression - 该表达式(expression)是任何有效的表达式,它可以是要匹配的表的列。
    v1, v2, v3.. - IN运算符后面是逗号分隔值列表,用于测试匹配。所有值必须与表达式具有相同的数据类型。
    subquery - 子查询返回一列的结果集以测试匹配。该列还必须具有与表达式相同的数据类型。
     
     
    返回值
    如果表达式(expression)的值等于值列表中的任何值或由子查询返回的结果集,则IN运算符返回true。 否则,它返回false。
     
    NOT运算符否定IN运算符的结果。
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

  • 相关阅读:
    Vue路由机制
    谷歌浏览器打不开应用商店的解决方法
    Vue报错——Component template should contain exactly one root element. If you are using vif on multiple elements, use velseif to chain them instead.
    Vue.js学习之——安装
    Vue使用axios无法读取data的解决办法
    关于localstorage存储JSON对象的问题
    2013年整体计划
    个人喜欢的警语收集
    Linux防火墙的关闭和开启
    Flex修改title 转载
  • 原文地址:https://www.cnblogs.com/wenyule/p/13085414.html
Copyright © 2011-2022 走看看