SQL 初学者:核心概念简明
发布: (2026年4月19日 GMT+8 23:19)
4 分钟阅读
原文: Dev.to
Source: Dev.to

概览
SQL 代表结构化查询语言(Structured Query Language)。它是与数据库通信的标准语言。可以把 SQL 看作是你对数据库说的“英语”,当你想获取信息、添加新数据、更新记录或删除某些内容时使用。SQL 让你能够执行四大 CRUD 操作:
- Create →
INSERT - Read →
SELECT - Update →
UPDATE - Delete →
DELETE
SQL 还提供了强大的子句用于过滤(WHERE)、排序(ORDER BY)、分组(GROUP BY、AVG、COUNT)、表连接(JOIN)以及高级分析(NTILE)。
将 SQL 拆解为关键概念后学习会更容易。本指南涵盖每个初学者都应了解的基础主题,包括 JOIN、窗口函数 与 GROUP BY 的对比,以及必备的 SQL 函数。
SQL JOIN
JOIN 根据相关列将两个或多个表的行合并。表之间必须共享一个公共列。主要的连接类型有:
- INNER JOIN – 只返回两张表中匹配值的行;没有匹配的行会被排除。
- LEFT JOIN(或 LEFT OUTER JOIN) – 返回左表的所有行以及右表中匹配的行。如果没有匹配,右表的列会显示为
NULL。 - RIGHT JOIN(或 RIGHT OUTER JOIN) – 返回右表的所有行以及左表中匹配的行。它是左连接的相反操作。
- FULL OUTER JOIN(或 FULL JOIN) – 返回两张表的所有行,尽可能匹配,未匹配的地方用
NULL填充。
窗口函数 vs GROUP BY – 有何区别?
窗口函数和 GROUP BY 都在相关行上进行计算,但解决的问题不同:
GROUP BY将行压缩为每组一个结果,产生更小的结果集。它通常用于聚合和报表。除非也进行聚合,否则不能选择未分组的列。- 窗口函数 在保留原始行细节的同时,对一组行进行计算。输出的行数与输入相同,因为计算通过
OVER (…)附加到每一行。这在需要既有详细行又有聚合上下文(如排名、累计总计、移动平均)时非常有用。
每个初学者都应了解的 SQL 函数
ROUND
-- ROUND: rounds a number to a specified number of decimal places
ROUND(number, decimals)
-- Example:
SELECT ROUND(87.345, 2); -- Returns 87.35
CONCAT(或 PostgreSQL 中的 ||)
-- CONCAT (or || in PostgreSQL): concatenates strings
CONCAT(str1, str2, ...)
-- PostgreSQL example using ||
SELECT first_name || ' ' || last_name AS full_name
FROM employees; -- Returns "John Smith"
TO_CHAR
-- TO_CHAR: formats dates (PostgreSQL syntax)
TO_CHAR(date, format)
-- Example:
SELECT TO_CHAR(exam_date, 'Day, DDth Month YYYY') AS formatted_date
FROM exams; -- Returns "Friday, 15th March 2024"