首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL SELECT 查詢全解析:從基礎語法到多表連接

     編輯:MySQL 資料庫相關知識

SELECT 語法結構速覽

SELECT selection_list      -- 查詢哪些欄位
FROM table_list            -- 從哪些表查詢
WHERE primary_constraint   -- 篩選條件
GROUP BY grouping_columns  -- 分組依據
ORDER BY sorting_columns   -- 排序規則
HAVING secondary_constraint-- 分組後過濾
LIMIT count;               -- 限制筆數

基礎查詢實例

1. 查詢單表所有欄位

MySQL> USE tpsc;
MySQL> SELECT * FROM user;
+----+------+----------+--------------+
| id | user | lxdh     | jtdz         |
+----+------+----------+--------------+
|  1 | aaa  | 12345678 | 隨風倒十分上 |
|  2 | sss  | 87654321 | 計劃看見合   |
+----+------+----------+--------------+

2. 指定欄位查詢

MySQL> SELECT id, lxdh FROM user;
+----+----------+
| id | lxdh     |
+----+----------+
|  1 | 12345678 |
|  2 | 87654321 |
+----+----------+

3. 條件篩選

MySQL> SELECT * FROM user WHERE id < 3;

多表查詢與連接

從多表獲取資料時,在 FROM 後列出所有表,並在 WHERE 中指定連接條件:

MySQL> SELECT jtsr FROM user, jtsr
    -> WHERE user.user = jtsr.user AND user.lxdh = '12345678';
+------+
| jtsr |
+------+
| 1000 |
+------+

連接類型說明

  • 等值連接:user.user = jtsr.user,依關聯欄位匹配。
  • 笛卡爾積(全連接):缺少連接條件,產生所有行組合,極易導致效能災難。

進階子句應用

子句用途注意事項
GROUP BY分組聚合非聚合欄位需包含在 GROUP BY 中
HAVING分組後過濾可使用聚合函數,WHERE 不可
ORDER BY結果排序預設 ASC,大量資料需配合 LIMIT
LIMIT分頁/取樣OFFSET 大時效能下降,建議用游標分頁

效能優化提醒

  • 避免 SELECT *,只取需要欄位,減少網路傳輸與 I/O。
  • WHERE、JOIN、ORDER BY 欄位建立適當索引。
  • 大表分頁改用「延遲關聯」或「游標分頁」避免深分頁效能問題。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved