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

MySQL 學習筆記(一):語法差異、DDL 操作對比、自增主鍵、外鍵約束與多表刪除

     編輯:MySQL 綜合教學

前言

公司同時使用 SQL Server 與 MySQL,管理數十台伺服器、上百個資料庫。本系列記錄從 SQL Server 視角轉向 MySQL 的語法差異、操作習慣調整與避坑經驗。第一期聚焦基礎 DDL 語法對比。

核心語法差異速查表

操作SQL ServerMySQL關鍵差異
預設約束DEFAULT (0)DEFAULT 0(無括號)MySQL DEFAULT 後不加括號
自增主鍵ID INT IDENTITY(1,1) PRIMARY KEYID INT AUTO_INCREMENT PRIMARY KEYMySQL 自增列必須是主鍵,種子值在表尾設定
查看表結構sp_help 'emp'DESC emp / SHOW CREATE TABLE emp
修改表名EXEC sp_rename 'emp', 'emp2'RENAME TABLE emp TO emp2; / ALTER TABLE emp RENAME emp2;
修改欄位型別ALTER TABLE emp2 ALTER COLUMN id BIGINTALTER TABLE emp2 MODIFY id BIGINT;
修改欄位名EXEC sp_rename 'emp2.id', 'iid', 'COLUMN'ALTER TABLE emp2 CHANGE id iid BIGINT;(需指定型別)MySQL CHANGE 需帶型別,可同時改名與型別
新增欄位指定位置不支援ALTER TABLE emp2 ADD name VARCHAR(50) FIRST; / AFTER colMySQL 支援 FIRST/AFTER 定位
刪除欄位ALTER TABLE emp2 DROP COLUMN nameALTER TABLE emp2 DROP name;(無 COLUMN 關鍵字)
刪除外鍵約束ALTER TABLE emp2 DROP CONSTRAINT fk_name(通用)ALTER TABLE emp2 DROP FOREIGN KEY fk_name;(專用)MySQL 外鍵/主鍵需專用語法
刪除主鍵約束ALTER TABLE emp2 DROP CONSTRAINT pk_nameALTER TABLE emp2 DROP PRIMARY KEY;
刪除多張表需逐張 DROP TABLE + 判斷DROP TABLE IF EXISTS emp1, emp2;MySQL 支援多表一次刪除

實戰範例:MySQL 完整 DDL 流程

-- 1. 建表含自增主鍵
CREATE TABLE emp (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    dept_id INT
) AUTO_INCREMENT = 1000;  -- 設定起始種子

-- 2. 查看結構
DESC emp;
SHOW CREATE TABLE emp;

-- 3. 修改表名
RENAME TABLE emp TO emp2;

-- 4. 修改欄位型別
ALTER TABLE emp2 MODIFY id BIGINT;

-- 5. 修改欄位名(同時改型別)
ALTER TABLE emp2 CHANGE id iid BIGINT;

-- 6. 新增欄位指定位置
ALTER TABLE emp2 ADD email VARCHAR(100) AFTER name;
ALTER TABLE emp2 ADD created_at TIMESTAMP FIRST;

-- 7. 刪除欄位
ALTER TABLE emp2 DROP email;

-- 8. 刪除外鍵/主鍵
ALTER TABLE emp2 DROP FOREIGN KEY fk_emp_dept;
ALTER TABLE emp2 DROP PRIMARY KEY;

-- 9. 刪除多表
DROP TABLE IF EXISTS emp1, emp2;

避坑提醒

  • 自增列必須是主鍵:MySQL 要求 AUTO_INCREMENT 欄位必須包含在主鍵或唯一索引中,否則報錯。
  • CHANGE 必須帶型別:即使只改名,也要重複寫型別 CHANGE old new TYPE。
  • 外鍵刪除語法專用:DROP FOREIGN KEY 而非通用 DROP CONSTRAINT。
  • 大小寫敏感度:Linux 下表名預設區分大小寫(lower_case_table_names=0),Windows 不區分。跨平台遷移必須統一規範。

總結

MySQL DDL 語法較 SQL Server 更靈活(FIRST/AFTER、多表 DROP、RENAME TABLE),但也有強制限制(自增必為主鍵、CHANGE 必帶型別、外鍵專用語法)。建立「雙平台語法速查卡」,養成先查 SHOW CREATE TABLE 再動手的習慣,可大幅減少遷移期錯誤。

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