數據庫兩表連接四種方法
阿新 • • 發佈:2018-06-09
null nbsp _id 連接查詢 from where ext 左右 true
一般我們連接兩張表時,都是select xxx,xx from x1,x2 where x1.a=x2.a。其實數據庫還有4中join操作。
例如:表1:
s_id | name | sex |
1 | 張三 | 男 |
2 | 李四 | 女 |
4 | 王五 | 男 |
表2:
c_id | id | name |
1 | 1 | 11111 |
2 | 2 | 22222 |
3 | 3 | 33333 |
4 | 2 | 44444 |
1.連接查詢
select s.name s_name,s.sex s_sex,c.name c_name from student s,class c where s.s_id=c.s_id
結果:
s_name |
s_sex |
c_name |
張三 | 男 | 11111 |
李四 | 女 | 22222 |
李四 | 男 | 44444 |
2.inner join
select s.name s_name,s.sex s_sex,c.name c_name from student s inner join class c on s.s_id=c.s_id
結果:
s_name | s_sex | c_name |
張三 | 男 | 11111 |
李四 | 女 | 22222 |
李四 | 女 | 44444 |
可以看出inner join 和我們直接連接查詢沒什麽差別!
3.left join
select s.name s_name,s.sex s_sex,c.name c_name from student s left join class c on s.s_id=c.s_id
結果:
s_name | s_sex | c_name |
張三 | 男 | 11111 |
李四 | 女 | 22222 |
李四 | 女 | 44444 |
王五 | 男 |
4.right join
select s.name s_name,s.sex s_sex,c.name c_name from student s right join class c on s.s_id=c.s_id
結果:
s_name |
s_sex |
c_name |
張三 | 男 | 11111 |
李四 | 女 | 22222 |
33333 | ||
李四 | 女 | 44444 |
5.full join
select s.name s_name,s.sex s_sex,c.name c_name from student s full join class c on s.s_id=c.s_id
結果:
s_name | s_sex | c_name |
張三 | 男 | 11111 |
李四 | 女 | 22222 |
33333 | ||
王五 | 男 | |
李四 | 女 | 44444 |
綜上可以看出:
普通連接和 inner join連接沒什麽差別!
left join:左表所有行都輸出,如果找不到右表對應字段,即該字段為null
left join:右表所有行都輸出,如果找不到左表對應字段,即該字段為null
left join:左右表行全部對應輸出,如果找不到對應字段,即為null
數據庫兩表連接四種方法