文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

mysql外键的示例分析

2024-04-02 19:55

关注

这篇文章将为大家详细讲解有关mysql外键的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

具体如下:

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

一对多或多对一

mysql外键的示例分析

多对一

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)

多对多,引入第三张表

mysql外键的示例分析

多对多

# 创建被关联表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外键的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯