通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,是它区别于其它类型 数据库管理系统的一个标志。连接可以在SELECT 语句的FROM子句或WHERE子句中建立,在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。一般来说,连接查询比嵌套查询的效率高一点。所以,在Transact-SQL中推荐使用这种方法。
如果 A 和 B 是两个集合,它们的交叉连接就记为: A × B.
例如: SELECT * FROM press CROSS JOIN authors
等价于:SELECT * FROM press,authors
查询结果:
外连接并不要求连接的两表的每一条记录在对方表中都一条匹配的记录. 连接表保留所有记录 -- 甚至这条记录没有匹配的记录也要保留. 外连接可依据连接表保留左表, 右表或全部表的行而进一步分为左外连接, 右外连接和全连接.在标准的 SQL 语言中, 外连接没有隐式的连接符号.
左外连接会返回左表的所有记录和右表中匹配记录的组合(如果右表中无匹配记录, 来自于右表的所有列的值设为 NULL). 如果左表的一行在右表中存在多个匹配行, 那么左表的行会复制和右表匹配行一样的数量, 并进行组合生成连接结果.
例如:SELECT * FROM press LEFT OUTER JOIN authors ON press.id = authors.press_id
查询结果:
右外连接, 亦简称右连接, 它与左外连接完全类似, 只不过是作连接的表的顺序相反而已.右连接操作返回右表的所有行和这些行在左表中匹配的行(没有匹配的, 来源于左表的列值设为 NULL).
例如:SELECT * FROM press RIGHT OUTER JOIN authors ON press.id= authors.press_id
等价于:SELECT * FROM authors LEFT OUTER JOIN press ON press.id= authors.press_id
查询结果:
实际上显式的右连接很少使用, 因为它总是可以被替换成左连接--换换表的位置就可以了,所以上面两条语句是等价的。
全连接是左右外连接的并集. 连接表包含被连接的表的所有记录, 如果缺少匹配的记录, 即以 NULL 填充.。一些数据库系统(如 MySQL)并不直接支持全连接, 但它们可以通过左右外连接的并集(参: union)来模拟实现
例如:SELECT * FROM press FULL OUTER JOIN authors ON press.id= authors.press_id
查询结果:
自身连接是指同一个表自己与自己进行连接。既可以用内连接,也可以用外连接。
例如:SELECT * FROM authors a1 LEFT JOIN authors a2 ON a2.press_id = a1.id
查询结果:
参考链接:http://www.cnblogs.com/worksguo/articles/1030214.html
http://zh.wikipedia.org/wiki/连接_(SQL)