MySQL学习(四)——外键
1、比方现在有两张表“分类表”和“商品表”,为了表明商品属于哪个分类,通常我们将在商品表上添加一列,用于存放分类cid的信息,此列称为:外键。

此时分类表category称为主表,cid称为主键;商品表products称为从表,category_id称为外键。
外键特点:1)从表外键的值是对主表主键的引用
2)从表外键类型必须与主表主键一致。
使用外键的目的:保证数据的完整性
2、首先在命令提示符内创建一个数据库web09,并创建两张表category和product,语句如下:

分别插入多条数据
eg.insert into category(cid,cname) values('c001','家电');
insert into product(pid,pname,price,category_id) values('p001','联想','5000','c001');
显示如下:


3、声明外键约束
语法:alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);
[外键名称]用于删除外键约束的,一般建议"_fk"结尾

约束声明后,如果我想删除category表中cid=c003的数据,删除不了

4、解除约束
语法:alter table 从表 drop foreign key 外键名称

继续删除category表中cid=c003的数据,可以删除

注意:从表外键不能添加主表中不存在的记录
主表不能删除从表中已经引用的记录。
5、一对多建表原则:

6、多对多建表原则:

MySQL学习(四)——外键的更多相关文章
- MySQL学习7 - 外键的变种 三种关系
一 介绍 二 如何找两张表之间的关系 三 表的三种关系 1.书和出版社 2.作者和书籍的关系 3.用户和博客 本节的重点 如何找出两张表之间的关系 表的三种关系 一 介绍 因为有foreign key ...
- Mysql学习总结(19)——Mysql无法创建外键的原因
在MySQL中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1. 两个字段的类型或者大小不严格匹配.例如,如果一个 ...
- mysql之创建外键报150错误的处理方法
这几天由于在赶项目进度,也就没有及时记录下自己的学习情况 ,在完成项目的这段时间里,碰到了很多问题,在解决问题的过程中学习了不少技巧. 这里就主要介绍一下在mysql数据库中为表之间建立外键时报100 ...
- mysql foreign key(外键) 说明与实例
一,什么是foreign key,及其完整性 个人觉得,foreign key就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强.关于完整性,关连性 ...
- [原创]MYSQL中利用外键实现级联删除和更新
MySQL中利用外键实现级联删除.更新 MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引.在创建索引的时候,可以指定 ...
- Mysql无法创建外键的原因
在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1. 两个字段的类型或者大小不严格匹配.例如,如果一个 ...
- 转!!!Mysql无法创建外键的原因
在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1. 两个字段的类型或者大小不严格匹配.例如,如果一个 ...
- SET FOREIGN_KEY_CHECKS=0;在Mysql中取消外键约束。
SET FOREIGN_KEY_CHECKS=0;在Mysql中取消外键约束.
- MySQL数据库建立外键失败的原因总结
在MySQL数据库创建外键时,经常会发生一些错误,这是一件很令人头疼的事.一个典型的错误就是:Can’t create table... 的错误.在很多实例中,这种错误的发生都是因为mysql一直以来 ...
随机推荐
- BottomSheetBehavior 结合CoordinatorLayout实现底部栏
1.xml <?xml version="1.0" encoding="utf-8"?> <android.support.design.wi ...
- indexOf实际试用方法
用于搜索和查找关键字个数或者位置 例如: package zifu; public class tianqi { public static void main (String args[]){ St ...
- 查看网站域名IP地址
运行:CMD 输入: Nslookup 网站地址 示例: Nslookup httpwww.baidu.com 我们是筑梦团队,我们的座右铭是:当提起逐梦的脚步,也请举起筑梦的双手
- Kattis - ACM Contest Scoring
ACM Contest Scoring Our new contest submission system keeps a chronological log of all submissions m ...
- Python多线程原理与实现
Date: 2019-06-04 Author: Sun Python多线程原理与实战 目的: (1)了解python线程执行原理 (2)掌握多线程编程与线程同步 (3)了解线程池的使用 1 线程基本 ...
- luogu P2584 [ZJOI2006]GameZ游戏排名系统 Splay
实在不想调了QAQ... Code: #include <cstdio> #include <algorithm> #include <cstring> #incl ...
- H5-移动端适配
之前写H5页面也会遇到适配问题, 是通过媒体查询一点一点调整,始终觉得很繁琐,但一直也没去想想解决的办法. 今天专门花了一上午的时间来去研究. 小生只是刚踏入前端路的小白,对于网上各位大佬的讲解适配 ...
- 一些sass
# sass #---sass---定义变量:-- $变量名: : 默认变量 sass的默认变量仅需要在值后面加上!default即可.list--list数据可通过空格,逗号或小括号分 ...
- 如何让select中的滚动条自动定位到框中选中项的位置
document.getElementById("hidScrollTop").value = document.getElementById("slcYZYongFa& ...
- [CTSC1999][网络流24题]补丁VS错误
题目:洛谷P2761.vijos P1019.codevs1239.codevs2218. 题目大意:有n个错误,m个不同的补丁. 对于一个补丁,有两个不同的字符串描述.具体如下: 如果当前错误包含第 ...