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

MySQL 程式設計 6 大實用技巧全解析

     編輯:MySQL 資料庫相關知識

1. 命令結尾的分號處理

MySQL 每行命令皆以分號 ; 結束。但當 SQL 語句嵌入 PHP 程式碼時,建議省略尾端分號,否則 PHP 解析器可能因雙重分號產生語法錯誤。範例:

mysql_query("INSERT INTO tablename(first_name,last_name) VALUES('$first_name','$last_name')");

PHP 執行時會自動補上分號,省略反而更安全。

2. 善用關聯陣列存取查詢結果

使用 mysql_fetch_array() 取得的資料列,可同時以數字索引($row[0])或關聯索引($row["cust_id"])存取。關聯式寫法可讀性遠優於數字索引。

while ($row = mysql_fetch_array($result)) {
    echo "ID: {$row['cust_id']}\n";
    echo "Surname: {$row['surname']}\n";
    echo "First name: {$row['firstname']}\n\n";
}

3. 多表聯查時以別名區分同名欄位

當兩張表擁有相同欄位名稱時,務必使用 AS 定義別名,避免結果集衝突:

SELECT winery.name AS wname, region.name AS rname
FROM winery, region
WHERE winery.region_id = region.region_id;

程式中即以 $row["wname"]、$row["rname"] 取值。

4. 指定表名與欄位名時的引用方式

  • SELECT winery.region_id FROM winery → 以 $row["region_id"] 取值
  • 聚合函數 SELECT COUNT(*) FROM customer → 以 $row["COUNT(*)"] 取值

5. TEXT、DATE、SET 資料型別細節

  • TEXT 非單一型別,實為 LONG VARCHAR 或 MEDIUMTEXT 等別名。
  • DATE 格式固定為 YYYY-MM-DD,PHP 可用 date("Y-m-d") 取得。兩個 DATE 相減可直接得到天數差。
  • SET 可儲存多個預設值(最多 64 個),類似 ENUM 但允許多選;若需超過 64 個值,需拆分為多個 SET 欄位。

6. 使用 mysql_unbuffered_query() 提升腳本效能

此函式查詢後立即回傳,不等待鎖定也不緩衝結果集,適合處理大量資料串流。注意:無法使用 mysql_num_rows() 取得筆數,因結果集大小未知。

7. 萬用字元正確用法

  • * 用於比對欄位名(如 SELECT *)
  • % 用於比對欄位值,需搭配 LIKE(如 WHERE user_id LIKE '%')
  • _ 代表單一任意字元

8. NOT NULL 與空值的行為差異

  • 未宣告 NOT NULL:插入空值時寫入 NULL
  • 宣告 NOT NULL:插入空值時,數值型填 0,字串型填空字串,ENUM 填第一個預設值
  • NULL 與空字串 '' 不同:% 可比對空字串,但無法比對 NULL;查詢 NULL 必須用 IS NULL
  • 建議所有欄位預設宣告 NOT NULL,減少查詢邏輯錯誤
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved