DAY14 MySQL学习笔记

DAY14 MySQL学习笔记

多表查询概述

概述:指从多张表中查询数据

笛卡尔积:笛卡尔乘积是指在数学中,两个集合A集合和B集合的所有情况(在多表查询时,需要消除无效的笛卡尔积)

A集合:A,B

B集合:1,2,3,4

笛卡尔积:2*4=8种组合,即8条数据

SELECT * FROM emp, dept;
--emp一共17员工,dept有6个部门,最终展示是102条,这样的现象是笛卡尔积

如何消除笛卡尔积

SELECT * FROM emp, dept WHERE emp.dept_id = dept.id;
多表查询的分类
连接查询

内连接:相当于查询A, B交集部分数据

外连接:

​ 左外连接:查询左表所有数据,以及两张表交集部分数据

​ 右外连接:查询右表所有数据,以及两张表交集部分数据

自连接:当前表与自身的连接查询,自连接查询,自连接必须使用表别名

子查询
连接查询-内连接

内连接查询语法:

隐式内连接

SELECT 字段列表 FROM1,2 WHERE 条件...;

显示内连接

SELECT 字段列表 FROM1 [INNER] JOIN2 ON 连接条件...;

示例

--1.查询每一个员工的姓名,及关联的部门的名称(隐式内连接实现)
--表结构:emp,dept
--连接条件:emp.dept_id = dept.id
SELECT emp.name, dept.name FROM emp, dept WHERE emp.dept_id = dept.id;

SELECT e.name, d.name FROM emp e, dept d WHERE e.dept_id = d.id; --起别名,不能直接通过表名限定字段
--2.查询每一个员工的姓名,及关联的部门的名称(显示内连接实现)
--表结构:emp,dept
--连接条件:emp.dept_id = dept.id
SELECT e.name, d.name FROM emp e INNER JOIN dept d ON e.dept_id = d.id;
--INNER可以省略
连接查询-外连接

左外连接

SELECT 字段列表 FROM1 LEFT [OUTER] JOIN2 ON 条件...;
--相当于查询表1(左表)的所有数据包含表1和表2交集部分的数据

右外连接

SELECT 字段列表 FROM1 RIGHT [OUTER] JOIN2 ON 条件...;
--相当于查询表2(右表)的所有数据包含表1和表2交集部分的数据

示例

--1.查询emp表的所有数据,和对应的部门信息(左外连接)
--表结构:emp,dept
--连接条件:emp.dept_id = dept.id
SELECT emp.*, dept.name FROM emp LEFT [OUTER] JOIN dept ON emp.dept_id = dept.id;
--2.查询dept表的所有数据,和对应的员工信息(右外连接)

SELECT dept.*, emp.* FROM dept RIGHT [OUTER] JOIN emp ON dept.id = emp.dept_id;

日记:好久没更新,今天开始继续学习,加油

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值