暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

15.1-mysql基础-约束知识点补充

潭时录 2021-05-19
232

点击蓝色“潭时录”关注我丫

每天和小潭一起快乐的学习~

    你好,我是在学mysql的小潭。在12-mysql基础-mysql中的DDL-约束的推文中我们学习了mysql中有关约束的知识,其中遗漏了有关外键级联操作的知识点将在本期推文中做以下补充


    引用12-mysql基础-mysql中的DDL-约束文中的students库

    /*级联更新和级联删除
    */
    USE students;
    SHOW INDEX FROM major;
    SHOW INDEX FROM stuinfo;
    #如果有外键先删除
    #alter table stuinfo drop foreign key fk_stu_major;


    #传统的方式添加外键
    ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id);


    SELECT * FROM major;
    INSERT INTO major
    VALUES(1,'mysql'), (2, 'python'),
    (3,'java');


    SELECT * FROM stuinfo;
    INSERT INTO stuinfo
    SELECT 1,'A','男',NULL,NULL,1 UNION ALL
    SELECT 2,'B','女',NULL,NULL,1 UNION ALL
    SELECT 3,'C','女',NULL,NULL,2 UNION ALL
    SELECT 4,'D','男',NULL,NULL,2 UNION ALL
    SELECT 5,'E','女',NULL,NULL,2 UNION ALL
    SELECT 6,'F','男',NULL,NULL,3 UNION ALL
    SELECT 7,'G','男',NULL,NULL,3


    #删除专业表的3号专业
    #直接删主表会报错Cannot delete or update a parent row: a foreign key constraint fails (`students`.`stuinfo`, CONSTRAINT `fk_stu_major` FOREIGN KEY (`majorid`) REFERENCES `major` (`id`))


    #方式1:级联删除(on delete cascade 级联删除外键)
    ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE;
    DELETE FROM major WHERE id=3; #会将主表major中id为3的记录删除,同时删除stuinfo表中外键为3的记录
    #方式2:级联置空(on delete set null 级联置空外键)
    ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE SET NULL;
    DELETE FROM major WHERE id=3; #会将主表major中id为3的记录删除,同时将stuinfo表中的等值外键栏设为null









    如果你喜欢本文,
    请长按二维码,关注 潭时录.
    转发至朋友圈,是对我最大的支持。

    点个 在看 
    喜欢是一种感觉
    在看是一种支持
    ↘↘↘
    文章转载自潭时录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论