📜  SQL |条款

📅  最后修改于: 2021-05-20 06:41:14             🧑  作者: 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

运算符之间的

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

BETWEEN: operator name 

值1和值2:从值1到值2的确切值,以获取相关数据
结果集。

查询

  • 提取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岁(含20岁)之间的学生的NAME,ADDRESS
    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