外键约束和表关系

本文探讨了数据存储中的外键约束及其解决数据冗余问题的作用。介绍了外键的特点,包括从表外键对主表主键的引用和类型一致性。详细讲解了在MySQL中创建和删除外键的语法,并阐述了主外键如何定义1对多关系。此外,还概述了表和表之间的三种关系:1对1、1对多/多对1以及多对多,并给出了实际应用场景示例。
摘要由CSDN通过智能技术生成


今天主要总结一下关于mysql中表和表之间的关系和约束语法

数据存储问题:

  • 数据冗余

  • 引发问题:
    增删改异常和数据异常
    解决方案:分表

实际开发中,一个项目通常需要很多张表才能完成。

外键约束

有两张表“分类表”和“商品表”,为了表明商品属于哪个分类,通常情况下将在商品表上添加一列,用于存放分类cid的信息,此列称为外键

分类表category称为主表,id称为主键

商品表product称为从表,category_id称为外键

在MySQL中只有innodb存储引擎才能支持主外键关联,MyISAM可以定义外键,但是系统不进行数据检查

create table t_catalog(
id bigint primary key auto_increment,
Name varchar(32) not null
)engine=innodb default charset utf8;
Create table t_product(
Id bigint primary key auto_increment,
Title varchar(50) not null,
Price numeric(8,2) default 0,
Catalog_id bigint,  -- 用于表示商品所属的类别,这里的取值必须是t_catalog表中的id列上存在的数据,可以使用foreign key进行约束定义
Foreign key(catalog_id) references t_catalog(id) on delete cascade
)engine=innodb default charset utf8;

注意:外键上没有非空约束,如果需要非空,则在定义列时添加非空约束,即Catalog_id bigint not null

要求catalog_id的取值必须在t_catalog(id)中存在,否则报错

通过主表的主键和从表的外键来描述主外键关系,呈现就是一对多关系

外键特点

从表外键的值是对主表主键的引用
从表外键类型,必须与主表主键类型一致

基础语法

语法:alter table 从表 add constraint 约束名称 foreign key (从表外键列名称) references 主表 (主表的主键列名称);

[外键名称]用于删除外键约束的,一般建议_fk结尾或者fk_开头

举例:为student表添加外键约束。

ALTER TABLE student A
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值