[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;
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章