[MySQL] ALTER語句總結

​最近自學SQL,買了《SQL學習指南》作爲參考書。書中主要篇幅都在SQL數據語句上,而對方案語句(CREATE\DROP\ALTER)的描述相當簡略,ALTER更是一筆帶過。於是搜索資料做了個總結,若有遺漏,懇請補充。

增刪列

​ 以一個名爲person的表爲例(下同),

ALTER TABLE person ADD name VARCHAR(20);
ALTER TABLE person DROP COLUMN name; -- or 'DROP name'

修改列類型

ALTER TABLE person MODIFY name VARCHAR(30);
ALTER TABLE person CHANGE name new_name VARCHAR(30);

重命名列/表

#重命名列
ALTER TABLE person CHANGE name new_name VARCHAR(30);
#重命名錶
ALTER TABLE person RENAME TO new_person;-- or 'RENAME new_person'

增/刪約束

主鍵約束

  • 添加

    #單獨添加
    ALTER TABLE person ADD PRIMARY KEY(name);
    ALTER TABLE person ADD CONSTRAINT pk_person PRIMARY KEY(name);
    #在修改列類型時添加
    ALTER TABLE person MODIFY name varchar(30) PRIMARY KEY;
    ALTER TABLE person CHANGE name name varchar(30) PRIMARY KEY;
    
  • 刪除

    ALTER TABLE person DROP PRIMARY KEY;
    

唯一性約束

  • 添加

    #單獨添加
    ALTER TABLE person ADD UNIQUE(name);
    ALTER TABLE person ADD UNIQUE KEY(name);
    ALTER TABLE person ADD CONSTRAINT pk_person UNIQUE(name);
    ALTER TABLE person ADD CONSTRAINT pk_person UNIQUE KEY(name);
    #修改列類型時添加
    ALTER TABLE person MODIFY name varchar(30) UNIQUE;
    ALTER TABLE person CHANGE name name varchar(30) UNIQUE;
    
  • 刪除

    ALTER TABLE person DROP INDEX name;
    

外鍵約束

假設有另一張表favorite_food,以person中的name爲外鍵。

  • 添加

    ALTER TABLE favorite_food ADD FOREIGN KEY(name) REFERENCES person(name);
    ALTER TABLE favorite_food ADD CONSTRAINT fk_person_food FOREIGN KEY(name)
    	REFERENCES person(name);
    
  • 刪除

    ALTER TABLE favorite_food DROP FOREIGN KEY fk_person_food;
    #可用 SHOW CREATE TABLE favorite_food 查詢外鍵約束名
    

非空約束

  • 添加

    ALTER TABLE person MODIFY name VARCHAR(30) NOT NULL;
    ALTER TABLE person CHANGE name name VARCHAR(30) NOT NULL;
    
  • 刪除

    = 添加默認值約束

默認值約束

在增加列或修改列類型時若未指定默認值,則會默認爲NULL。可據此消除非空約束。若要指定默認值:

ALTER TABLE person MODIFY name VARCHAR(30) DEFAULT 'Denny';
ALTER TABLE person CHANGE name name VARCHAR(30) DEFAULT 'Denny';

其他像自增約束零填充約束的增加和刪除格式與非空約束相同。

檢查約束

注:在MySQL-8.0.16前CHECK約束會被忽略。

  • 添加

    ALTER TABLE person ADD CONSTRAINT ck_person CHECK(id <5);
    
  • 刪除

    ALTER TABLE person DROP CONSTRAINT ck_person;
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章