内连接:也称为等值连接,返回两张表都满足条件的部分。inner join
就等于 join
select * from A inner join B on A.id=B.id
外连接分为左外连接(left outer join)和右外连接(right outer join)。
left outer join
与 left join
等价, 一般写成left join
right outer join
与 right join
等价,一般写成right join
取左边的表的全部,右边的表按条件,符合的显示,不符合则显示null
select * from A left join B on A.id=B.id
取右边的表的全部,左边的表按条件,符合的显示,不符合则显示null
select * from A right join B on A.id=B.id
SQLite 支持 左外连接(left outer join),但不支持 右外连接(right outer join)
全连接(full join)结合的左,右外连接的结果。连接表将包含的所有记录来自两个表,并使用NULL值作为两侧缺失匹配结果
select * from A full join B on A.id=B.id
MySQL不支持FULL JOIN
用于生成两张表的笛卡尔结果集,结果集为左表中的每一行与右表中的所有行组合。
select * from A , Bselect * from A cross join B
select * from A , B
语句就是返回笛卡尔结果集,等同于 select * from A cross join B
交叉连接有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积。
例如:下面的语句1和语句2的结果是相同的。
语句1:隐式的交叉连接,没有CROSS JOIN。
SELECT O.ID, O.ORDER_NUMBER, C.ID, C.NAME
FROM ORDERS O , CUSTOMERS C
WHERE O.ID=C.ID;
语句2:显式的交叉连接,使用CROSS JOIN。
SELECT O.ID, O.ORDER_NUMBER, C.ID, C.NAME
FROM ORDERS O CROSS JOIN CUSTOMERS C
on O.ID=C.ID;
连接自身表,需配合别名使用,
select * from A a1, A a2 where a1.id=a2.id
自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而等值连接并不去掉重复的属性列。
如:A中a,b,c字段,B中有c,d字段,则select * from A natural join B
相当于select A.a,A.b,A.c,B.d from A.c = B.c
。
select * from A natural join B
select A.a,A.b,A.c,B.d from A.c = B.c
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态