要速成 SQL 并能解决大多数问题,我们需要快速掌握 SQL 的核心知识点 和 解题套路。以下是专为应试或快速上手 SQL 操作设计的速成指南,涵盖最常用的 SQL 技能和思路。

 

一、SQL 必备知识速览

1. 表的基本组成

    •    表 = 行 + 列

    •    行(row):一条记录。

    •    列(column):属性字段。

 

2. SQL 语句类型

    •    查询数据:SELECT(最常用)

    •    修改数据:INSERT、UPDATE、DELETE

    •    修改表结构:CREATE、ALTER、DROP

 

3. 关键语法速记

功能    语法    示例

查询    SELECT columns FROM table;    

SELECT name, age FROM students;

筛选    WHERE condition    

SELECT * FROM students WHERE age > 18;

排序    ORDER BY column ASC/DESC    

SELECT * FROM students ORDER BY age DESC;

分组    GROUP BY column    

SELECT age, COUNT(*) FROM students GROUP BY age;

聚合    SUM, AVG, MAX, MIN, COUNT  

 SELECT AVG(age) FROM students;

连接表    JOIN    

SELECT s.name, c.course

FROM students s

JOIN courses c

ON s.id = c.sid;

插入    INSERT INTO table VALUES (...);    

INSERT INTO students

VALUES (1, 'Alice', 20);

更新    UPDATE table SET col=val ...;    

UPDATE students

SET age = 21

WHERE id = 1;

删除    

DELETE FROM table

WHERE ...;    

DELETE FROM students

WHERE age < 18;

 

二、解题核心技巧

1. 查询题万能公式

SELECT [列名/函数/表达式]

FROM [表名]

[WHERE 筛选条件]

[GROUP BY 分组列]

[HAVING 分组后的筛选条件]

[ORDER BY 排序列 ASC/DESC];

 

例题:查询年龄大于 18 岁的学生姓名和年龄,并按年龄降序排序。

SELECT name, age

FROM students

WHERE age > 18

ORDER BY age DESC;

 

2. JOIN 连接套路

    •    理解 JOIN 的类型:

    •    INNER JOIN:只选取匹配的行。

    •    LEFT JOIN:左表所有行 + 右表匹配行。

    •    RIGHT JOIN:右表所有行 + 左表匹配行。

 

例题:查询学生及其选修的课程名。

SELECT s.name, c.course_name

FROM students s

JOIN enrollments e ON s.id = e.student_id

JOIN courses c ON e.course_id = c.id;

 

3. 分组和聚合题万能套路

    1.    先分组:GROUP BY

    2.    再聚合:COUNT, SUM, AVG 等

    3.    筛选分组后结果:HAVING

 

例题:统计每门课程的学生人数,显示人数超过 5 的课程。

SELECT course_id, COUNT(*) AS student_count

FROM enrollments

GROUP BY course_id

HAVING COUNT(*) > 5;

 

4. 子查询套路

    •    子查询可以是独立查询,用于主查询的条件或结果。

例题:查询选修课程数量超过 2 门的学生姓名。

SELECT name

FROM students

WHERE id IN (

    SELECT student_id

    FROM enrollments

    GROUP BY student_id

    HAVING COUNT(*) > 2

);

 

5. 增删改操作的万能套路

插入数据

INSERT INTO table_name (column1, column2, ...)

VALUES (value1, value2, ...);

更新数据

UPDATE table_name

SET column1 = value1, column2 = value2, ...

WHERE condition;

删除数据

DELETE FROM table_name

WHERE condition;

 

例题:将所有 18 岁以下的学生记录删除。

DELETE FROM students

WHERE age < 18;

 

三、常见 SQL 题型分类与模板

1. 简单查询

    •    要求:从表中查询数据。

    •    模板:

SELECT columns

FROM table

[WHERE condition]

[ORDER BY column ASC/DESC];

 

2. 分组与聚合

    •    要求:统计、分类数据。

    •    模板:

SELECT columns, 聚合函数()

FROM table

GROUP BY columns

[HAVING condition]

[ORDER BY column ASC/DESC];

 

3. 多表连接

    •    要求:从多个表中查询相关联数据。

    •    模板:

SELECT columns

FROM table1

[INNER/LEFT/RIGHT] JOIN table2

ON table1.column = table2.column

[WHERE condition];

 

4. 嵌套查询

    •    要求:使用子查询实现复杂查询。

    •    模板:

SELECT columns

FROM table

WHERE column [=, IN, NOT IN] (

    子查询语句

);

 

四、万能实战练习流程

    1.    明确问题: 是查询、统计、更新,还是结构操作?

    2.    提取关键字: 找到表名、字段、条件、操作类型。

    3.    选择模板: 按题型套用相应的 SQL 模板。

    4.    逐步构建:

    •    先写简单查询,验证核心数据。

    •    再加条件、分组、排序等,逐步完善。

 

五、速成练习重点

    1.    熟记常用函数:COUNT, SUM, AVG, MAX, MIN, DISTINCT

    2.    熟悉 SQL 的逻辑执行顺序(重点):

FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

    3.    多写练习题,优先解决查询、连接、聚合问题,80% 的问题都是这三类。

掌握这些速成知识和解题套路,你会发现 90% 的 SQL 题目都能迎刃而解!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐