欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL数据库外键使用

程序员文章站 2022-06-01 08:50:23
...
--5.1 向goods表里插入任意一条数据
             insert into goods (name,cate_id,brand_id,price) values('联想固态硬盘',10,10,1200);

            --5.2 添加外键约束 foreign key
            -- alter table goods add foreign key (brand_id) references goods_brands(id);
              alter table goods add foreign key(cate_id) references goods_cates(id);
              alter table goods add foreign key(brand_id) references goods_brands(id);

            -- 失败原因 ,因为'联想固态硬盘'这行的数据不满足外键约束 delete
            -- delete from goods where name="联想固态硬盘";       
              delete from goods where id=22;

            --5.3 创建表的同时设置外键 (注意 goods_cates 和 goods_brands 两个表必须事先存在)
            create table goods(
                id int primary key auto_increment not null,
                name varchar(40) default '',
                price decimal(5,2),
                cate_id int unsigned,
                brand_id int unsigned,
                is_show bit default 1,
                is_saleoff bit default 0,
                foreign key(cate_id) references goods_cates(id),
                foreign key(brand_id) references goods_brands(id)
            );


            --5.4 如何取消外键约束
               alter table goods drop foreign key goods_ibfk_1;
               alter table goods drop foreign key goods_ibfk_2;


            -- 需要先获取外键约束名称,该名称系统会自动生成,可以通过查看表创建语句来获取名称
               show create table goods ;

            -- 获取名称之后就可以根据名称来删除外键约束
            --alter table goods drop foreign key goods_ibfk_1;

            --5.5 涉及外键的面试
               在目前主流的数据库设计中,越来越少使用到外键约束
                原因: 会极大的降低表更新的效率
                如何替代 '通过外键约束实现数据有效性验证'
                解决思想: 可在数据录入时验证(表示层,ui层),或者在业务层面(python代码)去验证,而不要数据库层面去验证。
相关标签: 学习笔记