指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。
1.等值连接
依据两个表中相同内容的字段进行连接
表TESTA,TESTB,TESTC,各有A, B两列。
内连接
内连接,即最常见的等值连接,例:
SELECT *
FROM TESTA,TESTB
WHERE TESTA.A=TESTB.A
2.非等值连接
依据两个表中内容相关列(非相同)字段进行连接
3.自连接
连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。
左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。
1. 左外连接 left outer join 或者 left join
左外连接就是在等值连接的基础上加上主表中的未匹配数据,例:
SELECT *
FROM TESTA
LEFT OUTER JOIN TESTB
ON TESTA.A=TESTB.A
右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。
右外连接 right outer join 或者 right join
右外连接是在等值连接的基础上加上被连接表的不匹配数据
SELECT *
FROM TESTA
RIGHT OUTER JOIN TESTB
ON TESTA.A=TESTB.A
全外连接:左外连接 union 右外连接。
全外连接 full outer join 或者 full join
全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上。
SELECT *
FROM TESTA
FULL OUTER JOIN TESTB
ON TESTA.A=TESTB.A
select
…
from
a
join
b
on
…
join
c
on
…
where
…
SELECT s.name, s.id, g.yuwen, sl.level
FROM grade g
JOIN student s
ON s.id = g.id
JOIN score_level sl
ON g.yuwen BETWEEN sl.low AND sl.high
where g.yuwen > 70;
上面表示a表和b连接,然后a表再和c连接,其结果合并在一起。不是a表先连接b,其结果再和c连接
where语句放在最后