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

實用 MySQL 常用語句集錦:無需 PHP 即可完成的資料操作

     編輯:MySQL 資料庫相關知識

前言

許多資料處理任務僅靠 MySQL 原生語句即可高效完成,無須外層程式語言協助。本文整理工作中高頻使用的實用語句,涵蓋年齡計算、時間差、重複值查找、工作日統計、主鍵查詢、資料庫大小檢視等場景。

1. 透過生日計算年齡

SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW()) - TO_DAYS(@dateofbirth)), '%Y') + 0;

原理:以天數差轉為日期,再取年份部分,+0 強制轉數值。

2. 計算兩個 DATETIME 的差值

UNIX_TIMESTAMP(dt2) - UNIX_TIMESTAMP(dt1)  -- 秒數
/ 60       -- 分鐘數
/ 3600     -- 小時數
/ 86400    -- 天數

適用於 'YYYY-MM-DD HH:MM:SS' 格式的 DATETIME 欄位。

3. 查詢出現 N 次的值

SELECT id
FROM tbl
GROUP BY id
HAVING COUNT(*) = N;

利用 GROUP BY + HAVING 過濾聚合結果。

4. 計算兩日期間的工作日數

SELECT COUNT(*)
FROM calendar
WHERE d BETWEEN @Start AND @Stop
  AND DAYOFWEEK(d) NOT IN (1,7)  -- 排除週日(1)與週六(7)
  AND holiday = 0;               -- 排除假日

需預備一張 calendar 表,含日期欄位 d 與假日標記 holiday。

5. 查詢表的主鍵欄位

SELECT k.column_name
FROM information_schema.table_constraints t
JOIN information_schema.key_column_usage k
  USING (constraint_name, table_schema, table_name)
WHERE t.constraint_type = 'PRIMARY KEY'
  AND t.table_schema = 'db_name'
  AND t.table_name = 'tbl_name';

透過 information_schema 元資料表獲取結構資訊。

6. 檢視各資料庫大小(含剩餘空間)

SELECT
  table_schema AS 'Db Name',
  ROUND(SUM(data_length + index_length) / 1024 / 1024, 3) AS 'Db Size (MB)',
  ROUND(SUM(data_free) / 1024 / 1024, 3) AS 'Free Space (MB)'
FROM information_schema.tables
GROUP BY table_schema;

快速掌握實例級儲存佔用情況,利於容量規劃。

小結

熟練掌握上述語句,能大幅減少應用層程式碼,降低網路傳輸與解析開銷,讓資料庫發揮原生計算優勢。實務中請根據具體業務調整參數與表名。

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