首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> SQL 基礎

SQL SELECT 語句完整教學:查詢基礎語法、欄位選取與結果集導航

     編輯:SQL 基礎

SQL SELECT 查詢基礎完整教學


SELECT 是 SQL 最核心、使用最頻繁的指令,用於從資料庫中查詢並取回資料。結果以「結果集」形式呈現,供應用程式逐列處理。


基本語法

指定欄位查詢

SELECT column_name, column_name
FROM table_name;

查詢所有欄位

SELECT * FROM table_name;
  • * 代表所有欄位,順序依表定義。
  • 生產環境建議明確列出欄位,避免表結構變更衝擊、減少網路傳輸、利於索引覆蓋查詢。

演示資料庫:RUNOOB 範例資料

Websites 表

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘寶         | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鳥教程     | https://www.runoob.com/    | 4689  | CN      |
| 4  | 微博         | https://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
+----+--------------+---------------------------+-------+---------+

實戰範例

範例 1:SELECT Column - 選取 name、country

SELECT name, country FROM Websites;

輸出結果:

範例 2:SELECT * - 選取所有欄位

SELECT * FROM Websites;

輸出結果:


進階 SELECT 子句完整順序

SELECT [DISTINCT] select_list
FROM table_list
[WHERE condition]
[GROUP BY group_list]
[HAVING condition]
[ORDER BY order_list]
[LIMIT/OFFSET / FETCH FIRST];

各子句執行邏輯順序:FROM → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT。


結果集導航(應用程式層)

資料庫驅動程式提供游標式 API 逐列讀取結果集:

  • JDBC:ResultSet.next()、getString() 等。
  • Python DB-API:cursor.fetchone()、fetchall()、fetchmany()。
  • PHP PDO:$stmt->fetch()、fetchAll()。
  • Node.js:rows 陣列或串流模式。

本教程專注 SQL 語法,程式語言整合請參考各語言的資料庫教學(ADO、PHP、Python、Java 等)。


常用 SELECT 進階技巧

技巧語法範例說明
欄位別名SELECT name AS site_name重新命名輸出欄位
運算式/函數SELECT UPPER(name), alexa * 10即時計算衍生欄位
常數欄位SELECT 'Web' AS source, name固定值輔助識別來源
子查詢欄位SELECT name, (SELECT COUNT(*) FROM logs WHERE site_id=w.id) AS visits相關子查詢產生衍生欄位
CASE 運算式SELECT name, CASE WHEN alexa<100 THEN 'Hot' ELSE 'Normal' END AS level條件邏輯產生分類欄位

最佳實務總結

  1. 明確列出需要的欄位,避免 SELECT *。
  2. 善用別名提升可讀性。
  3. WHERE 條件儘早過濾,減少後續處理資料量。
  4. 大結果集使用分頁(LIMIT/OFFSET 或游標)。
  5. 參數化查詢防止 SQL 注入。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved