zoukankan      html  css  js  c++  java
  • Oracle Where(条件)子句用法

    Where是Oracle中的条件查询子句,本教程,将学习如何使用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示例

    参阅示例数据库中的以下产品(products)表,其表结构如下:

    1

    1. 通过使用简单的相等运算符来查询行记录

    以下示例仅返回名称为“Kingston”的产品:

    SELECT
        product_name,
        description,
        list_price,
        category_id
    FROM
        products
    WHERE
        product_name = 'Kingston';

    执行上面示例中的查询语句,得到以下结果:

    2

    在这个例子中,Oracle按以下顺序评估子句:FROM WHERE和SELECT

    • 首先,FROM子句指定查询数据的表。
    • 其次,WHERE子句基于条件(例如product_name ='Kingston'过滤行记录)。
    • 第三,SELECT子句选择了应该返回的列。

    2. 使用比较运算符选择行记录

    除了等于(=)运算符之外,Oracle还提供了下表中所示的许多其他比较运算符:

    编号运算符描述
    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的值

    例如,要获取标价大于500的产品,请使用以下语句:

    SELECT
        product_name,
        list_price
    FROM
        products
    WHERE
        list_price > 500;

    执行上面查询语句,得到以下结果:

    3

    3. 选择符合某些条件的行

    要组合条件,可以使用AND,OR和NOT逻辑运算符。

    例如,要获取属于类别编号是4且标价大于500的所有主板,请使用以下语句:

    SELECT
        product_name,
        list_price
    FROM
        products
    WHERE
        list_price > 500
        AND category_id = 4;

    执行上面示例代码,得到以下结果:

    4

    4. 选择在两个值之间的值的行记录

    要查找具有两个值之间的值的行,请在WHERE子句中使用BETWEEN运算符。

    例如,要获取标价在650到680之间(650 <= list_price <= 680)的产品,请使用以下语句:

    SELECT
        product_name,
        list_price
    FROM
        products
    WHERE
        list_price BETWEEN 650 AND 680
    ORDER BY
        list_price;

    执行上面查询语句,得到以下结果:

    5

    请注意,以下表达式是等效的:

    SELECT
        product_name,
        list_price
    FROM
        products
    WHERE
        list_price >= 650 AND list_price <= 680
    ORDER BY
        list_price;

    5. 选择符合值列表中的行记录

    要查询值列表中的行记录,可以使用IN运算符,如下所示:

    SELECT
        product_name,
        category_id
    FROM
        products
    WHERE
        category_id IN(1, 4)
    ORDER BY
        product_name;

    执行上面查询语句,得到以下结果:

    6

    表达方式:

    category_id IN (1, 4)

    等效于 -

    category_id = 1 OR category_id = 4

    6. 选择包含值的行作为字符串的一部分

    以下语句检索名称以Asus开头的产品:

    SELECT
       product_name,
       list_price
    FROM
       products
    WHERE
       product_name LIKE 'Asus%'
    ORDER BY
       list_price;

    在这个例子中,我们使用LIKE运算符来根据指定的模式来匹配行记录。

    7

  • 相关阅读:
    HDU 2955 Robberies(01背包)
    HDU 2602 Bone Collector(01背包)
    HUST 1352 Repetitions of Substrings(字符串)
    HUST 1358 Uiwurerirexb jeqvad(模拟解密)
    HUST 1404 Hamming Distance(字符串)
    HDU 4520 小Q系列故事――最佳裁判(STL)
    HDU 2058 The sum problem(枚举)
    【破解】修改程序版权、添加弹窗
    HDU 1407 测试你是否和LTC水平一样高(枚举)
    HDU 1050 Moving Tables(贪心)
  • 原文地址:https://www.cnblogs.com/zxl971213/p/13069196.html
Copyright © 2011-2022 走看看