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

MySQL 入門教程(五):資料表的建立、修改與刪除完整指南

     編輯:MySQL 綜合教學

MySQL 入門系列(五):資料表 DDL 操作詳解

資料表是資料庫儲存資料的基本單位,由欄位與記錄組成。本章系統講解 CREATE TABLE、ALTER TABLE、DROP TABLE 核心語法與實戰技巧。

一、建立資料表

先執行 USE db_name; 選擇資料庫,再使用 CREATE TABLE:

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

常見完整性約束條件

約束關鍵字說明
主鍵PRIMARY KEY唯一標識每行,非空、唯一
外鍵FOREIGN KEY關聯父表主鍵,維護參考完整性
非空NOT NULL欄位值不能為 NULL
唯一UNIQUE欄位值不可重複
自增AUTO_INCREMENT整數型主鍵自動遞增
預設值DEFAULT插入時未指定則用預設值

1.1 單欄主鍵

CREATE TABLE student (
    stu_id INT PRIMARY KEY,
    name VARCHAR(20)
);

1.2 複合主鍵

CREATE TABLE score (
    stu_id INT,
    course_id INT,
    score DECIMAL(5,2),
    PRIMARY KEY (stu_id, course_id)
);

1.3 外鍵關聯

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    cust_id INT,
    FOREIGN KEY (cust_id) REFERENCES customers(cust_id)
);

注意:子表外鍵必須關聯父表主鍵,資料類型需一致;父表刪除記錄時,子表對應行需級聯處理(ON DELETE CASCADE/SET NULL)。

1.4 其他約束範例

-- 非空
email VARCHAR(50) NOT NULL

-- 唯一
id_card CHAR(18) UNIQUE

-- 自增(需為主鍵一部分)
id INT AUTO_INCREMENT PRIMARY KEY

-- 預設值
status TINYINT DEFAULT 1
reg_date DATETIME DEFAULT CURRENT_TIMESTAMP

二、查看表結構

指令輸出內容
DESCRIBE 表名;
或 DESC 表名;
欄位名、類型、是否主鍵/外鍵、預設值、Extra
SHOW CREATE TABLE 表名\G完整建表 SQL、儲存引擎、字元集

三、修改資料表

使用 ALTER TABLE,支援以下操作:

3.1 修改表名

ALTER TABLE old_name RENAME [TO] new_name;

3.2 修改欄位名

ALTER TABLE 表名 CHANGE 舊欄位名 新欄位名 新資料類型;
-- 僅改名時資料類型保持原樣

3.3 修改資料類型

ALTER TABLE 表名 MODIFY 欄位名 新資料類型;

3.4 新增欄位

ALTER TABLE 表名 ADD 欄位名 資料類型 [約束] [FIRST | AFTER 既有欄位名];
-- FIRST:插到第一欄
-- AFTER col:插在 col 之後
-- 無位置參數則預設加在最後

3.5 刪除欄位

ALTER TABLE 表名 DROP 欄位名;

3.6 調整欄位順序

ALTER TABLE 表名 MODIFY 欄位名 資料類型 FIRST | AFTER 既有欄位名;

3.7 更改儲存引擎

ALTER TABLE 表名 ENGINE = InnoDB;  -- 或 MyISAM 等
-- 警告:大量資料表變更引擎會重建表,鎖表時間長,謹慎操作!

3.8 刪除外鍵約束

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

四、刪除資料表

4.1 刪除無關聯的普通表

DROP TABLE 表名;

4.2 刪除被關聯的父表

直接 DROP 會報錯(外鍵約束阻擋)。兩種解法:

  1. 先刪除子表,再刪父表
  2. 推薦:先刪除子表外鍵 ALTER TABLE child DROP FOREIGN KEY fk_name;,再刪父表

最佳實踐:
1. 欄位命名採用 snake_case,見名知意
2. 每張表必有單欄自增主鍵(業務主鍵另建唯一索引)
3. 外鍵在高併發系統常改由應用層維護,資料庫層面不建外鍵
4. 修改線上表結構請用 pt-online-schema-change 等工具避免鎖表
5. 變更前必須備份,變更後驗證資料完整性

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