您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何使用MySQL查询语句
## 引言
MySQL作为最流行的开源关系型数据库管理系统,被广泛应用于Web开发、数据分析等领域。掌握MySQL查询语句是数据库操作的基础,本文将系统介绍SELECT查询、条件过滤、排序分组、多表连接等核心语法,帮助读者从入门到熟练使用MySQL进行数据检索。
---
## 一、基础SELECT查询
### 1.1 基本语法结构
```sql
SELECT 列名1, 列名2,...
FROM 表名
[WHERE 条件]
[ORDER BY 排序字段]
[LIMIT 行数];
-- 查询employees表所有数据
SELECT * FROM employees;
-- 只查询员工姓名和工资
SELECT first_name, salary FROM employees;
SELECT
first_name AS '名',
last_name AS '姓',
salary*12 AS '年薪'
FROM employees;
运算符 | 说明 | 示例 |
---|---|---|
= | 等于 | salary = 5000 |
> | 大于 | hire_date > ‘2020-01-01’ |
<> | 不等于 | department_id <> 10 |
BETWEEN | 范围匹配 | salary BETWEEN 4000 AND 6000 |
-- 查询工资超过10000的员工
SELECT * FROM employees
WHERE salary > 10000;
-- AND示例:查询部门10且工资>5000的员工
SELECT * FROM employees
WHERE department_id = 10 AND salary > 5000;
-- OR示例:查询部门10或20的员工
SELECT * FROM employees
WHERE department_id = 10 OR department_id = 20;
-- NOT示例:查询不在部门10的员工
SELECT * FROM employees
WHERE NOT department_id = 10;
-- 查询部门号为10,20,30的员工
SELECT * FROM employees
WHERE department_id IN (10, 20, 30);
-- %表示任意多个字符
SELECT * FROM employees
WHERE first_name LIKE 'J%'; -- 以J开头的名字
-- _表示单个字符
SELECT * FROM employees
WHERE phone_number LIKE '515.___.____'; -- 匹配515开头的电话
-- 按工资降序排序
SELECT * FROM employees
ORDER BY salary DESC;
-- 多列排序:先按部门升序,同部门按工资降序
SELECT * FROM employees
ORDER BY department_id ASC, salary DESC;
-- 查询前5条记录
SELECT * FROM employees
LIMIT 5;
-- 分页查询(每页10条,第3页)
SELECT * FROM employees
LIMIT 20, 10; -- 偏移量20,取10条
函数 | 说明 |
---|---|
COUNT() | 计数 |
SUM() | 求和 |
AVG() | 平均值 |
MAX() | 最大值 |
MIN() | 最小值 |
GROUP_CONCAT() | 连接字符串 |
-- 计算员工总数
SELECT COUNT(*) FROM employees;
-- 计算平均工资
SELECT AVG(salary) FROM employees;
-- 按部门统计平均工资
SELECT
department_id,
AVG(salary) AS avg_salary,
COUNT(*) AS emp_count
FROM employees
GROUP BY department_id;
-- 查询平均工资>8000的部门
SELECT
department_id,
AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id
HAVING avg_salary > 8000;
-- 查询员工及其部门信息
SELECT
e.first_name,
e.salary,
d.department_name
FROM employees e
INNER JOIN departments d
ON e.department_id = d.department_id;
-- 查询所有员工(包括没有部门的员工)
SELECT
e.first_name,
d.department_name
FROM employees e
LEFT JOIN departments d
ON e.department_id = d.department_id;
-- 查询员工及其经理信息
SELECT
e1.first_name AS employee,
e2.first_name AS manager
FROM employees e1
LEFT JOIN employees e2
ON e1.manager_id = e2.employee_id;
-- 查询工资高于平均工资的员工
SELECT * FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
-- 查询各部门工资排名
SELECT
department_id,
first_name,
salary,
salary_rank
FROM (
SELECT
department_id,
first_name,
salary,
RANK() OVER(PARTITION BY department_id ORDER BY salary DESC) AS salary_rank
FROM employees
) ranked_employees
WHERE salary_rank <= 3;
-- 查询有下属的员工
SELECT * FROM employees e1
WHERE EXISTS (
SELECT 1 FROM employees e2
WHERE e2.manager_id = e1.employee_id
);
-- 字符串拼接
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
-- 大小写转换
SELECT UPPER(first_name), LOWER(last_name) FROM employees;
-- 计算员工工龄
SELECT
first_name,
DATEDIFF(CURRENT_DATE(), hire_date)/365 AS years_employed
FROM employees;
-- CASE WHEN条件判断
SELECT
first_name,
salary,
CASE
WHEN salary > 10000 THEN '高薪'
WHEN salary > 5000 THEN '中等'
ELSE '一般'
END AS salary_level
FROM employees;
-- 使用EXPLN分析查询
EXPLN SELECT * FROM employees WHERE department_id = 10;
本文系统介绍了MySQL查询语句的核心语法和使用技巧。实际应用中,需要根据业务需求灵活组合各种查询方式。建议读者通过实践练习掌握这些技术,并持续学习窗口函数、CTE等高级特性以应对更复杂的数据处理场景。
注意:所有示例基于MySQL 8.0语法,部分函数在旧版本中可能不支持 “`
(全文约2700字,实际字数可能因格式略有差异)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。