您的位置:首页 > 数据库

sql的交叉连接,内连接,左外连接,右外连接,全外连接总结

2015-05-23 10:39 316 查看
实践是最好的检验,一直都对这几个连接查询出来的结果有什么不同不大理解,然后自己放一块查询比较了一下,用结果来说话~

先建两张表如下:

t1:

id  name  age

1  张三   18

2  李四   25

t2:

id  name  age

1  王五    25

2  大白   30

1.交叉连接:也叫笛卡尔积

select * from t1 cross join t2; /*不带查询条件的交叉连接/

select * from t1 ,t2;/*这样默认是cross join/

select * from t1 cross join t2 where t1.age = t2.age;/*带查询条件的交叉连接,但是不能用on连接子句,只能用where /



2.内连接:查询结果是t1和t2的公有部分

select * from t1 inner join t2 on t1.age = t2.age;



可以看出当查询条件一样时交叉连接和内连接的查询结果一样,只不过交叉连接使用where子句作查询条件 而内连接用on子句作查询条件

3.左外连接:查询结果是左表的其它部分 再加上t1和t2的公有部分(这里左表即t1)

select * from t1 left join t2 on t1.age = t2.age;



3.右外连接:查询结果是t1和t2的公有部分 再加上右表的其它部分(这里右表即t2)

select * from t1 right join t2 on t1.age = t2.age;



4.全外连接:查询结果是t1和t2的公有部分 再加上左表和右表的其它部分

select * from t1 full join t2 on t1.age = t2.age;



注:hibernate中用.关联的是一个实体或组件是默认是采用交叉连接,但是不能关联一个集合,否则报错。所以在hibernate中对于集合我们要显示使用内连接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: