I have gone through many online tutorials, even Jeff's article on SQL joins and I think I still don't understand properly how SQL joins work internally. For example, let us consider the following scenario.
I have 2 tables TableA
and TableB
and some dummy data.
CREATE TABLE TableA(
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(500),
PRIMARY KEY(id)
)ENGINE=InnoDB;
CREATE TABLE TableB(
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(500),
PRIMARY KEY(id)
)ENGINE=InnoDB;
INSERT INTO TableA(name) VALUES('A');
INSERT INTO TableA(name) VALUES('B');
INSERT INTO TableA(name) VALUES('C');
INSERT INTO TableA(name) VALUES('D');
INSERT INTO TableB(name) VALUES('x');
INSERT INTO TableB(name) VALUES('A');
INSERT INTO TableB(name) VALUES('Y');
INSERT INTO TableB(name) VALUES('C');
TableA:
Table B:
Now I am running the following query:
SELECT TableA.id, TableA.name, TableB.id, TableB.name
FROM TableA
LEFT JOIN TableB
ON TableA.name=TableB.name;
which gives me the output:
Question:
How exactly the data is being compared internally, retrieved and the resulting table populated?