📜  SQL | WHERE 条款

📅  最后修改于: 2021-09-08 16:14:47             🧑  作者: Mango

WHERE 关键字用于获取结果集中的过滤数据

  • 它用于根据特定标准获取数据。
  • WHERE 关键字还可用于通过匹配模式来过滤数据。

基本语法:
SELECT column1,column2 FROM table_name WHERE column_name运算符值;

column1 , column2: fields int the table
table_name: name of table
column_name: name of field used for filtering the data
operator: operation to be considered for filtering
value: exact value or pattern to get related data in result 

可与 where 子句一起使用的运算符列表:

operator description
> Greater Than
>= Greater than or Equal to
< Less Than
<= Less than or Equal to
= Equal to
<> Not Equal to
BETWEEN In an inclusive Range
LIKE Search for a pattern
IN To specify multiple possible values for a column

表格1

查询

    • 获取年龄等于 20 岁的学生的记录
      SELECT * FROM Student WHERE Age=20;
      

      输出:

      ROLL_NO NAME ADDRESS PHONE Age
      3 SUJIT ROHTAK XXXXXXXXXX 20
      3 SUJIT ROHTAK XXXXXXXXXX 20
  • 获取 ROLL_NO 大于 3 的学生的姓名和地址
    SELECT ROLL_NO,NAME,ADDRESS FROM Student WHERE ROLL_NO > 3;
    

    输出:

    ROLL_NO NAME ADDRESS
    4 SURESH Delhi

BETWEEN运算符

它用于获取给定范围内的过滤数据,包括两个值。
基本语法:
SELECT column1,column2 FROM table_name WHERE column_name BETWEEN value1 AND value2;

BETWEEN: operator name 

value1 AND value2:从 value1 到 value2 的精确值以获取相关数据
结果集。

查询

  • 获取 ROLL_NO 介于 1 和 3(含)之间的学生的记录
    SELECT * FROM Student WHERE ROLL_NO BETWEEN 1 AND 3;
    

    输出:

    ROLL_NO NAME ADDRESS PHONE Age
    1 Ram Delhi XXXXXXXXXX 18
    2 RAMESH GURGAON XXXXXXXXXX 18
    3 SUJIT ROHTAK XXXXXXXXXX 20
    3 SUJIT ROHTAK XXXXXXXXXX 20
    2 RAMESH GURGAON XXXXXXXXXX 18
  • 获取年龄在 20 到 30 岁(含)之间的学生的姓名、地址
    SELECT NAME,ADDRESS FROM Student WHERE Age BETWEEN 20 AND 30;
    

    输出:

    NAME ADDRESS
    SUJIT Rohtak
    SUJIT Rohtak

LIKE运算符

它用于通过在 where 子句中搜索特定模式来获取过滤数据。
基本语法:
SELECT column1,column2 FROM table_name WHERE column_name LIKE 模式;

LIKE: operator name 

模式:从模式中提取的精确值以获取相关数据
结果集。

注意:模式中的字符区分大小写。

查询

  • 获取 NAME 以字母 S 开头的学生的记录。
    SELECT * FROM Student WHERE NAME LIKE 'S%'; 

    ‘%’(通配符)表示后面的字符可以是任意长度和
    值。更多关于通配符的内容将在后面的系列中讨论。

    输出:

    ROLL_NO NAME ADDRESS PHONE Age
    3 SUJIT ROHTAK XXXXXXXXXX 20
    4 SURESH Delhi XXXXXXXXXX 18
    3 SUJIT ROHTAK XXXXXXXXXX 20
  • 获取 NAME 包含模式“AM”的学生的记录。
    SELECT * FROM Student WHERE NAME LIKE '%AM%';
    

    输出:

    ROLL_NO NAME ADDRESS PHONE Age
    1 Ram Delhi XXXXXXXXXX 18
    2 RAMESH GURGAON XXXXXXXXXX 18
    2 RAMESH GURGAON XXXXXXXXXX 18

IN运算符

它用于获取与通过 ‘=’运算符获取的过滤数据相同的数据,不同之处在于我们可以指定多个值,我们可以获得结果集。
基本语法:
SELECT column1,column2 FROM table_name WHERE column_name IN (value1,value2,..);

IN: operator name 

value1,value2,..:匹配给定值的精确值并获取结果集中的相关数据。

查询

  • 获取年龄为 18 或 20 岁的学生的姓名和地址。
    SELECT NAME,ADDRESS FROM Student WHERE Age IN (18,20);
    

    输出:

    NAME ADDRESS
    Ram Delhi
    RAMESH GURGAON
    SUJIT ROHTAK
    SURESH Delhi
    SUJIT ROHTAK
    RAMESH GURGAON
  • 获取 ROLL_NO 为 1 或 4 的学生记录。
    SELECT * FROM Student WHERE ROLL_NO IN (1,4);
    

    输出:

    ROLL_NO NAME ADDRESS PHONE Age
    1 Ram Delhi XXXXXXXXXX 18
    4 SURESH Delhi XXXXXXXXXX 18