MySQL 基础查询语句参考手册
一、基本查询操作
-
从表中选取特定列
sql
-- 从 employees 表中选取 last_name 列 SELECT last_name FROM employees; -- 从 employees 表中选取 last_name、salary、email 列 SELECT last_name, salary, email FROM employees;
-
获取表的全部列信息
sql
-- 从 jobs 表中获取所有列的信息 SELECT * FROM jobs;
-
查询常量、表达式以及函数结果
sql
-- 查询数字常量 100 SELECT 100; -- 查询字符串常量 'join' SELECT 'join'; -- 计算表达式 100 * 8 的值 SELECT 100 * 8; -- 调用 VERSION() 函数获取 MySQL 版本号 SELECT VERSION();
二、查询结果的优化处理
-
为列或结果设置别名
sql
-- 方式一:使用 AS 关键字 SELECT 100 AS 计算结果; -- 方式二:省略 AS 关键字 SELECT 100 计算结果;
-
去除查询结果中的重复值
sql
-- 从 employees 表中选取不重复的 department_id 列 SELECT DISTINCT department_id FROM employees;
-
进行字符串拼接操作
sql
-- 使用 CONCAT 函数拼接字符串 'a' 和 'b' SELECT CONCAT('a', 'b') AS 拼接结果;
三、条件查询功能
-
条件运算符的运用
sql
-- 查找 salary 列值大于等于 10000 的员工记录 SELECT * FROM employees WHERE salary >= 10000; -- 查找 department_id 列值不等于 90 的员工的 last_name 和 department_id SELECT last_name, department_id FROM employees WHERE department_id != 90; -- 查找 salary 列值在 10000 到 20000 之间的员工记录 SELECT last_name, salary, commission_pct FROM employees WHERE salary BETWEEN 10000 AND 20000;
-
模糊查询的实现
sql
-- 查找 last_name 列值包含字母 'a' 的员工记录(% 代表任意多个字符) SELECT * FROM employees WHERE last_name LIKE '%a%'; -- 查找 last_name 列值为 5 个字符且第三个字符为 'e'、第五个字符为 'a' 的员工记录(_ 代表单个字符) SELECT * FROM employees WHERE last_name LIKE '__e_a%';
-
处理 NULL 值的查询
sql
-- 查找 commission_pct 列值为 NULL 的员工记录 SELECT * FROM employees WHERE commission_pct IS NULL; -- 查找 commission_pct 列值不为 NULL 的员工记录 SELECT * FROM employees WHERE commission_pct IS NOT NULL;
四、运算符与逻辑操作符
运算符类型 | 运算符列表 | 说明 | ||
---|---|---|---|---|
比较运算符 | = , > , < , >= , <= , != | 用于比较两个值的大小关系 | ||
逻辑运算符 | AND /&& , OR /` | , NOT/ !` | 用于组合多个查询条件 | |
模糊匹配符 | LIKE | 结合 % 或 _ 进行模式匹配 | ||
范围运算符 | BETWEEN ... AND ... | 用于指定一个值的范围 | ||
集合运算符 | IN | 用于判断值是否在指定的集合中 |
五、注意要点
-
运算符的优先级
- 比较运算符的优先级高于逻辑运算符。
- 可以使用括号
()
来明确查询条件的执行顺序。
-
性能方面的考量
- 在使用
LIKE
进行模糊查询时,避免以%
开头,因为这可能会导致全表扫描,影响查询性能。 - 对于大数据量的去重操作,
DISTINCT
可能会使查询性能下降,需要谨慎使用。
- 在使用
-
转义字符的使用
- 当需要匹配
%
或_
本身时,需要使用转义字符\
。
sql
-- 查找 last_name 列值包含 '%' 的员工记录 SELECT * FROM employees WHERE last_name LIKE '%\%';
- 当需要匹配
附录:示例表结构
-
employees 表
列名 数据类型 说明 employee_id INT 员工编号,主键 last_name VARCHAR(50) 员工姓氏 salary DECIMAL(10,2) 员工工资 email VARCHAR(100) 员工邮箱 department_id INT 员工所在部门编号 commission_pct DECIMAL(4,2) 员工奖金比例(可能为 NULL) -
departments 表
列名 数据类型 说明 department_id INT 部门编号,主键 department_name VARCHAR(50) 部门名称 manager_id INT 部门经理编号 -
jobs 表
列名 数据类型 说明 job_id INT 职位编号,主键 job_title VARCHAR(50) 职位名称 min_salary DECIMAL(10,2) 该职位的最低工资 max_salary DECIMAL(10,2) 该职位的最高工资