• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    mysql外键的三种关系实例详解

    本文实例讲述了mysql外键的三种关系。分享给大家供大家参考,具体如下:

    因为有foreign key的约束,使得两张表形成了三种了关系:

    一对多或多对一

    多对一

    create table press(
      id int primary key auto_increment,
      name varchar(20)
    );
    create table book(
      id int primary key auto_increment,
      name varchar(20),
      press_id int not null,
         constraint fk_book_press foreign key(press_id) references press(id)
      on delete cascade
      on update cascade
    );
    
    
    # 先往被关联表中插入记录
    insert into press(name) values
    ('北京工业地雷出版社'),
    ('人民音乐不好听出版社'),
    ('知识产权没有用出版社')
    ;
    # 再往关联表中插入记录
    insert into book(name,press_id) values
    ('九阳神功',1),
    ('九阴真经',2),
    ('九阴白骨爪',2),
    ('独孤九剑',3),
    ('降龙十巴掌',2),
    ('葵花宝典',3)
    ;
    
    

    查询结果:

    mysql> select * from book;
    +----+-----------------+----------+
    | id | name      | press_id |
    +----+-----------------+----------+
    | 1 | 九阳神功    |    1 |
    | 2 | 九阴真经    |    2 |
    | 3 | 九阴白骨爪   |    2 |
    | 4 | 独孤九剑    |    3 |
    | 5 | 降龙十巴掌   |    2 |
    | 6 | 葵花宝典    |    3 |
    +----+-----------------+----------+
    rows in set (0.00 sec)
    mysql> select * from press;
    +----+--------------------------------+
    | id | name              |
    +----+--------------------------------+
    | 1 | 北京工业地雷出版社       |
    | 2 | 人民音乐不好听出版社      |
    | 3 | 知识产权没有用出版社      |
    +----+--------------------------------+
    rows in set (0.00 sec)
    
    

    多对多,引入第三张表

    多对多

    # 创建被关联表author表,之前的book表在讲多对一的关系已创建
    create table author(
      id int primary key auto_increment,
      name varchar(20)
    );
    #这张表就存放了author表和book表的关系,即查询二者的关系查这表就可以了
    create table author2book(
      id int not null unique auto_increment,
      author_id int not null,
      book_id int not null,
      constraint fk_author foreign key(author_id) references author(id)
      on delete cascade
      on update cascade,
      constraint fk_book foreign key(book_id) references book(id)
      on delete cascade
      on update cascade,
      primary key(author_id,book_id)
    );
    #插入四个作者,id依次排开
    insert into author(name) values('egon'),('alex'),('wusir'),('yuanhao');
    # 每个作者的代表作
    egon: 九阳神功、九阴真经、九阴白骨爪、独孤九剑、降龙十巴掌、葵花宝典
    alex: 九阳神功、葵花宝典
    wusir:独孤九剑、降龙十巴掌、葵花宝典
    yuanhao:九阳神功
    # 在author2book表中插入相应的数据
    insert into author2book(author_id,book_id) values
    (1,1),
    (1,2),
    (1,3),
    (1,4),
    (1,5),
    (1,6),
    (2,1),
    (2,6),
    (3,4),
    (3,5),
    (3,6),
    (4,1)
    ;
    
    
    # 现在就可以查author2book对应的作者和书的关系了
    mysql> select * from author2book;
    +----+-----------+---------+
    | id | author_id | book_id |
    +----+-----------+---------+
    | 1 |     1 |    1 |
    | 2 |     1 |    2 |
    | 3 |     1 |    3 |
    | 4 |     1 |    4 |
    | 5 |     1 |    5 |
    | 6 |     1 |    6 |
    | 7 |     2 |    1 |
    | 8 |     2 |    6 |
    | 9 |     3 |    4 |
    | 10 |     3 |    5 |
    | 11 |     3 |    6 |
    | 12 |     4 |    1 |
    +----+-----------+---------+
    rows in set (0.00 sec)
    
    

    一对一的情况

    一对一

    #例如: 一个用户只能注册一个博客
    #两张表: 用户表 (user)和 博客表(blog)
    # 创建用户表
    create table user(
      id int primary key auto_increment,
      name varchar(20)
    );
    # 创建博客表
    create table blog(
      id int primary key auto_increment,
      url varchar(100),
      user_id int unique,
      constraint fk_user foreign key(user_id) references user(id)
      on delete cascade
      on update cascade
    );
    #插入用户表中的记录
    insert into user(name) values
    ('alex'),
    ('wusir'),
    ('egon'),
    ('xiaoma')
    ;
    # 插入博客表的记录
    insert into blog(url,user_id) values
    ('http://www.cnblog/alex',1),
    ('http://www.cnblog/wusir',2),
    ('http://www.cnblog/egon',3),
    ('http://www.cnblog/xiaoma',4)
    ;
    # 查询wusir的博客地址
    select url from blog where user_id=2;
    
    

    更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》

    希望本文所述对大家MySQL数据库计有所帮助。

    您可能感兴趣的文章:
    • mysql外键基本功能与用法详解
    • Mysql数据库中数据表的优化、外键与三范式用法实例分析
    • MySQL创建数据表并建立主外键关系详解
    • MySQL外键约束常见操作方法示例【查看、添加、修改、删除】
    • MySQL无法创建外键的原因及解决方法
    • MySQL删除有外键约束的表数据方法介绍
    • MySQL删除表的时候忽略外键约束的简单实现
    • MySQL添加外键时报错:1215 Cannot add the foreign key constraint的解决方法
    • MySQL使用外键实现级联删除与更新的方法
    • Mysql表创建外键报错解决方案
    上一篇:mybatis统计每条SQL的执行时间的方法示例
    下一篇:mysql完整性约束实例详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    mysql外键的三种关系实例详解 mysql,外键,的,三种,关系,