mysql外键使用
一、外键
.外键:链接两张表的字段,通过主表的主键和从表的外键来描述主外键关系,呈现的是一对多的关系。例如:商品类别(一)对商品(多),主表:商品类别表,从表:商品表。
.外键的特点:从表外键的值是对主表主键的引用、从表外键类型必须与主表主键类型一致
.声明外键约束
语法:alter table (从表) add [constraint] (外键名称) foreign key (从表外键字段名) references 主表 (主表的主键)
例如:().ALTER TABLE product(从表) ADD CONSTRAINT cid(外键名称) FOREIGN KEY (cid)(从表外键字段名) REFERENCES category(主表) (cid)(主表的主键);
(). ALTER TABLE product ADD FOREIGN KEY (cid) REFERENCES category (cid);
[外键名称]用于删除外键约束,一般建议”_fk”结尾
alter table 从表 drop foreign key 外键名称;
. 使用外键的目的:保证数据完整性
.注意事项:从表外键不能添加主表中不存在的记录、主表不能删除从表中已经引用的记录
二、表与表之间的关系
表与表之间的关系,就是表与表数据之间的关系。
. 一对多关系:
常见实例:客户和订单,分类和商品,部门和员工
一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键
语法:ALTER TABLE product ADD FOREIGN KEY (cid) REFERENCES category (cid);
. 多对多关系:
常见实例:学生和课程,商品和订单,人和角色
多对多建表原则:需要创建第三张表,中间表至少要有两个字段,这两个字段分别作为外键指向各自一方的主键(就是将一个多对多拆分成两个一对多)
两张表分别都是主表,第三张表为从表,提供两个字段,都是外键。
语法:alter table 从表(stu_course) add foreign key(sno) references stu(sid);
alter table 从表(stu_course) add foreign key(cno) references course(cid);
. 一对一关系:(了解)
在实际开发中应用不多,因为一对一可以创建成一张表
常见实例:公司和地址
两种原则:外键唯一,外键是主键
三、操作
.多表查询
().交叉连接查询(得到两个表的乘积,基本不使用)
select * from A,B;
().内连接查询(使用关键字:inner join -- inner可以省略)
隐式内连接:select * from A,B where 条件;
例如:select * from category c,product p where c.cid=p.cid;
显式内连接:select * from A inner join B on 条件;
例如:select * from category as c inner join product as p on p.cid=c.cid;
().外连接查询(使用关键字outer join --outer可以省略)
左外连接:left outer join
select * from A left outer join B on 条件;
例如:select * from category c left join product p on p.cid=c.cid;
右外连接:right outer join
select * from A right outer join B on 条件;
例如:select * from category c right join product p on p.cid=c.cid;
内连接和外连接的区别:
左外连接:查询的是左表全部及两个表的交集
内连接:查询的是两个表的交集
右外连接:查询的是右表全部及两个表的交集
.子查询
一条select语句结果作为另一条select语法的一部分(查询条件、查询结果、表等)
例如:查询化妆品分类上架商品详情
select * from product where cid =(select cid from category where cname='周伯通');
mysql外键使用的更多相关文章
- mysql 外键约束备注
梳理mysql外键约束的知识点. 1.mysql外键约束只对InnoDb引擎有效: 2.创建外键约束如下: DROP TABLE IF EXISTS t_demo_product; CREATE TA ...
- MySQL外键之级联
简介 MySQL外键起到约束作用,在数据库层面保证数据的完整性.例如使用外键的CASCADE类型,当子表(例如user_info)关联父表(例如user)时,父表更新或删除时,子表会更新或删除记录,这 ...
- MySQL外键约束On Delete、On Update各取值的含义
主键.外键和索引的区别? 主键 外键 索引 定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键, 外键可以有重复的, 可以是空值 主索引(由关键字PRIMARY定义的索引) ...
- Mysql 外键设置
MySql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给 ...
- MySQL外键的作用和创建
MySQL外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据.使两张表形成关联,外键只能引用外表中列的值! 我们来建两个表 CREATE TABLE `example1` ( ` ...
- Mysql外键的使用
MySQL外键(请确保数据库是innodb类型)网上有很多介绍的文章,这里我就凭自己的理解再次整理了下,废话不多说,直入正题哈.外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据 ...
- mysql 外键和子查询,视图
1.mysql 外键约束 建表时生成外键 foreing key ('sid') references' student'('id'); 建表后添加外键 alter table' course ...
- mysql外键使用和事物使用
mysql外键功能主要是为了保证关联表数据的一致性,主要目的是控制存储在外键表中的数据. 使两张表形成关联,外键只能引用外表中的列的值! 例如: a b 两个表 a表中存有 客户号,客户名称 b表中存 ...
- Mysql外键设置中的CASCADE、NO ACTION、RESTRICT、SET NULL
转: Mysql外键设置中的CASCADE.NO ACTION.RESTRICT.SET NULL 2017年06月11日 10:03:13 雅静8 阅读数:5491 版权声明:本文为博主原创文章 ...
- mysql外键约束总结
总结三种MySQL外键约束方式 如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是 ...
随机推荐
- hive 日常技巧
--删除表中重复数据 delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by ...
- 背水一战 Windows 10 (113) - 锁屏: 将 Application 的 Badge 通知和 Tile 通知发送到锁屏, 将 secondary tile 的 Badge 通知和 Tile 通知发送到锁屏
[源码下载] 背水一战 Windows 10 (113) - 锁屏: 将 Application 的 Badge 通知和 Tile 通知发送到锁屏, 将 secondary tile 的 Badge ...
- eclipse的这几个小玩意
scroll lock 滚动锁定 word wrap 自动换行 show console when standard out changes 标准输出更改时显示控制台 show cons ...
- HTML+CSS技术实现网页滑动门效果
一.什么是滑动门 大家在网页中经常会见到这样一种导航效果,因为使用频率广泛,所以广大的程序员给它起了一个名字,叫做滑动门.在学习滑动门之前,首先你要了解什么是滑动门. 小米官网,网页滑动门效果 二.实 ...
- 微服务中Feign快速搭建
在微服务架构搭建声明性REST客户端[feign].Feign是一个声明式的Web服务客户端.这使得Web服务客户端的写入更加方便 要使用Feign创建一个界面并对其进行注释.它具有可插入注释支持,包 ...
- ubuntu18.04虚拟机安装docker
第一步: sudo apt-get update 然后直接 sudo apt install docker.io 安装完成之后 可以 docker version 查看版本 或者 docke ...
- 《http权威指南》读书笔记14
概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...
- puppet-master搭建
puppet 搭建 Table of Contents 配置yum源 配置hosts 安装puppet-server 部署puppet-agent trouble-shoting 配置yum源 备份系 ...
- postgresql 安装文档
tar xf postgresql-9.4.5.tar.gz cd postgresql-9.4.5 yum grouplist yum grouplist|grep Deve yum groupin ...
- Spring Boot 2.x 启动全过程源码分析(上)入口类剖析
Spring Boot 的应用教程我们已经分享过很多了,今天来通过源码来分析下它的启动过程,探究下 Spring Boot 为什么这么简便的奥秘. 本篇基于 Spring Boot 2.0.3 版本进 ...