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

MySQL入门 之多表_2020-09-16

程序员文章站 2022-05-09 13:15:19
...

MySQL入门 之多表

前言

多表相关操作属于MySQL里的重点,需要熟练掌握一下的内容 希望大家仔细观看

3. 多表关系

3.1表与 表的关系

  • 一对多
  • 多对多
  • 一对一

3.2 一对多

  • 一对多的关系: 通过主外键关系,形成一对多的关系。
    • 一表: 又称为主表,主表需要提供外键。
    • 多表: 又称为从表, 从表需要提供给外键。
  • 实例:分类+ 商品
    • 一个分类, 拥有多个商品,称为一对多关系。
      MySQL入门 之多表_2020-09-16
  • 需要通过外键约束,描述主外键关系
alter table 从表 add constraint [外键名称] foreign key (外键) references 主表 (主键)

-- 添加外键约束时,如果填写“外键名称”,是为了删除外键约束

例题

MySQL入门 之多表_2020-09-16

create database en002;
use en002;
-- 一对多关系
-- 主表(分类表)
create table tb_category(
  cid int primary key ,
  cname varchar(50)
);


-- 从表(商品表)-- 注意 外键类型 必须 与主表主键类型一致
create table tb_product(
  pid int primary key,
  pname varchar(50),
  category_id int
);


-- 主外键关系
alter table tb_product add constraint foreign key (category_id) references tb_category (cid);

3.3 多对多

  • 多对多: 提供一个中间表,将一个多对多 拆分成两个一对多
    * 中间表要求:至少提供两个外键列
  • 实例:订单+ 商品

MySQL入门 之多表_2020-09-16

-- 多对多
-- 1 主表(订单表)
create table tb_order(
  oid int primary key,
  price double
);

-- 2 主表(商品表)[已有]

-- 3 中间表
create table tb_order_product(
  order_id int,
  product_id int
);

-- 4 中间表 和 订单表 主外键关系
alter table tb_order_product add constraint foreign key (order_id) references tb_order (oid);

-- 5 中间表 和 商品表 主外键关系
alter table tb_order_product add constraint foreign key (product_id) references tb_product (pid);
相关标签: MySQL mysql