SQL之链接查询

NATURAL JOIN这个应该是oracle的用法,sql server里面不支持这种写法

INNER JOIN 等价于 JOIN
可以理解为 JOIN  是 INNER JOIN 的缩写。
LEFT JOIN 等价于 LEFT OUTER JOIN
RIGHT JOIN 等价于 RIGHT OUTER JOIN

普通的多表查询:
select * from A a,B b where a.id=3 and b.id!=45;

内连接 inner join

1、等值连接
概念:在连接条件中使用等于号(=)运算符,其查询结果中列出被连接表中的所有列,包括其中的重复列。
select * from A a join B b on a.id=b.id;
2、不等连接
在连接条件中使用除等于号之外运算符(>、<、<>、>=、<=、!>和!<)

左外连接

返回左表中的所有行,如果左表中行在右表中没有匹配行,则结果中右表中的列返回空值。
select * from A a left join B b on a.id=b.id;

右外连接

恰与左连接相反,返回右表中的所有行,如果右表中行在左表中没有匹配行,则结果中左表中的列返回空值。
select * from A a right join B b on a.id=b.id;

全连接:full join

返回左表和右表中的所有行。当某行在另一表中没有匹配行,则另一表中的列返回空值


SQL之链接查询_第1张图片
可能结果
交叉连接(CROSS JOIN):也称迪卡尔积

不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积(例如:T_student和T_class,返回4*4=16条记录),如果带where,返回或显示的是匹配的行数。

select *from T_student cross join T_class  
  ‘等于  
select *from T_student, T_class
SQL之链接查询_第2张图片
image

有where子句,往往会先生成两个表行数乘积的数据表,然后才根据where条件从中选择。

更多参考:http://blog.csdn.net/jiuqiyuliang/article/details/10474221

你可能感兴趣的:(SQL之链接查询)