[b]自然连接[/b](INNER JOIN)也叫内连接
SELECT PUB_NAME,TITLE
FROM TITLES,PUBLISHERS
WHERE TITLES.PUB_ID=PUBLISHERS.PUB_ID
或写成:
SELECT PUB_NAME,TITLE
FROM TITLES INNER JOIN PUBLISHERS
ON TITLES.PUB_ID=PUBLISHERS.PUB_ID
其中,INNER JOIN是SQL Server的缺省连接,可简写为JOIN。在JOIN后面指定哪些表作连接。ON后面指定了连接的条件。
以上操作的过程如下:
1) 从TITLES表中取出一条符合其条件的记录。
2) 扫描PUBLISHERS表,分别检查每条记录是否在连接属性上同表TITLES取出的记录相
3) 相等就显示信息。继续从表TITLES中取下一条记录,重复步骤2。其实,两个或多个表要做连接,那么这些表之间必然存在着主键和外键的关系。所以,只需要将这些键的关系列出,就可以得出表连接的结果。如上例中, PUB_ID是PUBLISHERS表的主键, PUB_ID又是
TITLES表的外键,参照PUBLISHERS表中的PUB_ID .所以,这两个表的连接条件就是TITLES.PUB_ID=PUBLISHERS. PUB_ID。
[b]外连接[/b]
创建外连接规则:
1) 外连接显示外部表中的所有行,包括与相关表不相配的行在内。
2) 外连接只能在两张表之间进行。
3) 不能在内部表上使用IS NULL检索条件。
SQL语句:select * from A right join B on A.aID = B.bID;
Oracle特有的方法 select * from A,B on A.aID(+)= B.bID;
right join是以B表的记录为基础的,A可以看成左表,B可以看成右表,right join是以右表为准的。换句话说,右表(B)的记录将会全部表示出来,而左表(A)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID)。A表记录不足的地方均为NULL。
SQL语句:select * from A left join B on A.aID = B.bID;
Oracle特有的方法 select * from A,B on A.aID= B.bID(+);
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的。换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID)。B表记录不足的地方均为NULL。
SELECT PUB_NAME,TITLE
FROM TITLES,PUBLISHERS
WHERE TITLES.PUB_ID=PUBLISHERS.PUB_ID
或写成:
SELECT PUB_NAME,TITLE
FROM TITLES INNER JOIN PUBLISHERS
ON TITLES.PUB_ID=PUBLISHERS.PUB_ID
其中,INNER JOIN是SQL Server的缺省连接,可简写为JOIN。在JOIN后面指定哪些表作连接。ON后面指定了连接的条件。
以上操作的过程如下:
1) 从TITLES表中取出一条符合其条件的记录。
2) 扫描PUBLISHERS表,分别检查每条记录是否在连接属性上同表TITLES取出的记录相
3) 相等就显示信息。继续从表TITLES中取下一条记录,重复步骤2。其实,两个或多个表要做连接,那么这些表之间必然存在着主键和外键的关系。所以,只需要将这些键的关系列出,就可以得出表连接的结果。如上例中, PUB_ID是PUBLISHERS表的主键, PUB_ID又是
TITLES表的外键,参照PUBLISHERS表中的PUB_ID .所以,这两个表的连接条件就是TITLES.PUB_ID=PUBLISHERS. PUB_ID。
[b]外连接[/b]
创建外连接规则:
1) 外连接显示外部表中的所有行,包括与相关表不相配的行在内。
2) 外连接只能在两张表之间进行。
3) 不能在内部表上使用IS NULL检索条件。
SQL语句:select * from A right join B on A.aID = B.bID;
Oracle特有的方法 select * from A,B on A.aID(+)= B.bID;
right join是以B表的记录为基础的,A可以看成左表,B可以看成右表,right join是以右表为准的。换句话说,右表(B)的记录将会全部表示出来,而左表(A)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID)。A表记录不足的地方均为NULL。
SQL语句:select * from A left join B on A.aID = B.bID;
Oracle特有的方法 select * from A,B on A.aID= B.bID(+);
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的。换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID)。B表记录不足的地方均为NULL。