首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 創建/刪除數據表完整指南:SQL 語法、命令行、PHP 實戰與主鍵/自增/字符集最佳實踐

     編輯:MySQL 綜合教學

前言:建表是 Schema 設計落地的關鍵一步

CREATE TABLE 看似簡單,但**主鍵選擇、字符集、引擎、自增、外鍵、索引**等決策直接決定後續性能與維護成本。本文系統覆蓋 **通用 SQL 語法、命令行實操、PHP mysqli/PDO 代碼、刪表操作**,並給出生產環境建表核對清單。

一、通用 CREATE TABLE 語法骨架

CREATE TABLE table_name (
    col_name col_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [COMMENT 'comment'],
    ...
    PRIMARY KEY (col_name),
    KEY idx_name (col_name),
    CONSTRAINT fk_name FOREIGN KEY (col_name) REFERENCES parent_tbl(parent_col)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

二、實戰範例:教程表

CREATE TABLE tutorials_tbl (
    tutorial_id INT NOT NULL AUTO_INCREMENT,
    tutorial_title VARCHAR(100) NOT NULL,
    tutorial_author VARCHAR(40) NOT NULL,
    submission_date DATE,
    PRIMARY KEY (tutorial_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

解析:

  • NOT NULL:業務必填欄位加約束,防止臟數據。
  • AUTO_INCREMENT:代理主鍵自增,**無業務意義**,避免主鍵更新導致聚簇索引重組。
  • PRIMARY KEY:聚簇索引鍵,InnoDB 必須有 PK (無則隱式 6 字節 row_id)。
  • ENGINE=InnoDB:事務、行鎖、外鍵、崩潰恢復。
  • CHARSET=utf8mb4:完整 Unicode 支援。

三、命令行建表

mysql -u root -p
USE tutorials;
CREATE TABLE tutorials_tbl (
    tutorial_id INT NOT NULL AUTO_INCREMENT,
    tutorial_title VARCHAR(100) NOT NULL,
    tutorial_author VARCHAR(40) NOT NULL,
    submission_date DATE,
    PRIMARY KEY (tutorial_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
# Query OK, 0 rows affected (0.16 sec)

四、PHP 建表 (mysqli 物件風格)

$mysqli = new mysqli('localhost', 'root', 'rootpassword', 'tutorials');
$sql = "CREATE TABLE tutorials_tbl (
    tutorial_id INT NOT NULL AUTO_INCREMENT,
    tutorial_title VARCHAR(100) NOT NULL,
    tutorial_author VARCHAR(40) NOT NULL,
    submission_date DATE,
    PRIMARY KEY (tutorial_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";
if ($mysqli->query($sql)) {
    echo "表創建成功";
} else {
    die("創建失敗: " . $mysqli->error);
}
$mysqli->close();

五、刪除表 (DROP TABLE)

SQL/命令行

DROP TABLE tutorials_tbl;  -- 立即執行,數據不可恢復

PHP

$mysqli->query("DROP TABLE tutorials_tbl");

生產環境禁用 DROP TABLE**;改用 RENAME TABLE tbl TO tbl_bak_20231015 歸檔,經驗證無誤後再清理。

六、生產環境建表核對清單 (上線前必查)

檢查項標準原因
引擎InnoDB事務、行鎖、外鍵、恢復
字符集utf8mb4完整 Unicode、Emoji
主鍵無業務意義 BIGINT/UNSIGNED AUTO_INCREMENT避免 PK 更新、聚簇索引碎片
NOT NULL業務必填欄位全部加約束前移、減少應用層判空
DEFAULT非空欄位給合理默認值避免 INSERT 報錯、業務邏輯簡化
COMMENT每表、每欄位必寫中文註釋數據字典自動化、團隊協作
索引高頻 WHERE/JOIN/ORDER BY 欄位建組合索引查詢性能、最左前綴
外鍵核心業務關係加 FK (或應用層維護)參照完整性、防臟數據
分區超大表 (億級) 按時間/哈希分區裁剪掃描、維護窗口

結語

**建表即定規則**,一張設計良好的表能支撐業務平穩演進 3-5 年。遵循 **InnoDB + utf8mb4 + 代理 PK + NOT NULL + DEFAULT + COMMENT + 組合索引** 十字真言,配合上線前核對清單,將 Schema 治理前置,避免「上線後加欄位鎖表、改字符集重建、補索引長時間佔用鎖」等典型事故。

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