sql注入联合查询
1. 内连(inner join或join)
2. 外连(outer join)
- 左外连接(left outer Join 或 left Join)
- 右外连接(right outer Join 或 right Join)
- 全连接(full outer join)
3.交叉连接(cross Join)
4.结果集连接(union 和 union all)
表A:
username | password |
---|---|
aa | 111 |
bb | 222 |
cc | 333 |
表B:
username | password |
---|---|
aa | 444 |
dd | 555 |
ee | 666 |
一.内连接(inner join)
仅显示两个表中的匹配行
sql:
select * from A inner join B on A.username=B.username;
查询结果:
A.username | A.password | B.username | B.password |
---|---|---|---|
aa | 111 | aa | 444 |
多表内连接查询即在后边添加inner join语句,以此类推。
sql:
select * from A inner join B on (A.username=B.username) inner join C on (A.username=C.username);
二.左连接(left outer join)
左表有就显示,不论右表,右表不满足条件的用null填充
sql:
select * from A left outer join B on A.username=B.username;
查询结果:
A.username | A.password | B.username | B.password |
---|---|---|---|
aa | 111 | aa | 444 |
bb | 222 | null | null |
cc | 333 | null | null |
三.右连接(right outer join )
右表有就显示,不论左表,左表不满足条件的用null填充
sql:
select * from A right outer join B on A.username=B.username;
查询结果:
A.username | A.password | B.username | B.password |
---|---|---|---|
aa | 111 | aa | 444 |
null | null | dd | 555 |
null | null | ee | 666 |
四.全连接(full outer join)
sql:
select *from A full outer join B on A.username=B.username;
显示左表和右表的所有内容,再过滤掉重复的,其中一个表不够就用null填充
A.username | A.password | B.username | B.password |
---|---|---|---|
aa | 111 | aaa | 444 |
bb | 222 | null | null |
null | null | dd | 555 |
cc | 333 | null | null |
null | null | ee | 666 |
五.交叉连接(cross join)
交叉连接是对A、B量表进行笛卡尔积的结果查询出来。即A的每条记录都有和B中所有记录相对应的信息
sql:
select * from A cross join B ;
A.username | A.password | B.username | B.password |
---|---|---|---|
aa | 111 | aaa | 444 |
aa | 111 | dd | 555 |
aa | 111 | ee | 666 |
bb | 222 | aa | 444 |
bb | 222 | dd | 555 |
bb | 222 | ee | 666 |
cc | 333 | aa | 444 |
cc | 333 | dd | 555 |
cc | 333 | ee | 666 |
六.结果集连接(union和union all)
union语句即是将A表和B表合并在一起,过滤掉重复的内容
union all语句即是将A表和B表合并在一起,重复的内容依然显示
这里我开头的表设置得不是特别好,没办法直观的展示,读者可以设置有内容重复的两张表进行实操练习一下。
作者还是个新手小菜鸡,若有任何错误欢迎指正