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 |
极客教程