I must agree that while the diagrams are a fairly good illustrations of what happens with a join, they’re not Venn diagrams in the strict sense because that’s just not what’s happening. What the first diagram says to me is that you get all records that are both in set A and set B (aka intersection). That’s just not true. You get a set of new records, that are neither in set A nor in set B, but they contain a combination of the attributes of both sets.
Aaron G: joins are conceptually a special case of the cartesian product. How the database server actually computes them is another matter entirely.
Conceptually, in relational algebra, an inner join is a cross product followed by a selection on the join condition. That’s a terribly inefficient way to compute it, but conceptually, that’s what it is.