MySql多表查询

1.交叉连接查询

1)交叉连接查询返回被连接的两个表所有数据行的笛卡尔积

2)笛卡尔积可以理解为一张表的每一行与另一张表的任意一行进行匹配

3)加入A表有m行数据,B表有n行数据,则返回m*n行数据

4)笛卡尔积会产生很多冗余的数据,后期的其他查询可以在该集合的基础上进行筛选

--交叉连接查询
select * from 表1,表2,表3...

2.内连接查询

--隐式内连接(SQL92标准):
select * from A,B where 条件;
--显示内连接(SQL99标准):
select *  from A inner join B on 条件;

--查询每个部门的所属员工
select * from dept,employees where dept.id = employees.dept_id;
select * from dept inner join employees on dept.id = employees.dept_id;

3.外连接查询

外连接分为:左外连接(left outer join)、右外连接(right outer join)、满外连接(full outer join)

--左外连接:left outer join
select * from 表1 left outer join 表2 on 条件;
--右外连接:right outer join
select * from 表1 left outer join 表2 on 条件;
--满外连接:full outer join
select * from 表1 full outer join 表2 on 条件; --实际在mysql运行出现语法错误
--将左右外连接,连起来,取并集
--union是将两个查询结果上下拼接,并去重
--union all将两个查询结果上下拼接,不去重
select * from 表1 left outer join 表2 on 条件
union
select * from 表1 left outer join 表2 on 条件;

4.子查询

子查询可以返回的数据类型一共分为四种:

1)单行单列:返回的是一个具体列的内容,可以理解为一个单值数据

2)单行多列:返回一行数据中多个列的内容

3)多行单列:返回多行记录之中同一列的内容,相当于给出了一个操作范围;

4)多行多列:查询返回的结果是一张临时表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值