MySQL学习日记(16)约束的增删改

添加约束 主键

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 列名]
修改了列中的考试学号 设为int类型 无符号 且为主键

你可能感兴趣的:(MySQL学习日记(16)约束的增删改)