SQL WHERE 子句
WHERE关键字用于在结果集中获取过滤后的数据.
- 它用于根据特定标准获取数据。
- WHERE关键字也可用于通过匹配模式来过滤数据。
基础语法: SELECT column1,column2 FROM table_name WHERE column_name operator value;
;
column1 , column2: 表中的字段
table_name: 表的名称
column_name: 用于过滤数据的字段名
operator: 要考虑过滤的操作
value: 在结果中获得相关数据的确切值或模式
可与where子句一起使用的运算符列表:
运算符 | 描述 |
---|---|
>= | 大于或等于 |
\<= | 小于或等于 |
= | 等于 |
\<> | 不等于 |
BETWEEN | 在一个包含范围内 |
LIKE | 搜索模式 |
IN | 为列指定多个可能值的步骤 |
查询
- 获取年龄等于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 运算符
它用于获取给定范围内包含两个值的过滤数据。 Basic 语法: SELECT column1,column2 FROM table_name WHERE column_name BETWEEN value1 AND value2;
BETWEEN: 运算符名称
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子句中搜索特定模式来获取过滤后的数据。 Basic 语法: SELECT column1,column2 FROM table_name WHERE column_name LIKE pattern;
LIKE: 运算符名称
pattern: 从模式中提取精确值以获取结果集中的相关数据。 注意 : pattern中的字符区分大小写。
查询
- 获取姓名以字母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 |
- 获取姓名包含模式 “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 运算符
它用于获取与由 ‘=’ 运算符获取相同的过滤数据,只是不同之处在于,在这里我们可以指定可以获取结果集的多个值。 Basic 语法: SELECT column1,column2 FROM table_name WHERE column_name IN (value1,value2,..);
IN: 运算符名称
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 |