MySQ外键

外键

1、概述

MySQL3.2版本以后 innodb支持外键约束

外键的作用:可以使俩张表进行关联 保持数据的一致性和实现级联操作

注意:外键类型必须是同一类型 int tinyint 但是 和varchar就不可以

2、创建表

  • 创建A表

    mysql> create table a(
        -> id int unsigned primary key auto_increment,
        -> name varchar(10) default 'lucky'
        -> );
    
  • 创建表B references[ˈrefrənsɪz]

    mysql> create table b(
        -> id int unsigned primary key auto_increment,
        -> a_id int unsigned,
        -> name varchar(10) default '',
        -> key a_id(a_id),
        -> constraint b_f_k foreign key (a_id) references a(id)
        -> );
    

    外键名称b_f_k 当前B表中的a_id 关联a表中的自增id

3、插入数据

  • A表插入数据

    insert into a values(null,'lucky');

  • B表插入数据

    insert into b values(null,1,'b');

4、删除数据

  • 删除B表数据

    delete from b;

  • 删除A表数据

    delete from a;

  • 注意

    添加外键的表为辅表 另外一个表为主表

    当删除B表 在删除A表中数据没有任何问题

    删除以后再次使用原命令(上面的添加数据命令进行添加时) B表报错 原因外键关联不上

    如果先删除A表 B表如果存在关联数据 则报错

5、删除外键 添加事件触发限制

  • 查看创建表B

    show create table B

  • 删除外键

    alter table b drop foreign key b_f_k;

  • 添加外键

    alter table b add foreign key (a_id) references a(id) on delete cascade on update cascade;

6、删除表A中数据

delete from a;

posted @ 2022-03-16 15:40  寻月隐君  阅读(42)  评论(0编辑  收藏  举报