MySQL数据库外键使用

--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代码)去验证,而不要数据库层面去验证。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值