SQL 初学者:核心概念简明

发布: (2026年4月19日 GMT+8 23:19)
4 分钟阅读
原文: Dev.to

Source: Dev.to

SQL 初学者必备:简明概念封面图

概览

SQL 代表结构化查询语言(Structured Query Language)。它是与数据库通信的标准语言。可以把 SQL 看作是你对数据库说的“英语”,当你想获取信息、添加新数据、更新记录或删除某些内容时使用。SQL 让你能够执行四大 CRUD 操作:

  • CreateINSERT
  • ReadSELECT
  • UpdateUPDATE
  • DeleteDELETE

SQL 还提供了强大的子句用于过滤(WHERE)、排序(ORDER BY)、分组(GROUP BYAVGCOUNT)、表连接(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"
0 浏览
Back to Blog

相关文章

阅读更多 »

SQL 中的子查询和 CTE

在使用 SQL 时,你最终会遇到单个查询不足以解决问题的情况。你需要将问题拆分为多个部分,计算中间结果……