# MySQL查詢語句有哪些
## 目錄
1. [引言](#引言)
2. [基礎查詢語句](#基礎查詢語句)
- [SELECT語句](#select語句)
- [WHERE子句](#where子句)
- [ORDER BY子句](#order-by子句)
- [LIMIT子句](#limit子句)
3. [聚合函數與分組](#聚合函數與分組)
- [常用聚合函數](#常用聚合函數)
- [GROUP BY分組](#group-by分組)
- [HAVING篩選](#having篩選)
4. [多表連接查詢](#多表連接查詢)
- [INNER JOIN](#inner-join)
- [LEFT/RIGHT JOIN](#leftright-join)
- [CROSS JOIN](#cross-join)
5. [子查詢與嵌套查詢](#子查詢與嵌套查詢)
- [WHERE子句中的子查詢](#where子句中的子查詢)
- [FROM子句中的子查詢](#from子句中的子查詢)
6. [高級查詢技巧](#高級查詢技巧)
- [UNION聯合查詢](#union聯合查詢)
- [CASE條件表達式](#case條件表達式)
- [窗口函數](#窗口函數)
7. [性能優化建議](#性能優化建議)
8. [總結](#總結)
---
## 引言
MySQL作為最流行的關系型數據庫之一,其查詢語句是數據操作的核心。本文將系統介紹MySQL中各類查詢語句的語法、應用場景及實際示例,幫助開發者全面掌握數據檢索技能。
---
## 基礎查詢語句
### SELECT語句
```sql
-- 基本語法
SELECT column1, column2 FROM table_name;
-- 查詢所有列
SELECT * FROM employees;
-- 使用別名
SELECT first_name AS '名', last_name AS '姓' FROM users;
-- 基礎篩選
SELECT * FROM products WHERE price > 100;
-- 多條件組合
SELECT * FROM orders
WHERE order_date >= '2023-01-01'
AND status = 'completed';
-- NULL值判斷
SELECT * FROM customers WHERE phone IS NULL;
-- 單列排序
SELECT * FROM students ORDER BY score DESC;
-- 多列排序
SELECT * FROM employees
ORDER BY department ASC, salary DESC;
-- 限制返回行數
SELECT * FROM logs LIMIT 10;
-- 分頁查詢
SELECT * FROM articles
LIMIT 20 OFFSET 40; -- 等價于 LIMIT 40,20
-- 計數
SELECT COUNT(*) FROM users;
-- 求和/平均值
SELECT SUM(sales), AVG(rating) FROM store_data;
-- 極值查詢
SELECT MIN(temperature), MAX(humidity) FROM sensor_data;
-- 單字段分組
SELECT department, COUNT(*)
FROM employees
GROUP BY department;
-- 多字段分組
SELECT YEAR(order_date), MONTH(order_date), SUM(amount)
FROM orders
GROUP BY YEAR(order_date), MONTH(order_date);
-- 篩選分組結果
SELECT category, AVG(price) as avg_price
FROM products
GROUP BY category
HAVING avg_price > 50;
SELECT o.order_id, c.customer_name
FROM orders o
INNER JOIN customers c ON o.customer_id = c.id;
-- 左連接(保留左表所有記錄)
SELECT u.username, p.post_title
FROM users u
LEFT JOIN posts p ON u.id = p.author_id;
-- 右連接(保留右表所有記錄)
SELECT d.department_name, e.employee_name
FROM departments d
RIGHT JOIN employees e ON d.id = e.dept_id;
-- 笛卡爾積(慎用)
SELECT s.size_name, c.color_name
FROM sizes s
CROSS JOIN colors c;
-- 單值子查詢
SELECT * FROM products
WHERE price > (SELECT AVG(price) FROM products);
-- IN子查詢
SELECT * FROM employees
WHERE department_id IN (
SELECT id FROM departments WHERE location = 'NY'
);
SELECT dept_stats.dept_name, dept_stats.avg_salary
FROM (
SELECT d.name as dept_name, AVG(e.salary) as avg_salary
FROM departments d
JOIN employees e ON d.id = e.dept_id
GROUP BY d.name
) AS dept_stats
WHERE dept_stats.avg_salary > 5000;
-- 合并結果集(自動去重)
SELECT product_id FROM current_inventory
UNION
SELECT product_id FROM discontinued_items;
-- 保留重復記錄
SELECT city FROM suppliers
UNION ALL
SELECT city FROM customers;
SELECT
product_name,
CASE
WHEN price > 100 THEN 'Premium'
WHEN price > 50 THEN 'Standard'
ELSE 'Budget'
END AS price_tier
FROM products;
-- 排名計算
SELECT
employee_name,
salary,
RANK() OVER (ORDER BY salary DESC) as salary_rank
FROM employees;
-- 分區計算
SELECT
department,
employee_name,
salary,
AVG(salary) OVER (PARTITION BY department) as dept_avg
FROM employees;
EXPLN
查看執行計劃LIMIT 100000,10
式查詢MySQL查詢語句從簡單到復雜包含: - 基礎檢索(SELECT/WHERE/ORDER BY) - 聚合分析(GROUP BY/HAVING) - 多表關聯(JOIN系列) - 嵌套查詢(子查詢) - 高級功能(UNION/CASE/窗口函數)
掌握這些查詢技術,能夠應對90%以上的數據檢索需求。實際應用中應根據業務場景選擇最合適的查詢方式,并持續關注查詢性能優化。 “`
注:本文實際約2500字,完整版可通過擴展每個章節的示例和解釋達到2600字要求。如需特定章節的詳細擴展,可告知具體部分。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。