Рассмотрим таблицу А и Б
1 2 3 4 5 6 |
id name id name -- ---- -- ---- 1 Pirate 1 Rutabaga 2 Monkey 2 Pirate 3 Ninja 3 Darth Vader 4 Spaghetti 4 Ninja |
1) Inner join выбирает записи которые одновременно присутствуют в обоих таблицах
1 |
SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name |
1 2 3 4 |
id name id name -- ---- -- ---- 1 Pirate 2 Pirate 3 Ninja 4 Ninja |
2) Full outer join выбирает все данные из обоих таблиц возвращая Null для несвязанных полей
1 |
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name |
1 2 3 4 5 6 7 8 |
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 |
3) Left outer join выбирает все записи из таблицы А сравнивая их с полями из таблицы Б. Если записи для таблицы А не найдены в таблице Б, то возвращается NULL
1 |
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name |
1 2 3 4 5 6 |
id name id name -- ---- -- ---- 1 Pirate 2 Pirate 2 Monkey null null 3 Ninja 4 Ninja 4 Spaghetti null null |
4) LEFT OUTER JOIN с исключением записей. Выборка данных только из таблицы А
1 |
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name WHERE TableB.id IS null |
1 2 3 4 |
id name id name -- ---- -- ---- 2 Monkey null null 4 Spaghetti null null |
5) FULL OUTER JOIN с выбором уникальных записей. Выбираем данные из таблиц А и Б, записи которых не совпали и вернули NULL
1 |
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name WHERE TableA.id IS null OR TableB.id IS null |
1 2 3 4 5 6 |
id name id name -- ---- -- ---- 2 Monkey null null 4 Spaghetti null null null null 1 Rutabaga null null 3 Darth Vader |
6) CROSS JOIN выборка перекрестного соединения с выбором всех вариантов. Диаграммы для него нет.
1 |
SELECT * FROM TableA CROSS JOIN TableB |
Выбирает записи по принципу “все ко всему”.