Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 電腦軟體介紹

MySQL 管理精進細節:分號處理、關聯陣列、多表別名、TEXT/DATE/SET 型別、無緩衝查詢、通配符、NOT NULL 與空值陷阱

編輯:電腦軟體介紹

MySQL 日常操作中易被忽視的細節,決定腳本健壯度與效能。以下七大觀念必須內化。

1. 分號 ; 在 PHP 中的處理

MySQL 指令以分號結束,但嵌入 PHP 字串時省略尾隨分號,避免 PHP 解析器混淆:
mysql_query("INSERT INTO t(a,b) VALUES('x','y')");
PHP 執行時會自動補上。
PHP 中 MySQL 分號處理

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

mysql_fetch_array() 同時支援數字索引與關聯索引:
$row['cust_id'] 遠比 $row[0] 可讀。
多表同名欄位務必用別名:
SELECT winery.name AS wname, region.name AS rname ... → $row['wname']、$row['rname']。

3. 特殊欄位引用規則

  • 指定表名.欄名 → 直接用欄名:$row['region_id']
  • 聚合函數 → 用別名或完整函數名:$row['cnt'] 或 $row['count(*)']

4. TEXT、DATE、SET 型別細節

  • TEXT 非標準型別,實為 LONG VARCHAR 或 MEDIUMTEXT。
  • DATE 格式 YYYY-MM-DD,PHP 取當日:date('Y-m-d')。日期相減得天數:$age = $current_date - $birthdate;(需轉 timestamp)。
  • SET 可存多值(最多 64 項),ENUM 單值(最多 65,535 項)。超過 64 項需拆多個 SET。

5. mysql_unbuffered_query():大結果集不鎖表、即時回傳

替代 mysql_query(),查詢後立即回傳資源,不等待完整結果集、不鎖表。無法用 mysql_num_rows() 取得筆數(結果集大小未知)。

6. 通配符 * % _ 使用場景

  • *:SELECT * 匹配「欄位名」。
  • %:WHERE col LIKE '%' 匹配「欄位值」,必搭配 LIKE。
  • _:匹配「任意單一字元」。

7. NOT NULL 與空值/NULL 的行為差異

  • 未宣告 NOT NULL:插入空字串 → 存 NULL(預設)。
  • 宣告 NOT NULL:
    – 一般型別:拒絕寫入(報錯)。
    – ENUM:自動塞入第一個枚舉值作為預設值。
  • % 不匹配 NULL,只匹配空字串。查 NULL 必用 IS NULL。
  • 建議:所有欄位加 NOT NULL,避免 NULL/空字串語意混淆導致查詢漏撈。
  • ALTER TABLE 新增欄位時,既有列新欄位值可能為 NULL 或空字串(視版本),查詢需特別小心。

工具推薦:phpMyAdmin 官方最新版。內化上述細節,能減少 80% 的 MySQL 相關奇異 Bug。

Copyright © Windows教程網 All Rights Reserved