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

MySQL 資料表 DDL 操作全集:建表、改結構、刪關聯、備份最佳實踐

     編輯:MySQL 資料庫相關知識

0. 建表基礎語法

CREATE TABLE 表名 (
    屬性名 資料類型 [完整性約束],
    屬性名 資料類型 [完整性約束],
    ...
);

先 USE 資料庫名 選擇庫。表名不可用保留字,不區分大小寫。

完整性約束速查

約束作用
PRIMARY KEY主鍵,唯一標識
FOREIGN KEY外鍵,關聯父表主鍵
NOT NULL非空
UNIQUE唯一值
AUTO_INCREMENT自增(通常用於主鍵)
DEFAULT預設值

範例

CREATE TABLE example (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    sex BOOLEAN DEFAULT TRUE
);

1. 查看表結構

DESCRIBE 表名;  -- 簡寫 DESC 表名
-- 輸出:Field, Type, Null, Key, Default, Extra

2. 查看完整建表語句(含引擎、字符集)

SHOW CREATE TABLE 表名;
SHOW CREATE TABLE 表名 \G;  -- 垂直顯示,適合寬表

3. 修改表名

ALTER TABLE 舊表名 RENAME [TO] 新表名;

4. 修改字段資料類型

ALTER TABLE 表名 MODIFY 屬性名 新資料類型;

5. 修改字段名(可同步改類型)

ALTER TABLE 表名 CHANGE 舊屬性名 新屬性名 新資料類型;
-- 若不想改類型,仍需寫上原類型

6. 新增字段

ALTER TABLE 表名 ADD 屬性名 資料類型 [約束] [FIRST | AFTER 現有字段名];
-- FIRST: 放第一列;AFTER: 放指定列後;預設放最後

7. 刪除字段

ALTER TABLE 表名 DROP 屬性名;

8. 刪除關聯表的完整流程

(1) 刪除外鍵約束

ALTER TABLE 子表名 DROP FOREIGN KEY 外鍵別名;
-- 別名是建表時 CONSTRAINT 後指定的名稱

(2) 刪除無依賴的普通表

DROP TABLE 表名;
-- ⚠️ 資料同步刪除,操作前務必備份

(3) 刪除被引用的父表(關鍵難點)

直接 DROP TABLE 父表 會報錯:ERROR 1217 (23000): Cannot delete or update a parent row

正確姿勢:

  1. 先刪除子表外鍵:ALTER TABLE child DROP FOREIGN KEY fk_name;
  2. 再刪除父表:DROP TABLE parent;
  3. 子表資料完整保留,僅移除關聯關係

驗證外鍵已刪除

SHOW CREATE TABLE child \G;
-- 輸出中不再出現 CONSTRAINT ... FOREIGN KEY ...

最佳實踐提醒

  • DDL 操作鎖表時間長,生產環境建議低峰期或用 pt-online-schema-change
  • 外鍵名建議顯式命名(CONSTRAINT fk_xxx FOREIGN KEY...),便於維護
  • 刪表前務必確認無業務依賴,並做好資料備份
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved