sql database cheat-sheet mysql postgresql query dev-reference

SQL 速查表:常用命令、连接(Join)与函数完全参考

为开发者准备的全面 SQL 速查表。掌握 SELECT、JOIN、GROUP BY 及常用 SQL 函数,附带清晰示例与最佳实践。

SQL 速查表:常用命令、连接(Join)与函数完全参考

SQL(结构化查询语言)是管理和操作关系型数据库的标准语言。无论您使用的是 MySQL、PostgreSQL、SQL Server 还是 SQLite,这些核心命令都是您与数据库交互的基础。

本速查表可作为 SQL 常用语法和最佳实践的快速参考。


1. 基础数据查询

最常见的 SQL 任务是从表中检索数据。

命令 说明 示例
SELECT 指定要检索的列 SELECT name, age
FROM 指定要检索的表 FROM users
WHERE 根据条件过滤结果集 WHERE age > 18
ORDER BY 对结果集进行排序 (ASC 或 DESC) ORDER BY created_at DESC
LIMIT 限制返回的行数 LIMIT 10
DISTINCT 仅返回唯一值 SELECT DISTINCT city

查询示例:

SELECT name, email
FROM users
WHERE country = 'CN'
ORDER BY name ASC
LIMIT 5;

2. SQL 连接 (Joins):合并数据

连接允许您基于相关列从多个表中检索数据。

  • INNER JOIN (内连接):当两个表中都有匹配项时返回行。
  • LEFT (OUTER) JOIN (左外连接):返回左表中的所有行,以及右表中匹配的行。
  • RIGHT (OUTER) JOIN (右外连接):返回右表中的所有行,以及左表中匹配的行。
  • FULL (OUTER) JOIN (全外连接):当其中一个表中有匹配项时就返回行。

连接示例:

SELECT orders.id, users.name
FROM orders
INNER JOIN users ON orders.user_id = users.id;

3. 聚合与分组

聚合函数对一组值执行计算并返回单个值。

函数 说明
COUNT() 返回行数
SUM() 返回数值列的总和
AVG() 返回平均值
MIN() 返回最小值
MAX() 返回最大值

GROUP BY 和 HAVING: GROUP BY 用于结合聚合函数,根据一个或多个列对结果集进行分组。HAVING 用于过滤分组后的结果。

SELECT department, COUNT(*)
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;

4. 数据操作 (DML)

用于添加、更新和删除数据的命令。

  • INSERT:添加新行。
    INSERT INTO users (name, email) VALUES ('张三', '[email protected]');
    
  • UPDATE:修改现有行。
    UPDATE users SET email = '[email protected]' WHERE id = 1;
    
  • DELETE:删除行。
    DELETE FROM users WHERE id = 1;
    

5. 架构定义 (DDL)

用于定义和管理数据库结构的命令。

  • CREATE TABLE:创建新表。
    CREATE TABLE products (
      id INT PRIMARY KEY,
      name VARCHAR(100),
      price DECIMAL(10, 2)
    );
    
  • ALTER TABLE:修改现有表结构(添加/删除列)。
    ALTER TABLE users ADD last_login TIMESTAMP;
    
  • DROP TABLE:删除表及其所有数据。
    DROP TABLE temp_data;
    
  • Indexes (索引):用于加速数据检索。
    CREATE INDEX idx_user_email ON users(email);
    

常见问题 (FAQ)

Q: SQL 与 NoSQL 应该如何选择?

A: 当您的数据是结构化的、需要复杂的连接查询以及对事务的 ACID 合规性有要求时,请使用 SQL(关系型)。对于非结构化数据、高可扩展性需求以及模式经常变化的快速开发周期,请使用 NoSQL(非关系型)。

Q: 数据库设计的最佳实践有哪些?

A:

  1. 规范化 (Normalization):减少数据冗余。
  2. 命名规范:使用一致的、小写的、下划线分隔的名称。
  3. 主键:每个表都应该有一个唯一的标识符。
  4. 合理使用索引:索引可以加快读取速度,但会减慢写入速度。

Q: 什么是 SQL 注入?如何预防?

A: SQL 注入是一种漏洞,攻击者可以执行恶意 SQL 语句。预防方法:切勿将用户输入直接拼接进查询语句。请使用编程语言数据库驱动提供的 预处理语句 (Prepared Statements) 或参数化查询。

Q: 如何优化 SQL 性能?

A:

  • 避免使用 SELECT *;只获取您需要的列。
  • 使用 EXPLAIN 分析查询执行计划。
  • 确保在 WHEREJOIN 子句中使用的列上有适当的索引。
  • JOIN 更高效时,避免使用子查询。

Tool3M 上的相关工具

  • SQL 格式化:清理并格式化您的 SQL 查询,提高可读性。
  • JSON 转 CSV:在 JSON 和 CSV 格式之间转换您的数据库导出文件。