萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

SQL SELECT 語句完整指南:基礎查詢、聚合函數、報表引擎擴展語法與常見錯誤模式

基礎 SELECT 語法


SELECT column1, column2 FROM table_name;
SELECT * FROM table_name;
-- 不區分大小寫

聚合函數 (Group Functions)

函數說明範例
AVG(col)平均值SELECT AVG(sales) FROM store_info
COUNT(col)非 NULL 計數SELECT COUNT(*) FROM users
MAX(col)最大值SELECT MAX(price) FROM products
MIN(col)最小值SELECT MIN(price) FROM products
SUM(col)總和SELECT SUM(sales) FROM store_info

聚合實戰範例


-- store_information 表
store_name | sales | date
LA         | 1500  | 1999-01-05
SD         | 250   | 1999-01-07
LA         | 300   | 1999-01-08
Boston     | 700   | 1999-01-08

SELECT SUM(sales) FROM store_information;  -- 2750
SELECT store_name, SUM(sales) FROM store_information GROUP BY store_name;
-- LA 1800, SD 250, Boston 700

報表引擎擴展語法 (單元格引用)

在報表工具 (如 FineReport、JasperReports) 中,SELECT 擴展出的單元格保留資料指標:

  • 主單元格:dataset.col
  • 附屬單元格:直接用 dataset.col 參考**同一列**其他欄位,**無需重新查詢**

-- 正確:同一資料集同一列
A1: =ds1.name
B1: =ds1.age   -- 直接引用 ds1 當前列的 age

-- 錯誤:重新查詢
B1: =ds1.select("age")  -- 效能差、易出錯

典型 SELECT 用法圖解


-- 典型:單一資料集,單元格直接引用欄位
SELECT name, age, salary FROM employee WHERE dept='IT';

-- 不合理:同一資料集多次 SELECT
SELECT name FROM employee WHERE dept='IT';   -- A1
SELECT age FROM employee WHERE dept='IT';    -- B1 (重複掃描)

常見錯誤模式

  1. SELECT *:網路傳輸大、無法使用覆蓋索引、Schema 變更易出錯
  2. 缺少 WHERE:全表掃描
  3. 聚合未 GROUP BY:MySQL ONLY_FULL_GROUP_BY 模式報錯
  4. 子查詢濫用:改用 JOIN 或 CTE
  5. 隱含型別轉換:WHERE varchar_col = 123 導致索引失效
copyright © 萬盛學電腦網 all rights reserved