目录
一、多表连接
- 交叉连接
- 内连接
- 外连接
- 自然连接
1.交叉连接
笛卡尔积,保留所有的字段,只是单纯的连接
SELECT 查询字段 FROM 表1 CROSS JOIN 表2;
CROSS JOIN用于连接两个要查询的表。
通过该语句可以查询两个表中所有的数据组合
2.内连接
使用比较运算符设置连接条件,将一个表中的所有行与另外一张表中的行进行匹配,只返回满足条件的行。
SELECT 字段1,字段2 FROM 表1 JOIN 表2 WHERE 字段列值1=字段列值2
3.外连接
有主从之分,以后最容易使用的,并且和一相互转换
1.左连接 LEFT JION
SELECT 字段1,字段2 FROM 表1 LEFT JION 表二 ON 条件表达式
2.右连接 RIGHT JOIN
SELECT 字段1,字段2 FROM 表1 RIGHT JOIN 表二 ON 条件表达式
4.自然连接
自连接,就是两个表的两个副本进行连接
二、多表连接查询
子查询是指嵌套到其它查询里的SELECT语句,也称为嵌套查询。
1.简单的子查询
SELECT 字段1 字段2 FROM goods WHERE goods.id = (SELECT 字段1 FROM 表2 WHERE 表2.id<=2);
2.联合查询
SELECT * FROM 表1
UNION * FROM 表2
UNION 联合查询的返回结果会自动去除重复项,如果不需要去除重复项需要使用 UNION ALL
3.带有IN的子查询
SELECT 列1 列2 FROM 表1 WHERE 表1.id IN (SELECT 表2.id FROM 表2 WHERE 表2.id<4);
三.子查询的分类
查询的功能:为标量子查询、列子查询、行子查询和表子查询。
查询出现的位置可以分为WHERE子查询和FROM子查询。
WHERE子查询:标量子查询、列子查询和行子查询
FROM子查询:表子查询
总结:
- 多表查询是在以后项目中经常用到的
- 多表查询操作应该烂熟于心
- 单表操作也需要烂熟于心
- 数据库是后端程序员的基本知识点