Вот мой тестовый скрипт, первичного ключа в качестве идентификатора нет, тестовый пример состоит в объединении нескольких строк, имеющих один и тот же ключ, и в результате, сколько строк.
create table Test1(id integer, name varchar(100));
insert into Test1(id, name) values(1, "Vijay");
insert into Test1(id, name) values(1, "Sandy");
insert into Test1(id, name) values(1, "Rohit");
create table Test2(id integer, surname varchar(100));
insert into Test2(id, surname) values(1, "karma");
insert into Test2(id, surname) values(1, "sharma");
insert into Test2(id, surname) values(1, "yadav");
select Test1.id , Test1.name , Test2.surname from Test1
left outer join
Test2 on Test1.id = Test2.id;
1 Vijay karma
1 Sandy karma
1 Rohit karma
1 Vijay sharma
1 Sandy sharma
1 Rohit sharma
1 Vijay yadav
1 Sandy yadav
1 Rohit yadav
select Test1.id , Test1.name , Test2.surname from Test1
right outer join
Test2 on Test1.id = Test2.id;
1 Vijay karma
1 Vijay sharma
1 Vijay yadav
1 Sandy karma
1 Sandy sharma
1 Sandy yadav
1 Rohit karma
1 Rohit sharma
1 Rohit yadav
Как это работает внутри? Сохраняется ли одна таблица stati c и передается ли на нее другая таблица, и как работают указатели в таких случаях и где метаданные сохраняются во время процесса соединения.