增
添加约束 主键
ALTER TABLE 数据表名 ADD [CONSTRAINT [symbol]] PRIMARY KEY [索引的数据类型] (列字段)
添加约束 唯一
ALTER TABLE 数据表名 ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [索引名] [索引的数据类型]
(列字段,.....)#设置多个
添加约束外键
ALTER TABLE 数据表名 ADD [CONSTRAINT [symbol]] FOREIGN KEY (列字段) REFERENCES
引用表名 (引用列字段)
这里出现了两个问题
- 添加外键时父表的字段必须是键,如果报错Invalid use of null value 也就是值为null 则需要使用updata 语句更新值,再改为键
- 还有就是如果出现 a foreign key constraint fails(外键约束失败) 可能要么两个字段 类型不一致 或者两个列字段中值的数量也就是行的数量,父表的比子表的少导致的。
删
添加/删除默认约束
ALTER TABLE 数据表名 ALTER [COLUMN] 列字段 {SET DEFAULT literal|DROP DEFAULT}
删除主键约束
ALTER TABLE 数据表名 DROP PRIMARY KEY
删除唯一约束
ALTER TABLE 数据表名 DROP [{INDEX|KEY}] 列字段
删除外键约束
ALTER TABLE 数据表名 DROP FOREIGN KEY 外键约束
需要注意的是删除外键约束还要删除唯一约束,因为在建立外键约束的同时会自动创建一个唯一约束,要一起删除。
改
修改列的定义同时可以跟改约束
ALTER TABLE 数据表名 MODIFY [COLUMN] 列名 列的数据类型 [FIRST|AFTER 列名]