过滤数据库结果集
SQL Where子句是SQL的基本原理之一,并在任何SQL培训教学大纲中提前教授。where子句是一个强大而灵活的工具,用于改进和过滤不仅仅是选择语句的结果,还用于插入,更新和删除。学习Where子句的使用是编写有效SQL查询的第一步。
在SELECT语句中(检索数据的主要SQL语句),有一个来自子句,它告诉SQL在其中获取数据。从SQL处理查询时由SQL解析的第一个子句。FROM子句生成SELECT语句的结果集。但是,它可能会返回比所需的更松散的资格。如果是这种情况,则选择语句需要更具体地请求。微调由前一个子句生成的结果集的机制是应用过滤器,并且使用WHERE子句实现这一点。
where子句只是一个用于拧紧选择标准的过滤器,以便仅返回满足严格要求的数据。应用过滤器的日常例子是使用搜索引擎时。搜索关键字越越大,结果集越大。通过在搜索更具体和使用过滤器,例如,在语言或媒体类型上,搜索缩小并返回更小的重点和相关结果集。这与AFF FROM子句遵循的WHERE子句时相同的原则。其目的是过滤并完善返回的结果。
在这个简单的场景中,目标是检索名为Apple的特定供应商的数据。
SELECT *
从供应商
在上面的示例中,通配符*用于指定所有列,因此SELECT请求Vendors表中的所有列。
vendor_name vendor_id对vendor_city进行排名
三星101 1首尔
HTC 102 12 K.L
苹果103 2洛杉矶
索尼空23东京
诺基亚104 11斯德哥尔摩
宏碁105 33上海
这是一个非常低效的选择语句,因为它返回了表中的所有内容。因此,选择标准需要更加集中。这就是添加WHERE子句的原因——过滤结果集,使其只包含vendor_name = ' Apple '的行。
SELECT *
从供应商
WHERE vendor_name = ' Apple ';
现在应用了Where子句,它设置了一个将用于改进和过滤结果集的条件。SQL仍然先解析并处理FROM子句,并返回以前返回完整结果集。但是,SQL然后处理WHERE子句并将条件应用于结果集。将每一行与条件Vendor_Name =“Apple”进行比较,并在TRUE测试。只有返回真实条件的行通过过滤器,返回返回false的行被筛选出来。因此,新的精细SQL查询仅包含与Vendor_name“Apple”匹配的行,这是原始目标。
Vendor_Name Vendor_ID排名Vendor_city
苹果103 2洛杉矶
在这个例子中,SQL测试了每一行以确定匹配。如果目标是归还除“苹果”之外的所有供应商呢?然后,测试需要在返回false的条件下进行。对于这种类型的查询,使用WHERE子句有两种方法:
- 使用不条件:WHERE NOT vendor_name = ' Apple '
- WHERE vendor_name < > ' Apple '
在上面的例子中,一个条件就足以聚焦结果集。然而,在实践中,WHERE语句可以简单也可以复杂,具体取决于需求。
使用在哪里和
SELECT *
从供应商
vendor_city ='seoul'的地方
和vendor_id> 100;
在上面的示例中,返回的结果将是与在首尔的符合真实的供应商,并且具有大于100的供应商ID
vendor_name vendor_id对vendor_city进行排名
三星101 1首尔
使用在哪里或
选择vendor_id
从供应商
vendor_name ='三星'的地方
或Vendor_name ='Apple';
在此示例中,标准用于名称Samsung或Apple名称的供应商
vendor_name vendor_id对vendor_city进行排名
三星101 1首尔
苹果103 2洛杉矶
在哪里结合和&
SELECT *
从供应商
WHERE vendor_city = 'Seoul' AND vendor_name = 'Samsung'
OR(排名<= 10);
这里,在这里结合两个条件和条件和条件。结果将返回与位于首尔并拥有供应商名称HTC的供应商或排名低于10的供应商。
vendor_name vendor_id对vendor_city进行排名
三星101 1首尔
苹果103 2洛杉矶
使用带有多个条件的Where
您还可以在构建语句时在Where子句中使用这些简单的条件或比较:
- 关系操作符条件
- 在…之间…和
- 是空还是非空
- 喜欢或比赛
您还可以在Where子句中使用SELECT语句;这被称为a子查询。
SELECT *
从供应商
WHERE vendor_id IN (SELECT vendor_id
从供应商
排名> 10);
在上面的子查询示例中,在WHERE子句中运行一个SELECT语句,并与In条件进行比较。初始FROM结果集中所有供应商的列(*)都被测试,以检查他们的Vendor_id字段是否列在子查询的结果中(vendor_ids的排名大于10)。
下面的WHERE子句操作符在子查询中是有效的:
- 在或存在
- 全部,任何,或一些
WHERE子句是一个灵活而强大的子句,用于细化SELECT、UPDATE、INSERT和DELETE语句,以提高重点和效率。