返回
SQL 基础与执行过程
百科(权威知识源 · 考试范围)
作者:管理员最后更新:2026/9/4 12:41:09审核:管理员

SQL 基础、执行过程与注入防御

SQL(Structured Query Language)是操作关系型数据库的标准语言。

SQL 分类

  • DDL(数据定义):CREATE、ALTER、DROP(建表/改结构)。
  • DML(数据操作):INSERT、UPDATE、DELETE(增删改)。
  • DQL(数据查询):SELECT(查询)。
  • DCL(数据控制):GRANT、REVOKE(权限)。

常用查询子句

SELECT column
FROM table
WHERE condition      -- 分组前过滤
GROUP BY col        -- 分组
HAVING cond         -- 分组后过滤
ORDER BY col        -- 排序
LIMIT 10;           -- 分页
  • WHERE 在分组前过滤,HAVING 在分组后过滤。
  • 连接:INNER JOIN(内连接,只返回匹配行)、LEFT/RIGHT JOIN(外连接)。

SELECT 执行过程

一条 SELECT 执行流程:

客户端 → 连接器 → 分析器(词法/语法) → 优化器(选索引/执行计划) → 执行器(调存储引擎取数据)

(MySQL 8.0 已移除查询缓存。)

SQL 注入与防御

SQL 注入:把用户输入未过滤地拼接进 SQL 语句执行,导致数据泄露/篡改。

// 危险:字符串拼接
String sql = "SELECT * FROM user WHERE name='" + name + "'";

// 安全:预编译参数(PreparedStatement / MyBatis #{})
String sql = "SELECT * FROM user WHERE name=?";
ps.setString(1, name);

预编译参数(PreparedStatement / MyBatis #{})可有效防注入,且性能更好。

优化实践

  • 避免 select *,只查需要的列。
  • 大偏移分页(limit 100000, 20)较慢,可用延迟关联或游标优化。
  • 慎用 OR 与索引列上的函数。
  • EXPLAIN 分析执行计划。

总结

  • SQL 分 DDL/DML/DQL/DCL;查询用 WHERE/HAVING/JOIN 等。
  • SELECT 经解析器、优化器、执行器执行。
  • 用预编译参数防注入;用 EXPLAIN 优化查询。
考试信息
通过标准满分(错一道即与满分无缘,可把整卷答完看解析;重考不限次数)
时间限制不限时
单卷抽题数10 题
成绩窗口2026-09-14 ~ 2026-09-20
积分学费10 积分
支付方式满分后用积分支付(自主决定)
用积分支付:成绩长期保留,参与排名,积分学费含平台资助池;不支付:成绩保留至窗口截止后清空
积分无充值通道;积分不足 10 时,平台自动发放 100 积分。积分不可提现、不可转让、无现金价值。
排行榜(窗口期最短满分用时 · 前 0 名)
当前窗口(2026-09-14 ~ 2026-09-20)

该窗口暂无满分记录

课程(免费学习 · 共 0 门)

暂无课程

登录后可查看我的出题、测试记录并参加满分考试