MySQL — 关联

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL — 关联相关的知识,希望对你有一定的参考价值。

参考技术A

来自mysql的学习笔记,写的不对的地方大家多多指教哦

什么是外键?

假设有 2 个表,分别是表 A 和表 B,它们通过一个公共字段“id”发生关联关系,我们把这个关联关系叫做 R。如果“id”在表 A 中是主键,那么,表 A 就是这个关系 R 中的主表。相应的,表 B 就是这个关系中的从表,表 B 中的“id”,就是表 B 用来引用表 A 中数据的,叫外键。所以,外键就是从表中用来引用主表中数据的那个公共字段。

语法结构:

在创建表时添加外键约束:

在修改表时定义外键约束:

例子1:创建表时添加外键约束

首先创建主表:importhead

创建从表:test_mysql.importdetails

查询外键约束的相关信息:

查询结果为:

例子2:修改表时定义外键约束

修改表时定义从表test_mysql.importdetails的外键约束

删除外键约束使用DROP,语法结构为:

例子:删除从表test_mysql.importdetails的外键约束

在 MySQL 中,有 2 种类型的连接,分别是内连接(INNER JOIN)和外连接(OUTER JOIN)。

在 MySQL 里面,关键字 JOIN、INNER JOIN、CROSS JOIN 的含义是一样的,都表示内连接。我们可以通过 JOIN 把两个表关联起来,来查询两个表中的数据。

例子:有一张销售表,如下图:

有一张会员信息表,如下图:

通过内连接,查询会员的销售记录:

运行语句,结果如下:

根据上面的结果,其实可以得知:内连接查询到结果集为两个表的交集部分。

跟内连接只返回符合连接条件的记录不同的是,外连接还可以返回表中的所有记录,它包括两类,分别是左连接和右连接。

例子1:左外连接

如果需要查询所有销售记录,则可以使用左外连接

运行语句,结果为:

从上面的结果可以得知,LEFT JOIN左边的表会返回全部记录,而右边的表只返回符合连接条件的记录

例子2:右外连接:

运行语句,结果为:

从上面的结果可以得知,RIGHT JOIN右边的表会返回全部记录,而左边的表只返回符合连接条件的记录

mysql两个表关联更新问题?

表1

name sex address phone
张三 男 上海市 135********
李四 男 北京市 138********
王五 男 成都市 133*******
-----------------------------------------------------------
表2
name sex address phone
张三 男 天津市 135********
李四 男 杭州市 138********
王五 男 贵州市 133********

如何把表1中address替换为表2address内容
在表1 表2 name相同的情况下

我好像昨天回答过,你不相信可以上机测试:
UPDATE 表1 SET address=(SELECT 表2.address from 表2 WHERE 表2.name=表1.name)

上面的语句非常简单,很容易明白,语句工作时,扫描表1的所有记录,对于每一条记录,按照name去查找表2的address并替换本表此字段。
参考技术A UPDATE tb1,tb2 SET tb1.address=tb2.address WHERE tb1.name=tb2.name

用上面这个sql语句,举一反三吧

本回答被提问者采纳

以上是关于MySQL — 关联的主要内容,如果未能解决你的问题,请参考以下文章

mysql两个表关联更新问题?

如何查看mysql的表格之间的关联

mysql 两个表中的信息怎么关联起来使用?

mysql 3张表关联批量更新

Mysql关联更新 DB2写法

MySQL 关联查询规范