返回
SQL 基础与执行过程
百科(权威知识源 · 考试范围)
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 门)
暂无课程
登录后可查看我的出题、测试记录并参加满分考试