我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql外键的示例分析

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql外键的示例分析

这篇文章将为大家详细讲解有关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

mysql外键的示例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Hibernate主键的示例分析

小编给大家分享一下Hibernate主键的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Hibernate主键介绍1.AssignedAssigned方式
2023-06-17

java外观模式的示例分析

这篇文章主要介绍java外观模式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!定义: 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易
2023-05-30

control加各种键的示例分析

这篇文章主要介绍了control加各种键的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。control加各种键的功能是:1、“Ctrl+A”,全部选中;2、“Ctrl
2023-06-20

Java关键字final的示例分析

小编给大家分享一下Java关键字final的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、常见问题所有的final修饰的字段都是编译期常量吗?如何理解
2023-06-15

mysql中between的示例分析

这篇文章将为大家详细讲解有关mysql中between的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql between的边界范围between 的范围是包含两边的边界值eg: id be
2023-06-15

编程热搜

目录