在資料庫管理與開發過程中,熟練掌握資料查詢語法是提升效率與解決問題的關鍵。SQL Server 與 Oracle 是目前兩大主流關聯式資料庫系統,其查詢語法雖遵循 SQL 標準,但部分細節仍存在差異。本文將針對常見查詢操作,說明 SQL Server 與 Oracle 的語法使用方式,以便開發者能靈活運用。
一、基礎資料查詢
1. 查詢全部欄位
- SQL Server / Oracle 共通:
SELECT * FROM TableName;
2. 查詢指定欄位
- SQL Server / Oracle 共通:
SELECT Column1, Column2 FROM TableName;
3. 查詢不重複資料
- SQL Server / Oracle 共通:
SELECT DISTINCT ColumnName FROM TableName;
二、條件篩選
1. 使用 WHERE 子句
- SQL Server / Oracle 共通:
SELECT * FROM TableName WHERE ColumnName = 'Value';
2. 比較運算符
運算符 | 說明 |
---|
= | 等於 |
<> 或 != | 不等於 |
> | 大於 |
< | 小於 |
>= | 大於等於 |
<= | 小於等於 |
3. 邏輯運算符
4. 模糊查詢
- SQL Server / Oracle 共通:
SELECT * FROM TableName WHERE ColumnName LIKE 'A%';
三、排序與分頁
1. 資料排序
- SQL Server / Oracle 共通:
SELECT * FROM TableName ORDER BY ColumnName [ASC|DESC];
2. 資料分頁
- SQL Server:
SELECT * FROM TableName ORDER BY ColumnName OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;
- Oracle(12c 以上版本):
SELECT * FROM TableName ORDER BY ColumnName OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;
- Oracle(12c 以下版本):
SELECT * FROM ( SELECT A.*, ROWNUM AS RN FROM TableName A WHERE ROWNUM <= 20 ) WHERE RN > 10;
四、聚合函數與分組
1. 常用聚合函數
函數 | 說明 |
COUNT() | 計算筆數 |
SUM() | 求和 |
AVG() | 平均值 |
MAX() | 最大值 |
MIN() | 最小值 |
2. 使用 GROUP BY 分組
- SQL Server / Oracle 共通:
SELECT Column1, COUNT(*) FROM TableName GROUP BY Column1;
3. 使用 HAVING 過濾分組結果
- SQL Server / Oracle 共通:
SELECT Column1, COUNT(*) FROM TableName GROUP BY Column1 HAVING COUNT(*) > 1;
五、資料表連接
1. INNER JOIN
- SQL Server / Oracle 共通:
SELECT A.Column1, B.Column2 FROM TableA A INNER JOIN TableB B ON A.KeyColumn = B.KeyColumn;
2. LEFT JOIN
- SQL Server / Oracle 共通:
SELECT A.Column1, B.Column2 FROM TableA A LEFT JOIN TableB B ON A.KeyColumn = B.KeyColumn;
3. RIGHT JOIN
- SQL Server / Oracle 共通:
SELECT A.Column1, B.Column2 FROM TableA A RIGHT JOIN TableB B ON A.KeyColumn = B.KeyColumn;
六、查詢最佳化建議
- 使用索引:
- 避免 SELECT *:
- 使用 EXPLAIN 或執行計劃分析查詢性能。
- 避免在 WHERE 條件對欄位使用函數運算,影響索引使用。
透過掌握 SQL Server 與 Oracle 查詢語法的差異與最佳實踐,能有效提升資料庫操作效率,並為企業數據分析與應用開發奠定堅實基礎。