MYSQL外键约束

MYSQL外键约束

    • 外键约束
      • 外键特点:
    • 多表关系:
      • 一对一
      • 一对多,多对一
      • 多对多
      • 查看创建表
    • 操作外键约束
      • 创建表时设置外键约束
      • 修改表时添加外键约束
      • 外键约束下删除数据
      • 删除外键约束
    • 查看主表和从表的外键约束关系

外键约束

-- 外键约束示例语法
CONSTRAINT fk_rl  FOREIGN KEY(deptId) REFERENCES tb_dept1(id)



外键特点:

定义一个外键时,需要遵守下列规则:

  • 主表必须已经存在于数据库中,或者是当前正在创建的表
  • 必须为主表定义主键
  • 主键不能包含控制,单允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。
  • 在主表的表名后面指定列名和列名的组合。这个列或列的组合必须是主表的主键候选键

外键关联的必然是主表的主键

  • 外键中列的数目必须和主表的主键中列的数目相同
  • 外键中列的数据类型必须和主表主键中对应列的数据类型相同。


多表关系:

image.png


一对一

MYSQL外键约束_第1张图片


一对多,多对一

MYSQL外键约束_第2张图片


多对多

MYSQL外键约束_第3张图片


查看创建表

-- 指定默认字符集以支持中文
-- 解决MySQL5.7字符问题
DEFAULT CHARSET=utf8mb4;

-- 查看创建表
show create table 表名;

操作外键约束

MYSQL外键约束_第4张图片
MYSQL外键约束_第5张图片

修改和删除时,中间从表可以随便删除修改,但是两边的主表从表依赖的数据不能删除或者修改。
image.png


创建表时设置外键约束

MYSQL外键约束_第6张图片
MYSQL外键约束_第7张图片
创建主表从表,为从表指定外键
MYSQL外键约束_第8张图片

-- 创建(从)表时指定外键约束
CREATE TABLE score (
    id int(10) NOT NULL PRIMARY KEY auto_increment,
    -- 非空,主键,自增
    sid INT(10),
    name varchar(50) DEFAULT NULL,
    subject varchar(50) DEFAULT NULL,
    score varchar(50) DEFAULT NULL,
    CONSTRAINT fk_sid FOREIGN KEY(sid) REFERENCES 主表名(主表的主键字段) 
  -- 为本表(从表)创建外键,指定主表的主键字段
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;  -- 指定数据库引擎和数据库编码

修改表时添加外键约束

MYSQL外键约束_第9张图片

MYSQL外键约束_第10张图片
image.png

-- 修改表时添加外键约束
alter table 从表名
add CONSTRAINT 外键约束名称 FOREIGN KEY(从表列名) REFERENCES 主表名(主表主键名)

-- 示例:
alter table 表名
add CONSTRAINT fk_sid FOREIGN KEY(sid) REFERENCES studentinfo(id)

外键约束下删除数据

MYSQL外键约束_第11张图片


删除外键约束

MYSQL外键约束_第12张图片

-- 删除外键约束
ALTER TABLE 从表名 drop FOREIGN KEY 外键名

查看主表和从表的外键约束关系

MYSQL外键约束_第13张图片

你可能感兴趣的:(数据库,mysql,数据库,sql,外键约束)