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

PHP 操作 MySQL:建立資料庫與資料表完整指南

     編輯:MySQL 資料庫相關知識

前言

PHP 與 MySQL 是經典的 Web 開發組合。本文系統整理使用 PHP 建立 MySQL 資料庫、資料表的完整流程,涵蓋語法、範例程式碼、資料型態選擇與主鍵設計等核心知識點,適合初學者快速上手與工程師查閱參考。

一、建立資料庫

SQL 語法

CREATE DATABASE database_name;

PHP 實作範例

<?php
$con = mysqli_connect("localhost", "peter", "abc123");
if (!$con) {
    die('連線失敗: ' . mysqli_connect_error());
}

$sql = "CREATE DATABASE my_db";
if (mysqli_query($con, $sql)) {
    echo "資料庫建立成功";
} else {
    echo "建立失敗: " . mysqli_error($con);
}

mysqli_close($con);
?>
注意:舊版 mysql_* 函數已棄用,現代專案請使用 mysqli_* 或 PDO。

二、建立資料表

SQL 語法

CREATE TABLE table_name (
    column_name1 data_type,
    column_name2 data_type,
    column_name3 data_type,
    ...
);

PHP 實作範例:建立 person 表

<?php
$con = mysqli_connect("localhost", "peter", "abc123");
if (!$con) {
    die('連線失敗: ' . mysqli_connect_error());
}

// 先選擇資料庫
mysqli_select_db($con, "my_db");

$sql = "CREATE TABLE person (
    FirstName VARCHAR(15),
    LastName VARCHAR(15),
    Age INT
)";

if (mysqli_query($con, $sql)) {
    echo "資料表建立成功";
} else {
    echo "建立失敗: " . mysqli_error($con);
}

mysqli_close($con);
?>

三、MySQL 常用資料型態詳解

選擇正確的資料型態關係到儲存效率與查詢效能,以下分類整理:

數值型態

型態說明適用場景
TINYINT-128 ~ 127 (無號號 0~255)狀態旗標、小範圍計數
SMALLINT-32768 ~ 32767中小範圍整數
MEDIUMINT-8388608 ~ 8388607中等範圍整數,比 INT 省 25% 空間
INT-2147483648 ~ 2147483647通用整數、主鍵 ID
BIGINT±9.22×10¹⁸大數值、時間戳毫秒
DECIMAL(m,d)精確小數,m 總位數,d 小數位金額、價格、精確計算
FLOAT / DOUBLE單/雙精度浮點數科學計算、近似值

字串型態

型態最大長度特性適用場景
CHAR(n)255 字元固定長度,不足補空格MD5、UUID、固定代碼
VARCHAR(n)65,535 位元組變長,實際長度+1~2 位元組名稱、標題、一般文字
TINYTEXT255 字元不需指定長度短備註
TEXT65,535 字元長文本文章內容、描述
MEDIUMTEXT16,777,215 字元中等長文本長文檔
LONGTEXT4,294,967,295 字元超長文本完整書籍、日誌

日期時間型態

型態格式範圍備註
DATEYYYY-MM-DD1000-01-01 ~ 9999-12-31純日期
TIMEHH:MM:SS-838:59:59 ~ 838:59:59純時間
DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:59日期時間,8 位元組
TIMESTAMPYYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC4 位元組,時區感知
YEARYYYY1901 ~ 2155年份

特殊型態

  • ENUM('v1','v2',...):最多 65,535 個枚舉值,單選,儲存為整數索引,極省空間。
  • SET('v1','v2',...):最多 64 個成員,可多選,位元組合儲存。
  • BLOB 系列:二進位資料(TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB),對應 TEXT 系列大小。

四、主鍵與自動遞增設計

核心原則

  1. 每個表必須有主鍵,唯一識別每一列。
  2. 主鍵值不可為 NULL,且唯一。
  3. 主鍵自動建立索引,無需額外定義。
  4. 慣用整數型態 + AUTO_INCREMENT。

建表範例:帶主鍵的 person 表

$sql = "CREATE TABLE person (
    personID INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (personID),
    FirstName VARCHAR(15),
    LastName VARCHAR(15),
    Age INT
)";
mysqli_query($con, $sql);

五、最佳實踐建議

  1. 優先使用最小足夠的型態:如 MEDIUMINT 替代 INT,節省 25% 空間。
  2. 避免將數字存為字串:影響排序、比較與索引效能。
  3. 能用 NOT NULL 就不用 NULL:每欄省 1 bit,查詢優化器更易判斷。
  4. 固定長度表考慮 ROW_FORMAT=FIXED:無 VARCHAR/TEXT/BLOB 時可加速讀取。
  5. 非多語系欄位用 latin1:比 utf8mb4 省 3 倍空間(如 email、URL、IP)。

六、常見錯誤與除錯

  • 忘記 mysqli_select_db():建表前必須先選擇資料庫。
  • VARCHAR 未指定長度:會報錯,必須如 VARCHAR(15)。
  • 使用已棄用的 mysql_* 函數:PHP 7.0+ 已移除,請改用 mysqli 或 PDO。
  • 未檢查回傳值:務必判斷 mysqli_query() 是否成功。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved