题目
查询特定姓氏的员工信息
信息
- 类型:问答
- 难度:⭐
考点
SELECT基本查询,WHERE条件过滤,LIKE模糊查询
快速回答
使用SELECT语句选择特定列,通过WHERE子句配合LIKE操作符实现模糊查询:
SELECT first_name, last_name, department FROM employeesWHERE last_name LIKE '张%'- 通配符
%表示匹配任意字符序列
原理说明
该题目考察MySQL基础查询能力:
1. SELECT:指定需要返回的列(避免使用SELECT *)
2. WHERE:过滤不符合条件的记录
3. LIKE:配合通配符实现模式匹配,'张%'表示以"张"开头
代码示例
-- 创建测试表
CREATE TABLE employees (
id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
department VARCHAR(50)
);
-- 插入测试数据
INSERT INTO employees VALUES
(1, '三', '张三', '技术部'),
(2, '小华', '李华', '销售部'),
(3, '明', '张明', '人事部');
-- 解决方案
SELECT first_name, last_name, department
FROM employees
WHERE last_name LIKE '张%';执行结果
| first_name | last_name | department |
|---|---|---|
| 三 | 张三 | 技术部 |
| 明 | 张明 | 人事部 |
最佳实践
- 💡 明确选择列:避免
SELECT *,减少不必要的数据传输 - 💡 通配符位置:
LIKE '张%'(前缀匹配)可能使用索引,而LIKE '%张'(后缀匹配)会导致全表扫描 - 💡 大小写敏感:MySQL默认不区分大小写,但依赖字符集(如utf8_general_ci)
常见错误
- ❌ 忘记引号:
WHERE last_name = 张%(正确应加单引号) - ❌ 通配符错误:
LIKE '张_'(_仅匹配单个字符) - ❌ 性能陷阱:
LIKE '%张%'在大型表中效率极低
扩展知识
- 📌 通配符类型:
-%:匹配0-N个任意字符
-_:匹配单个任意字符 - 📌 索引优化:对
last_name字段建立索引可加速前缀匹配查询 - 📌 ESCAPE转义:查询含
%本身时使用LIKE '%\%%' ESCAPE '\'