1.意思不一样。
左连接:只要左边表中有记录,数据就能检索出来,而右边有的记录必要在左边表中有的记录才能被检索出来。
右连接:右连接是只要右边表中有记录,数据就能检索出来。
2.用法不一样。
右连接与左连接相反,左连接A LEFT JOIN B,连接查询的数据,在A中必须有,在B中可以有可以没有。
3.空值不一样。
左连接是已左边表中的数据为基准,若左表有数据右表没有数据,则显示左表中的数据右表中的数据显示为空。
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
定义:
数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。
即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。
1、左连接, 左边的表不加限制,返回包括左表中的所有记录和右表中联结字段相等的记录
右连接),右边的表不加限制,返回包括右表中的所有记录和左表中联结字段相等的记录
全连接,左右两边的表都不加限制,只返回两个表中联结字段相等的行。
2、 左连接是已左边表中的数据为基准,若左表有数据右表没有数据,则显示左表中的数据右表中的数据显示为空。左联接的结果集包括 LEFT 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
3、 右联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
一般所说的左连接,外连接是指左外连接,右外连接。做个简单的测试你看吧。先说左外连接和右外连接:
[TEST1@orcl#16-12月-11] SQL>select * from t1
ID NAME
---------- --------------------
1 aaa
2 bbb
[TEST1@orcl#16-12月-11] SQL>select * from t2
IDAGE
---------- ----------
1 20
3 30
左外连接:
[TEST1@orcl#16-12月-11] SQL>select * from t1 left join t2 on t1.id=t2.id
ID NAME IDAGE
---------- -------------------- ---------- ----------
1 aaa 1 20
2 bbb
右外连接:
[TEST1@orcl#16-12月-11] SQL>select * from t1 right join t2 on t1.id=t2.id
ID NAME IDAGE
---------- -------------------- ---------- ----------
1 aaa 1 20
3 30
从上面的显示你可以看出:左外连接是以左边的表为基准。通俗的讲,先将左边的表全部显示出来,然后右边的表id与左边表id相同的记录就“拼接”上去,比如说id为1的记录。如果没有匹配的id,比如说t1中id为2的t2中就没有。那边就以null显示。
右外连接过程正好相反。
再看内连接:
[TEST1@orcl#16-12月-11] SQL>select * from t1 inner join t2 on t1.id=t2.id
ID NAME IDAGE
---------- -------------------- ---------- ----------
1 aaa 1 20
看到没有? 只有一条记录。内连接就是只取出符合过滤条件的记录 也就是t1.id=t2.id 那么符合t1.id=t2.id的记录只有id=1这一条,所以只显示一条。 不像外连接,是将你作为基准的表(左外连接就是左边表为基准,右外连接就是右边表为基准)的所有行都显示出来。
综上所述,你应该能明白了吧?如果不明白请留言。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)