这里之前一直没有写,主要原因觉得好多东西比较基础,没想都写,但是后来觉得,学习的话应该是扫盲和汇总的阶段,所以这里也单独写一下
我们先看结果再分析:
两个表:
A(id,name)
数据:(1,张三)(2,李四)(3,王五)
B(id,name)
数据:(1,学生)(2,老师)(4,校长)
左连接结果:
select A.*,B.* from A left join B on A.id=B.id;
1 张三 1 学生
2 李四 2 老师
3 王五 NULL NULL
右链接结果:
select A.*,B.* from A right join B on A.id=B.id;
1 张三 1 学生
2 李四 2 老师
NULL NULL 4 校长
A left join B和B right join A不一样吗? 其实显示的数据行大致相同,但是数据位置不同而已.
A表
id name
1 小王
2 小李
3 小刘
B表
id A_id job
1 2 老师
2 4 程序员
内连接:(只有2张表条件匹配的行才能显示)
select a.name,b.job from A a inner join B b on a.id=b.A_id
本条sql,满足a.id=b.Aid的只有一条数据,所以只能得到一条记录
小李 老师
1.MySQL使用全外连接查询数据出现的问题 使用sql语句:
SELECT * from people1 p1 full JOIN people2 p2 ON p1.id=p2.id
查询数据信息,会提示错误
原因是MySQL数据库不支持全外连接查询。
2.解决方案 可以使用unionl将左连接和右连接得到的结果合并起来,就可以得到想到的结果
SELECT * from people1 p1 LEFT JOIN people2 p2 ON p1.id=p2.id UNION
SELECT * from people1 p1 RIGHT JOIN people2 p2 ON p1.id=p2.id;