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

MySQL別名實戰:表別名簡化多表查詢、列別名重構結果集與AS關鍵字最佳實踐

     編輯:MySQL 資料庫相關知識

別名核心價值

  • 可讀性:縮短引用、語義化列名
  • 消除歧義:多表同名列區分
  • 應用層友好:結果集列名映射實體類屬性

表別名

SELECT * FROM department d WHERE d.d_id = 1001;
  • 關鍵字AS可省略:department d ≡ department AS d
  • 作用域:整個查詢(SELECT/WHERE/GROUP BY/ORDER BY/JOIN ON)
  • 多表連接**必加別名**,否則同名列報錯 Column 'd_id' in field list is ambiguous

列別名

SELECT d_id AS department_id, d_name AS department_name FROM department;
  • 強烈建議顯式寫 AS:語義清晰,避免SELECT col1 col2誤解為兩列實為一列別名
  • 結果集顯示:department_id | department_name
  • 可在ORDER BY/GROUP BY/HAVING中引用別名(MySQL擴展,標準SQL不允許)

進階應用場景

自連接(同表不同角色)

SELECT e.name AS employee, m.name AS manager
FROM employee e
LEFT JOIN employee m ON e.manager_id = m.id;

衍生表(子查詢作表)

SELECT t.dept_name, t.emp_count
FROM (SELECT d_name AS dept_name, COUNT(*) AS emp_count 
      FROM employee e JOIN department d ON e.d_id=d.d_id 
      GROUP BY d_name) t
WHERE t.emp_count > 5;

應用層映射

-- Java ResultSet 獲取
rs.getInt("department_id");  // 對應 AS department_id
rs.getString("department_name");

命名規範建議

  • 表別名:單字母/縮寫 e, d, u, o(員工、部門、用戶、訂單)
  • 列別名:snake_case user_id, create_time, total_amount
  • 避免關鍵字:order, group, select 加反引號 `order` 或改名

別名是SQL可讀性、可維護性、工程化的基礎設施,養成多表必加表別名、輸出列必加列別名、顯式寫AS的肌肉記憶,長期受益。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved