数据库---多表查询及规律

多表查询

1. 交叉连接查询

select * from 表1,表2;
左表的每条数据和右表的每条数据组合,会产生2张表的乘积数据,简称笛卡尔积现象。

2. 内连接查询

作用:可以使用内连接去查询多张表之间有关系的数据。

  • 隐式内连接:
    语法格式:select * from 表1,表2 where 关联条件 and 筛选条件;
    ps:可以使用表别名简化书写
  • 显示内连接:
    语法格式:select * from 表1 [inner] join 表2 on 关联条件 where 筛选条件 and 筛选条件 ;
    两个表以上:
    语法格式:select * from 表1 [inner] join 表2 [inner] join 表3 on 表1表2关联条件 and 表1表3关联条件;

on: 后跟的是关联条件
where: 后跟的是对结果的筛选条件

3. 外连接查询

  • 左外连接: 以join 左边的表为主,用左边表的记录去匹配右边表的记录,如果符合条件的则显示;如果右表中没有满足条件的对应数据,则填充null。
    语法格式:select * from 表1 left [outer] join 表2 on 关联条件 where 筛选条件;

  • 右外连接: 以join 右边的表为主,用右边表的记录去匹配左边表的记录,如果符合条件的则显示;如果左表中没有满足条件的对应数据,则填充null。
    语法格式:select * from 表1 right [outer] join 表2 on 关联条件 where 筛选条件;

两个表以上:
语法格式:select * from 表1 right [outer] join 表2 on 关联条件 right [outer] join 表3 on 关联条件;

总结:外连接就是在内连接的基础上保证左表或右表的所有数据全部展示。

4. 子查询

  • 用处1:一条sql执行的结果是另一条sql的条件,适用于单列单值或者单列多值。
    单列单值: select 查询字段 from 表 where 字段 =(子查询);
    单列多值: select 查询字段 from 表 where 字段 =(子查询);

  • 用处2:一条sql执行的结果作为一张表存在,适用于多列多值。
    多列多值: select 查询字段 from (子查询) 表别名 where 条件 ;

5. 多表查询的规律

  1. 不管我们查询几张表,表连接查询会产出笛卡尔积,我们需要消除笛卡尔积,拿到正确的数据。我们需要找到表与表之间通过哪个字段关联起来的(通常是外键=主键)。

  2. 消除笛卡尔积规律:2张表至少需要1个条件,3张表至少需要2个条件,4张表至少需要3个条件。(条件数量 = 表的数量-1),每张表都要参与进来。

  3. 多表连接查询步骤:
    确定要查询哪些表
    确定表连接条件
    确定查询字段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值