联接对我来说总是令人困惑。任何人都可以告诉我不同联接之间有什么区别,哪一个最快,什么时候使用哪个联接和join和where子句有什么区别? Plz给出了详细的答案,因为我已经阅读了一些网站上的连接但没有正确理解这个概念。
答案 0 :(得分:3)
我不打算引用整篇维基百科文章,而是在SQL Joins上建议你的文章。
SQL JOIN子句组合记录 从一个表中的两个或多个表 数据库。它创建了一个集合 可以保存为表格或按原样使用。 JOIN是一种组合方式 使用值从两个表中的字段 每个人都很常见。 ANSI标准SQL 指定四种类型的JOIN:INNER, 外,左,右。特别 案例,表格(基表,视图或 加入表)可以加入到自己中 自连接。
程序员编写JOIN谓词 识别加入的记录。 如果评估的谓词为真, 然后产生组合记录 以预期的格式,记录集 或者例如临时表。
有一种较旧的语法使用WHERE子句来暗示INNER JOIN。虽然它可以工作,并且会生成与INNER JOIN语法指定的查询完全相同的查询,但它已被弃用,因为大多数人都觉得它更容易混淆。
以下是MySQL JOIN syntax的文档。
答案 1 :(得分:2)
此查询:
SELECT c.customer_name, o.order_id, o.total
FROM customers c, orders o
WHERE c.id = o.customer_id
和这个
SELECT c.customer_name, o.order_id, o.total
FROM customers c
INNER JOIN orders o ON c.id = o.customer_id
对mysql服务器上执行的内容没有任何区别,但是联接(imho)更具可读性。特别是对于更复杂的连接:
以下是关于该主题的文章:http://www.mysqlperformanceblog.com/2010/04/14/is-there-a-performance-difference-between-join-and-where/