一、WHERE语句简单筛选
截至到目前,已经出现过的查询语句示例中,我们都是对整张student表中的某一列或者某几列做完整的查询,
但实际上在业务处理过程中,往往需要添加一些限制条件来缩小范围,获取我们想要的查询结果。
比如:只筛选查询“二班”的学生信息、“得分在60以上的学生记录”......
语法:
SELECT <列名1>,<列名2>,...
FROM <表名>
WHERE <条件表达式>;
示例1:
--查询所有性别为F的学生记录 SELECT * FROM student WHERE sex = 'F'
运行结果:
示例1中,WHERE sex = ‘F’ 就是用来筛选查询结果的 条件表达式
Tips:表达式中的字符串需要用 单引号(‘ ’)括起来x
在查询的的过程中,会逐行将行中的sex的值与‘F’进行比较,满足限制条件“=”(等于)时,
这一行记录会被筛选出来
示例1中使用了(*)星号查询,所以筛选出sex=‘F’行的记录后,会返回所有列。
示例2:
--仅查询所有性别为F的学生班级、姓名、性别 SELECT class_no AS "班级", name AS "姓名", sex AS "性别" FROM student WHERE sex = 'F'
运行结果:
相较于示例1,示例2的语句仅查出了所有性别为‘F’的学生的 班级、姓名、性别
可以想象一下这个语句的处理过程,如下图
首先①步骤 通过语句 WHERE sex = ‘F’ 筛选出符合条件的行(红色框选)
接着②步骤 语句 SELECT 指定了针对符合要求的行中需要提取的列(蓝色框选)
Tips:
# 筛选条件不是必须作为查询列,你可以尝试一下示例2中,查询性别列注释掉试试看,你能成功执行么?
执行结果有什么不同?如果不能执行的话,你找到原因在哪了么???
SQL中语句的顺序是固定的,不按照规定顺序会执行错误
示例3:
--仅查询所有性别为F的学生班级、姓名、性别 --尝试将WHERE语句放在FROM语句前 SELECT class_no AS "班级", name AS "姓名", sex AS "性别" WHERE sex = 'F' FROM student
运行结果:
Tips:WHERE语句需要放在FROM语句之后