SQL WHERE子句介绍

来源:互联网 发布:淘宝可以用预付卡吗 编辑:程序博客网 时间:2024/04/27 16:48

 WHERE 子句——指定查询限制条件
    查询语句里的条件指定了要返回满足什么标准的信息。条件的值是 TURE 或 FALSE,从而限制查询中获取的数据。WHERE 子句用于规定选择的标准。如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。
    WHERE 子句里可以有多个条件,它们之间以操作符 AND 或 OR 连接。如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
一、WHERE 子句的格式
    语法:SELECT 列名 FROM 表名
          WHERE  列 操作符 值;
        叙述:1.下面的比较操作符可在 WHERE 子句中使用:
         ---------------------------------------
 操作符  描述
 ---------------------------------------
 =  等于
 <>  不等于
 >  大于
 <  小于
 >=  大于等于
 <=  小于等于
 ---------------------------------------
   注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。
        2.在 WHERE 子句中使用的逻辑操作符 :
         --------------------------------------------------------------------------
 操作符   描述
 --------------------------------------------------------------------------
 BETWEEN 值1 AND 值2 在两个值之间
 NOT BETWEEN 值1 AND 值2 不在两个值之间
 IN <值列表>  在特定的集合里(枚举)
 NOT IN <值列表>  不在特定的集合里(枚举)
 LIKE   匹配于一个模式
 NOT LIKE   不匹配于一个模式
 IS NULL   字段为空的
 IS NOT NULL  字段不为空的
 --------------------------------------------------------------------------
        注释:操作符 LIKE 利用通配符把一个值与类似的值进行比较,通配符有两个:
         百分号(%)代表任意长度的字符串;
         下划线(_)代表任意单个字符。
         例如,'A_Z' 表示所有以'A' 起头,另一个任何值的字符,且以'Z' 为结尾的字符串。'ABZ' 和'A2Z' 都符合这一个模式,而'AKKZ' 并不符合(因为在A和Z之间有两个字符,而不是一个字符)。
        'ABC%' 表示所有以'ABC' 起头的字符串。举例来说,'ABCD' 和'ABCABC' 都符合这个模式。
        '%XYZ' 表示所有以'XYZ' 结尾的字符串。举例来说,'WXYZ' 和'ZZXYZ' 都符合这个模式。
        '%AN%' 表示所有含有'AN' 这个模式的字符串。举例来说,'LOS ANGELES' 和'SANFRANCISCO' 都符合这个模式。
二、WHERE 子句使用举例
         下面,我们通过一些例子来说明 WHERE 子句的使用方法及查询结果,从中了解带WHERE 子句的 SELECT 语句的基本功能。
         例1:我们要由 Store_Information 表里
         store_name  Sales  Date
         ---------------------------------------------------------
 Los Angeles  1500  1999-01-05
 San Diego  250  1999-01-07
 San FranciSCo  300  1999-01-08
 Boston   700  1999-01-08
        找出营业额超过 1,000 的记录:
 SELECT store_name
 FROM Store_Information
 WHERE Sales > 1000;
        结果:store_name
 ----------------
 Los Angeles
        若要选出所有 Sales 高于 1,000 或是 Sales 在 500 及 275 之间的记录的话,我们可以用以下语句:
 SELECT store_name
 FROM Store_Information
 WHERE Sales > 1000
 OR (Sales < 500 AND Sales > 275) ;
        结果:store_name
 ----------------
 Los Angeles
 San FranciSCo
        例2:我们要在 Store_Information 表里找出所有含盖 Los Angeles 或 San Diego 的记录,可以用以下语句:
         SELECT * FROM Store_Information
 WHERE store_name IN ('Los Angeles', 'San Diego');
        结果:store_name  Sales  Date
 ----------------------------------------------------------
 Los Angeles  1500  1999-01-05
 San Diego  250  1999-01-07
        例3:由 Store_Information 表里找出所有介于 January 6, 1999 及 January 10, 1999 之间的记录,可以用以下语句:
         SELECT * FROM Store_Information
 WHERE Date BETWEEN 'Jan-06-1999' AND 'Jan-10-1999' ;
        结果:store_name  Sales  Date
 -----------------------------------------------
 San Diego  250  1999-01-07
 San FranciSCo  300  1999-01-08
 Boston   700  1999-01-08
        例4:在 Store_Information 表里找出所有店名含有'AN' 这个模式的记录:
 SELECT * FROM Store_Information
 WHERE store_name LIKE '%AN%' ;
        结果:store_name  Sales  Date
 ----------------------------------------------------------
 LOS ANGELES  1500  1999-01-05
 SAN FRANCISCO  300  1999-01-08
 SAN DIEGO  250  1999-01-07
三、选定条件中操作符的优先级
    以下列表显示了操作符优先级由高到低的顺序。排列在同一行的操作符具有相同的优先级。
     ---------------------------------------------------------------------
     操作符     描述
     ---------------------------------------------------------------------
     ^     乘方
     *, /     乘、除
     +, -     加、减
     <<, >>     左移、右移
     &     按位与
     |     按位或
     =, <=>, >=, >, <=, <, <>, !=, IS, LIKE, IN 等于、NULL-safe equal、大于等于、大于、小于等于、小于、不等于. . .
     BETWEEN     两值之间
     NOT     逻辑非
     AND     逻辑与
     OR     逻辑或
     ---------------------------------------------------------------------
        说明:
         <=>  NULL-safe equal 这个操作符和 = 操作符执行相同的比较操作,不过在两个操作码均为 NULL 时,其所得值为1而不为 NULL,而当一个操作码为 NULL 时,其所得值为0而不为 NULL;
         <> !=  不等于;
                 ( ... )  使用括弧来规定表达式的运算顺序。

0 0