连接查询,子查询,联合查询

一,连接查询

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 中无实用意义。

原文地址:https://www.cnblogs.com/-lwl/p/10927153.html