连接查询,子查询,联合查询
一,连接查询
1
.交叉连接查询
这种查询方式基本不会使用,原因就是这种查询方式得到的是两个表的乘积(笛卡儿集)
语法就是select * from a,b;
2.
内连接查询,可以有效的去除笛卡尔集现象
内连接查询分为两类:
隐式内连接 select * from A,B where 条件隐式连接使用别名:select * from A 别名1,B 别名2 where 别名1.xx=别名2.xx;显示内连接 select * from A inner join B on 条件 (inner可以省略)显示连接使用别名: select * from A 别名1 inner join B 别名2 on 别名1.xx=别名2.xx
3.
外连接
外连接有两种方式,一种是左外连接,一种是右外连接
左外连接:select * from A left outer join B on条件右外连接:select * from A right out join B on 条件左外连接就是左边的表的内容全部显示,然后匹配右边的表,如果右边的表匹配不到,则空右外连接就是右边的表的内容全部显示,然后匹配左边的表,如果左边的表匹配不到,则空
总结:
内连接就是两个表的交集
左外连接就是左边表加两表交集
右外连接就是右边表加两表交集
二,子查询
定义:
子查询允许把一个查询嵌套在另一个查询当中。
子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询内部查询,包含内部查询的就称为外部查询。内部查询,包含内部查询的就称为外部查询。
子查询可以包含普通select可以包括的任何子句,比如:distinct、 group by、order by、limit、join和union等;但是对应的外部查询必须是以下语句之一:select、insert、update、delete、set或 者do。
使用IN进行子查询
in的基本语法形式为:
where 操作数 in (值1,值2, ....)
则in子查询就是:
where 操作数 in ( 列子查询 );
使用in进行子查询,这个我们在日常写sql的时候是经常遇到的。in的意思就是指定的一个值是否在这个集合中,如何在就返回TRUE;否则就返回FALSE了。
in是“=any”的别名,在使用“=any”的地方,我们都可以使用“in”来进行替换。
有了in,肯定就有了not in;not in并不是和<>any是同样的意思,not in和<>all是一个意思。
三,联合查询
联合查询就是将两个select语句的查询结果“层叠”到一起成为一个“大结果”。
两个查询结果的能够进行“联合”的先觉条件是:结果字段数相等。
关键字:union
子查询的位置:
select 中、from 后、where 中.group by 和order by 中无实用意义。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步