;
使用 UPDATE 时要小心。如果您没有使用 WHERE 语句指定要更改哪些记录,您将更改表中的所有值。
使用删除命令DELETE 从表中删除记录。与 UPDATE 一样,请务必包含 WHERE 语句,以免意外删除整个表。
或者,如果我们碰巧在 people_massachusetts 表中找到几条实际居住在缅因州的记录,我们可以通过定位 address_state 字段来快速删除这些条目。
查询 13:删除
people_massachusetts
哪里
地址州 = '缅因州'
;
奖励:高级 SQL 技巧现在您已经学会了如何创建简单的 SQL 查询,接下来我们来讨论一些其他技巧,您可以使用这些技巧来提高您的查询水平,sta带星号。
*(星号)当您向 SQL 查询添加星号字符时,它会告诉查询您希望在结果中包含所有数据列。
在我们使用的马萨诸塞州示例中,我们只有两个列名:first_name 和 last_name。但是,假设我们希望在结果中看到 15 列数据 — 在 SELECT 语句中键入所有 15 列名称将是一件很痛苦的事情。相反,如果您用星号替换这些列的名称,查询就会知道将所有列拉入结果中。
这是 SQL 查询的样子。
查询 13:选择
*
来自
people_massachusetts
哪里
头发颜色='红色'
并且
出生日期介于“2003-01-01”和“2003-12-31”之间
排序依据
姓氏
限制
100
;
%(百分号)百分号是通配符,表示它可以代表一个数据库值中的一个或多个字符。通配符有助于查找共享公共字符的记录。它们通常与 LIKE 运算符一起使用来查找数据中的模式。
例如,如果我们想要获取表中邮政编码以“02”开头的每个人的姓名,我们可以编写以下查询。
查询 14:选择
名字,
姓氏
哪里
地址_zip 像“02%”
;
这里,“%”代表“02”之后的任何一组数字,因此此查询会显示所有包含以“02”开头的 address_zip 值的记录。
过去 30 天一旦我开始定期使用 SQL,我发现我的首选查询之一涉及查找过去 30 天内哪些人采取了操作或满足了一组特定条件。
假设今天是 2021 年 12 月 1 日。您可以通过将birth_date 跨度设置在 2021 年 11 月 1 日到 2021 年 11 月 30 日之间来创建这些参数。该 SQL 查询如下所示:
查询 15:选择
名字,
姓氏
来自
people_massachusetts
哪里
头发颜色='红色'
并且
birth_date介于“2021-11-01”和“2021-11-30”之间
排序依据
姓氏
限制
100
;
但这需要考虑哪些日期涵盖过去 30 天,并且您必须不断更新此查询。
相反,要使日期自动跨越过去 30 天,无论是哪一天,您可以在 AND 下输入:birth_date = (DATE_SUB(CURDATE(),INTERVAL 30))
(注意:您需要与产品团队仔细检查此语法,因为它可能会根据您用于提取 SQL 查询的软件而有所不同。)
因此,您的完整 SQL 查询将如下所示。
查询 16:选择
名字,
姓氏
来自
people_massachusetts
哪里
头发颜色='红色'
并且
出生日期 = (DATE_SUB(CURDATE(),INTERVAL 30))
排序依据
姓氏
限制
100
;
数数在某些情况下,您可能想要计算某个字段的条件出现的次数。例如,假设您想要计算您统计的来自马萨诸塞州的人出现不同头发颜色的次数。
在这种情况下,COUNT 会派上用场,因此您无需手动添加不同头发颜色的人数或将该信息导出到 Excel。
该 SQL 查询如下所示:
查询 17:选择
头发颜色,
COUNT(头发颜色)
来自
people_massachusetts
并且
出生日期介于“2003-01-01”和“2003-12-31”之间
分组依据
头发颜色
;
AVG 计算查询结果中属性的平均值,不包括 NULL 值(空)。在我们的示例中,我们可以使用 AVG 来c计算我们的查询中马萨诸塞州居民的平均年龄。
我们的 SQL 查询如下所示:
查询 18:选择
平均年龄(年龄)
来自
people_massachusetts
;
SUM 是您可以在 SQL 中执行的另一种简单计算。它计算查询中所有属性的总价值。因此,如果我们想将马萨诸塞州居民的所有年龄相加,我们可以使用以下查询。
查询 19:选择
SUM(年龄)
来自
people_massachusetts
;
使用最小值和最大值MIN 和 MAX 是两个 SQL 函数,可提供给定字段的最小值和最大值。我们可以用它来识别马萨诸塞州表中最年长和最年轻的成员:
以下查询将为我们提供最年轻的人的记录。
查询 20:选择
最小(年龄)
来自
people_massachusetts
;
这个查询给了我们最古老的:
查询 21:选择
最大(年龄)
来自
people_massachusetts
;
使用 JOIN 命令有时您可能需要在一个 SQL 查询中访问两个不同表中的信息。在 SQL 中,您可以使用 JOIN 子句来执行此操作。
(对于熟悉 的人来说,这类似于当您需要合并 Excel 中两个不同工作表的信息时使用 VLOOKUP 公式。)
假设我们有一张表,其中包含所有马萨诸塞州居民的用户 ID 和出生日期的数据。此外,我们还有一个完全独立的表,其中包含所有马萨诸塞州居民的用户 ID 及其头发颜色。
如果我们想要确定 2003 年出生的马萨诸塞州居民的头发颜色,我们需要访问两个表中的信息并将它们组合起来。这是可行的,因为两个表共享一个匹配的列:用户 ID。
我们的 SELECT 语句也会略有变化,因为我们从两个不同的表中调用字段。我们不只是列出字段要包含在我们的结果中,我们需要指定它们来自哪个表。
(注意:星号函数在这里可能很有用,因此您的查询在结果中包含两个表。)
要指定特定表中的字段,我们所要做的就是将表名与字段名组合起来。例如,我们的 SELECT 语句会显示“table.field”——用句点分隔表名称和字段名称。
在这种情况下,我们还假设了一些事情:
马萨诸塞州出生日期表包含以下字段:first_name、last_name、user_id、birthdate 马萨诸塞州头发颜色表包含以下字段:user_id、hair_color您的 SQL 查询将如下所示。
来源:hubspot