SQL 常用关键字详解笔记

SQL 常用关键字详解笔记

1. 数据查询基础关键字

SELECT

  • ​作用​​:指定要检索的列
  • ​示例​​:SELECT student_id, student_name FROM students;
  • ​特点​​:
    • 可以使用*选择所有列
    • 可以使用表达式和函数

FROM

  • ​作用​​:指定查询的数据源表
  • ​示例​​:SELECT * FROM students;
  • ​特点​​:
    • 必须与SELECT一起使用
    • 可以指定表别名

WHERE

  • ​作用​​:过滤行数据
  • ​示例​​:SELECT * FROM students WHERE age > 18;
  • ​常用运算符​​:
    • =, <>, >, <, >=, <=
    • BETWEEN, LIKE, IN, IS NULL

2. 表连接关键字

INNER JOIN

  • ​作用​​:返回两表中匹配的行
  • ​示例​​:SELECT s.name, c.class_name FROM students s INNER JOIN classes c ON s.class_id = c.id;
  • ​特点​​:
    • 只返回满足连接条件的记录
    • 是最常用的连接类型

LEFT JOIN

  • ​作用​​:返回左表所有记录,右表无匹配则为NULL
  • ​示例​​:SELECT s.name, t.teacher_name FROM students s LEFT JOIN teachers t ON s.teacher_id = t.id;
  • ​特点​​:
    • 保留左表所有记录
    • 右表不匹配的显示为NULL

RIGHT JOIN

  • ​作用​​:返回右表所有记录,左表无匹配则为NULL
  • ​示例​​:SELECT t.teacher_name, s.name FROM teachers t RIGHT JOIN students s ON t.id = s.teacher_id;
  • ​特点​​:
    • 保留右表所有记录
    • 使用频率低于LEFT JOIN

3. 数据分组与聚合

GROUP BY

  • ​作用​​:按指定列分组
  • ​示例​​:SELECT class_id, AVG(score) FROM scores GROUP BY class_id;
  • ​特点​​:
    • 通常与聚合函数一起使用
    • SELECT中的非聚合列必须在GROUP BY中

HAVING

  • ​作用​​:过滤分组结果
  • ​示例​​:SELECT class_id, AVG(score) as avg_score FROM scores GROUP BY class_id HAVING AVG(score) > 80;
  • ​与WHERE区别​​:
    • WHERE在分组前过滤行
    • HAVING在分组后过滤组

常用聚合函数

函数说明示例
COUNT()计数COUNT(student_id)
SUM()求和SUM(score)
AVG()平均值AVG(score)
MAX()最大值MAX(score)
MIN()最小值MIN(score)

4. 数据排序与限制

ORDER BY

  • ​作用​​:对结果排序
  • ​示例​​:SELECT * FROM students ORDER BY score DESC, name ASC;
  • ​排序方式​​:
    • ASC:升序(默认)
    • DESC:降序

LIMIT

  • ​作用​​:限制返回记录数
  • ​示例​​:SELECT * FROM students LIMIT 10; -- 前10条 SELECT * FROM students LIMIT 5, 10; -- 从第5条开始取10条
  • ​分页应用​​:-- 第3页,每页20条 SELECT * FROM products LIMIT 40, 20;

5. 数据操作关键字

INSERT

  • ​作用​​:插入新记录
  • ​示例​​:INSERT INTO students (name, age) VALUES ('张三', 18);

UPDATE

  • ​作用​​:修改记录
  • ​示例​​:UPDATE students SET score = 90 WHERE id = 1001;

DELETE

  • ​作用​​:删除记录
  • ​示例​​:DELETE FROM students WHERE id = 1001;

6. 高级查询关键字

DISTINCT

  • ​作用​​:去重
  • ​示例​​:SELECT DISTINCT class_id FROM students;

CASE WHEN

  • ​作用​​:条件判断
  • ​示例​​:SELECT name, CASE WHEN score >= 90 THEN '优秀' WHEN score >= 60 THEN '及格' ELSE '不及格' END AS level FROM students;

UNION

  • ​作用​​:合并查询结果
  • ​示例​​:SELECT name FROM teachers UNION SELECT name FROM students;
  • ​特点​​:
    • 默认去重
    • UNION ALL保留重复记录

7. 子查询相关

EXISTS

  • ​作用​​:检查子查询是否返回结果
  • ​示例​​:SELECT name FROM students s WHERE EXISTS ( SELECT 1 FROM scores WHERE student_id = s.id );

IN

  • ​作用​​:判断值是否在子查询结果中
  • ​示例​​:SELECT name FROM students WHERE id IN (SELECT student_id FROM scores WHERE score > 90);

8. 事务控制关键字

BEGIN / START TRANSACTION

  • ​作用​​:开始事务
  • ​示例​​:BEGIN; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT;

COMMIT

  • ​作用​​:提交事务

ROLLBACK

  • ​作用​​:回滚事务

学习建议

  1. 按功能分类记忆关键字
  2. 多练习组合使用不同关键字
  3. 注意各关键字在SQL语句中的执行顺序
  4. 重点关注WHERE、GROUP BY、HAVING的区别
  5. 掌握JOIN的几种类型和使用场景

执行顺序总结

SQL关键字的逻辑执行顺序:

记住这个顺序有助于理解复杂SQL的执行逻辑!



微信扫描下方的二维码阅读本文

没有账号? 忘记密码?

社交账号快速登录