关键字详解与应用
SELECT
- 用途: 选择表中的一列或多列数据。
- 常见问题: 如何选择不同表中的数据并进行合并?
- 解决方案: 使用
JOIN
关键字来连接表,并通过ON
条件指定连接条件。
SELECT a.name, b.salary FROM employees a JOIN salaries b ON a.employee_id = b.employee_id
WHERE
- 用途: 对查询的结果进行条件过滤。
- 常见问题: 如何进行多条件过滤?
- 解决方案: 使用
AND
、OR
来组合多个条件。
SELECT * FROM users WHERE age > 18 AND status = 'active'
GROUP BY & HAVING
- 用途:
GROUP BY
用于根据一列或多列对结果集进行分组。HAVING
用于对GROUP BY
生成的分组结果进行条件过滤。 - 常见问题:
GROUP BY
与HAVING
的区别? - 解决方案:
GROUP BY
分组后,HAVING
可以对分组后的聚合结果应用条件。
SELECT department, AVG(salary) FROM employees GROUP BY department HAVING AVG(salary) > 50000
- 用途:
JOIN
- 用途: 用于连接两个或多个表,可以是内连接、外连接(左、右、全)或交叉连接。
- 常见问题: 如何选择使用哪种类型的连接?
- 解决方案: 选择连接类型取决于你需要从参与连接的表中选择哪些行。
- INNER JOIN: 仅返回两个表中匹配的行。
- LEFT JOIN: 返回左表的所有行,即使右表中没有匹配。
- RIGHT JOIN: 返回右表的所有行,即使左表中没有匹配。
- FULL JOIN: 返回两个表中的行,无论是否匹配。
TRANSACTION 控制
- 用途:
COMMIT
用于提交事务,保证所有操作都被永久保存。ROLLBACK
用于撤销事务中的所有操作。 - 常见问题: 什么时候应该使用事务?
- 解决方案: 当你需要确保多个操作要么全部成功要么全部失败时,应该使用事务。例如,当更新用户的银行账户时,从一个账户扣款并向另一个账户加款应该作为一个单一事务处理。
- 用途:
增加知识点的实用示例
使用 UNION 和 UNION ALL
- UNION 用于合并两个
SELECT
语句的结果集,并消除重复行。 - UNION ALL 返回所有结果,包括重复的。
SELECT name FROM employees UNION ALL SELECT name FROM clients
- UNION 用于合并两个
使用 DISTINCT
- 用途: 返回唯一不同的值。
SELECT DISTINCT status FROM orders
使用 ALIAS (AS)
- 用途: 给表或字段指定一个别名,使查询更清晰易懂。
SELECT last_name AS surname FROM employees
拓展
Mysql 字段名与关键字重名如何写查询语句
解决方案:(用反引号 `包裹)当字段名与关键字重名时,可以使用反引号(`)将字段名括起来,以避免冲突。
- 例如,假设有一个表格名为users,其中有一个字段名为select。如果要使用含有关键字的字段名进行查询,可以使用以下语法:
SELECT `select`
FROM `users`
- 通过使用反引号将关键字括起来,MySQL 将识别字段名而不是关键字。