美文网首页
MySQL学习日记(16)约束的增删改

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

作者: copymaker | 来源:发表于2021-01-31 16:55 被阅读0次

    添加约束 主键

    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)约束的增删改

          本文链接:https://www.haomeiwen.com/subject/iwnctltx.html