MySQL——多表查询

        多表查询是在数据库中处理来自两个或更多表的数据的一种方法。在关系型数据库管理系统中,如MySQL,多表查询允许您从多个表中检索数据,只要这些表之间存在某种关系。这种关系通常是通过共享的一个或多个字段(通常称为键)来定义的。

多表关系

       一对多(多对一):一张表的多个字段记录数据与另一张表的一个字段记录数据相关联。

一般将记录多个字段数据的表建立外键(子表),指向记录一个字段数据的表(父表)。

        多对多:一张表的多个字段记录数据与另一张表的多个字段记录数据相关联。

建立第三张中间表,中间表(子表)至少包含两个外键,分别关联两方的主键(父表)。

        一对一:一张表的一个字段记录数据与另一张表的一个字段记录数据相关联。

在任意一方添加一个外键(子表),关联另外一方(父表),并且设置外键约束是唯一的

 相关概念:

        笛卡尔积指在数学中,两个集合A和集和B的所有组合情况。

        内连接:

                隐式内连接:

SELECT <字段列表> FROM <表1>,<表2> WHERE 条件;

                显示内连接:

SELECT <字段列表> <表1> [INNER] JOIN <表2> ON 连接条件...;

         外连接:

                左外连接 查询左表的数据,和两表交集的数据

SELECT <字段列表> FROM <表1> LEFT [OUTER] JOIN <表2> ON 条件;

                右外连接 查询右表的数据,两表和交集的数据

SELECT <字段列表> FROM <表1> RIGHT [OUTER] JOIN <表2> ON 条件;

                 在一般情况下使用左外连接,因为将两表的位置交换一下就可以用左外连接实现右外连接

        自连接

SELECT <字段列表> FROM <表A> 别名A JOIN <表A> 别名B ON 条件;

        联合查询--UNION:就是将多次查询的结果合并起来,形成一个新的查询结果集。

                                        UNION ALL 合并所有的查询结果,不加ALL就会做去重处理

        子查询

                嵌套在SELSCT的语句称为嵌套查询,又称子查询

SELECT *FROM <任意表> WHERE COLUMNL = (SELECT COLUMNL FROM <任意表>)

                子查询外部语句可以是INSERT/DELETE/UPDATE/SELECT(增,删,改,查)的任意一个

                分类:

                        标量子查询 (子查询结果值为单行单列的单个值)

                        列子查询 (子查询结果为一列)

                        行子查询 (子查询结果值为一行)

                        表子查询 (子查询结果为多行多列)

 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值