JOIN
З’єднання таблиць за допомогою оператора JOIN може бути двох типів. Перший це повне безумовне з’єднання таблиць тобто ми отримаємо як результат одну таблицю із всіма стовпцями вхідних таблиць.
Приклад:
SELECT * FROM table1 JOIN table2;
Результат буде еквівалентним такому запиту:
SELECT * FROM table1, table2;
Зазвичай оператор JOIN можливо замінити простими умовами, а введений в мову запитів він лише тому, що при великій кількості данних об’єднання по умові буде виконуватись значно повільніше, ніж об’єднання оператором JOIN.
Якщо ж користуватися оператором об’єднання JOIN інтересними є такі комбінації з’єднань, їх можна зообразити схематично. Будемо використовувати два таблиці, опишемо їх структуру:
TableA.id = int, TableB.id = int,
TableA.name = VarChar; TableB.name = VarChar;
id name id name
-- ---- -- ----
1 Pirate 1 Rutabaga
2 Monkey 2 Pirate
3 Ninja 3 Darth Vader
4 Spaghetti 4 Ninja
Спеціально використаємо однакові данні в таблицях, тоді можливі об’єднання таблиць схематично можна зобразити так:
SELECT * FROM TableA
INNER JOIN TableB
ON TableA.name = TableB.name
id name id name
-- ---- -- ----
1 Pirate 2 Pirate
3 Ninja 4 Ninja
SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
id name id name
-- ---- -- ----
1 Pirate 2 Pirate
2 Monkey null null
3 Ninja 4 Ninja
4 Spaghetti null null
null null 1 Rutabaga
null null 3 Darth Vader

SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
id name id name
-- ---- -- ----
1 Pirate 2 Pirate
2 Monkey null null
3 Ninja 4 Ninja
4 Spaghetti null null

SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableB.id IS null
id name id name
-- ---- -- ----
2 Monkey null null
4 Spaghetti null null
SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableA.id IS null
OR TableB.id IS null
id name id name
-- ---- -- ----
2 Monkey null null
4 Spaghetti null null
null null 1 Rutabaga
null null 3 Darth Vader
Таким чином за допомогою оператора JOIN з умовами ми можемо змоделювати роботу з данними таблиці, як з математичними множинами.