mysql学习笔记四(多表查询)

一、内连接

1、隐式内连接

select 字段列表 from 表1,表2 where 条件…

2、显示内连接

select 字段列表 from 表1 [inner] join 表2 on 连接条件;

内连接查询的是两张表交集的部分

二、外连接

1、左外连接

select 字段列表 from 表1 left [outer] join 表2 on 连接条件;

左外连接查询的是表1所有数据包含两表交集部分的数据

2、右外连接

select 字段列表 from 表1 right [outer] join 表2 on 连接条件;

右外连接查询的是表2所有数据包含两表交集部分的数据

三、自连接

select 字段列表 from 表a 别名a join 表a 别名b on 条件…

自连接查询可以是内连接查询也可以是外连接查询

四、联合查询

select 字段列表 from 表1…
union [all]
select 字段列表 from 表2…;

1、对于联合查询的多张表的列数必须保持一致字段类型也必须保持一致
2、union all将全部数据直接合并在一起,union 合并后去重

五、子连接

1、概念

SQL语句中嵌套select语句,称为嵌套查询 ,又称子查询
select * from t1 where column1=(select column1 from t2);

子查询外部可以是insert/update/delete/select的任何一个

2、分类

(1)标量子查询

  • 子查询结果为单个值
  • 常用操作符:= <> > >= < <=

例:查询“销售部”所有员工信息
select * from emp where dept_id=(select id from dept where name=“销售部”);

(2)列子查询

  • 子查询结果为一列(可以为多行)
  • 常用操作符:in、not in、any、some 、all
    在这里插入图片描述

例:查询“销售部”和“市场部”的所有员工信息
select * from emp where dept_id in(select id from dept where name=“销售部” or name=“市场部”);

(3)行子查询

  • 子查询结果为一行(可以为多列)
  • 常用操作符:=、<>、in、not in

例:查询“张无忌”的薪资及直属领导相同的员工信息
select * from emp where (salary,managerid)=(select salary,managerid from emp where name=“张无忌”);

(4)表子查询

  • 子查询结果为多行多列
  • 常用操作符:in

例:查询与“张三”,“李四”的职位和薪资相同的员工信息
select * from emp where (job,salary)in(select job,salary from emp where name=“张三” or name=“李四”);

六、多表关系

1、一对多:多的一方建立外键,指向一的一方的主键
2、多对多:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
3、一对一:在任意一方加入外键,关联另一方的主键,并设置外键为唯一的(unique)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值