1. 程式人生 > 其它 >【SQL學習筆記3】JOIN連線

【SQL學習筆記3】JOIN連線

技術標籤:SQL學習筆記sqlmysql資料庫

JOIN:通過引用兩個或者兩個以上的表,從而獲取資料。

***實際應用過程中應儘量使用小表join大表,join查詢時應注意的點:

-- 只支援等值連線
SELECTa.*FROMaJOINbON(a.id= b.id)
 
SELECTa.*FROMaJOINb
ON(a.id= b.id ANDa.department = b.department)
 
-- 可以join多個表
SELECTa.val, b.val, c.valFROMaJOINb
ON(a.key= b.key1)JOINcON(c.key= b.key2)

JOIN有以下幾種用法:

1.(INNER)JOIN:表中至少有一個行匹配,才會返回相應的行,否則不返回:

如下,返回所有同學的語文成績,如果沒有語文成績則不返回該同學姓名:

select stu_name,grade from
student
join
(select stu_id,grade from course 
join 
grade
where couname='語文' and grade.stu_id=course.stu_id) as a
on student.stu_id=a.stu_id;

2.LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行:

如下:返回所有同學的語文成績,如果沒有語文成績則只返回該同學姓名

select stu_name,grade from
student
left join
(select stu_id,grade from course 
join 
grade
where couname='語文' and grade.stu_id=course.stu_id) as a
on student.stu_id=a.stu_id;

3.RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行:

如下:返回所有同學的語文成績,如果沒有語文成績則只返回該同學姓名

select stu_name,grade from
(select stu_id,grade from course 
join 
grade
where couname='語文' and grade.stu_id=course.stu_id) as a
left join
student
on student.stu_id=a.stu_id;

4.FULL JOIN: 只要其中一個表中存在匹配,就返回行: