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 cascadeon 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 cascadeon update cascade,constraint fk_book foreign key(book_id) references book(id)on delete cascadeon update cascade,primary key(author_id,book_id) ); #插入四个作者,id依次排开 insert into author(name) values('qwe'),('asd'),('zxc'),('wer');# 每个作者的代表作 qwe: 九阳神功、九阴真经、九阴白骨爪、独孤九剑、降龙十巴掌、葵花宝典 asd: 九阳神功、葵花宝典 zxc:独孤九剑、降龙十巴掌、葵花宝典 wer:九阳神功# 在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 cascadeon update cascade ); #插入用户表中的记录 insert into user(name) values ('qwe'), ('asd'), ('zxc'), ('ert') ; # 插入博客表的记录 insert into blog(url,user_id) values ('http://www.cnblog/qwe',1), ('http://www.cnblog/asd',2), ('http://www.cnblog/zxc',3), ('http://www.cnblog/ert',4) ; # 查询wusir的博客地址 select url from blog where user_id=2;
转载于:https://www.cnblogs.com/NachoLau/p/10398519.html
MySQL外键的三种关系相关推荐
- 06 外键的三种分类
1. 外键的3种关系 因为有foreign key的约束,使得两张表形成了三种关系 (1)多对一.一对多 (2)多对多 (3)一对一 2. 如何找出两张表之间的关系 分析步骤: #1.先站在左表的角度 ...
- 【Foreign Key】Oracle外键约束三种删除行为
Oracle使用外键来限制子表中参考的字段值,要求子表中的数据必须在主表中存在.当主表的记录发生变化时导致外键参考唯一约束值发生了变化时,Oracle指定了三种动作:默认值(类似于restrict). ...
- oracle 删除表数据 有外键约束,【Foreign Key】Oracle外键约束三种删除行为
Oracle使用外键来限制子表中参考的字段值,要求子表中的数据必须在主表中存在.当主表的记录发生变化时导致外键参考唯一约束值发生了变化时,Oracle指定了三种动作:默认值(类似于restrict). ...
- Mysql -- 外键的变种 三种关系
一.介绍 因为有foreign key的约束, 使得两张表形成了三种关系 多对一 多对多 一对一 二.如果找出两张表之间的关系 #1.先站在左表的角度去找 是否左表的多条记录可以对应 ...
- python 全栈开发,Day62(外键的变种(三种关系),数据的增删改,单表查询,多表查询)...
一.外键的变种(三种关系) 本节重点: 如何找出两张表之间的关系 表的三种关系 一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出 ...
- SQL外键foreign key 表与表之间的三种关系
表与表之间的三种关系 多对一关系表 注意事项: 一对多表关系,外键字段建在多的一方. 在创建表的时候,一定要先建被关联表. 在录入数据的时候,也必须先录入被关联表. 删除 一定要先删除主键表,才可以删 ...
- mysql cascade|restrict|no action|set null__mysql 外键的几种约束
mysql cascade|restrict|no action|set null MySQL有两种常用的引擎类型:MyISAM和InnoDB.目前只有InnoDB引擎类型支持外键约束.InnoDB中 ...
- MySql数据库三种关系详解
如何分辨三种关系,以及三种关系的图列对比. 1.分析三种关系. 是否左表的多条记录可以对应右表的一条记录,是,则证明左表的一个字段 关联(foreign key)右表的一个字段(通常为ID) 是否右表 ...
- mysql临键锁_详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)
详解 MySql InnoDB 中的三种行锁(记录锁.间隙锁与临键锁) 前言 InnoDB 通过 MVCC 和 NEXT-KEY Locks,解决了在可重复读的事务隔离级别下出现幻读的问题.MVCC ...
- MySQL增加外键的两种方式
MySQL增加外键的两种方式 *根据需求建一下表 i: emp表 ii:dept表 *1.增加外键(创建表的时候) 代码实现(工具:Navicat 12 for MySQL) CREATE TABLE ...
最新文章
- DPDK — DPDK APP 的指令行参数
- ExecuteNonQuery()返回受影响行数不适用select语句
- linux 防火墙开启1521端口,linux防火墙开放1521端口
- PHPStorm使用指南
- 使用CL_RS_WHERE创建dynamic SQL statement
- vue、bus 使用遇到的坑,组件之间无法传值;vue、bus 第一次获取不到值,后面再点击重复执行
- 华中科技大学计算机预推免2021,华中科技大学光学与电子信息学院2021年推免预报名通知...
- AI软件制作莫比乌斯环
- 你们一年大概可以存多少钱?
- Eclipse快捷键大全(同样适用基于Eclipse开发的IDE)
- Windows 10 安装 scrapy 步骤
- 20多个Maven命令和选项(备忘单)
- Win8 MSDN 简中/繁中/英文正式版下载(微软官方原版)
- 汇编原理6:opcode
- lammps学习总结3
- WIN10教育版怎么可以变更为专业版
- html怎么清除背景颜色,怎么去除Word复制网页内容的背景色?
- stream从list实体类筛选出符合条件的单个实体类
- 数字资产支付行业研究报告 | TokenInsight
- 嵌入式开发要学什么_必备嵌入式学习路线_高手速成方法
热门文章
- Django中ORM模型总结(二)[抽象模型类,模型类的对应关系,模型类的属性,字段类型]...
- AngularJS 模板
- mac安装ElasticSearch
- 把业务逻辑变成数据结构和SQL语句的例子。自然架构改成自然框架
- DataMining with Sql 2005
- 在div 底部显示背景图片
- 2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) B - Enlarging Enthusiasm dp好题
- vector容器中添加和删除元素
- 解决unity3d发布的网页游戏放到服务器上无法使用的问题
- 左边导航条动态增加或缩短高度以及放大缩小问题的解决方法