DanLevy.net

测验:证明你的 SQL 实力!

你是 SQL 派,还是 NoSQL 派?

SQL 查询基础挑战

天天用 ORM,是不是让你的 SQL 基本功退步了? 别担心,这是很多开发者的通病。

直接上手,测测你的 SQL 查询基本功!👇

下列哪个 SQL 查询能正确检索出 name 为 “John” 的行?

在 SQL 中,WHERE 子句使用单个等号 (=) 进行等值检查,而不是 JavaScript 中使用的 ===== 运算符。

正确的语法是 SELECT * FROM users WHERE name = 'John';

在 SQL 中,COUNT(column_name) 的作用是什么?

COUNT(column_name) 计算指定列中非 NULL 值的数量。如果要计算包括 NULL 在内的所有行,请使用 COUNT(*)

你也可以使用 COALESCE 来确保 NULL 值默认为一个非 NULL 值。例如:COUNT(COALESCE(column_name, 0))

SQL 中的 LEFT JOIN 到底是干什么的?

LEFT JOIN 会返回左表中的所有行以及右表中匹配的行。如果右表中没有匹配项,则结果中右表的列将显示为 NULL。

SQL 中的 INNER JOIN 到底是干什么用的?

INNER JOIN 会返回连接条件在两张表中都能找到匹配项的行。任何不匹配的行都会被无情地排除在结果集之外。

在 SQL 中,什么是相关子查询(correlated subquery)?

相关子查询会针对外部查询的每一行进行求值。它引用了外部查询中的列,因此它的执行依赖于每一行的数据。

SQL 中 WITH 子句(公用表表达式,CTE)的作用是什么?

WITH 子句,即公用表表达式(CTE),用于定义一个可以在主查询中引用的临时结果集。在 PostgreSQL 中,WITH 可以附加到 SELECTINSERTUPDATEDELETEMERGE 等语句中。

这有助于提高复杂查询的可读性和可维护性。

其语法如下:

WITH cte_name AS (
SELECT column_name
FROM table_name
)
SELECT *
FROM cte_name;

SQL 中的 IS NULL 运算符是干什么用的?

IS NULL 用于检查指定列是否包含 NULL 值。而 IS NOT NULL 的作用正好相反。

SQL 中的 IN 运算符有什么作用?

IN 运算符用于过滤行,使其匹配指定列表中的任何值,通常作为多个 OR 条件的替代方案。

虽然它可能返回“唯一的行”(而且通常确实如此),但这并不是它的主要目的。

这里并不强制要求索引,尽管在带有索引(最好是 UNIQUE 索引)的列上使用 IN 绝对是最佳实践,因为这可以提高性能。

在 SQL 中,COALESCE 函数的作用是什么?

COALESCE 函数返回参数列表中第一个非 NULL 的值。当遇到 NULL 值时,它对于替换默认值非常有用。

例如,如果 column_nameNULL,则 COALESCE(column_name, 0) 将返回 0

SQL 中 GROUP BY 子句的作用是什么?

GROUP BY 子句将指定列中具有相同值的行归为一组,从而允许对每个组执行聚合函数。

在 SQL 中,FULL OUTER JOIN 的作用是什么?

FULL OUTER JOIN 会返回参与连接的两张表中的所有行。对于无法匹配的行,缺失的值将以 NULL 填充。

这在比较两张表并查找它们之间的差异时非常有用。