SQL INNER JOIN
Что такое Inner Join в SQL?
INNER JOIN выбирает все строки из обеих участвующих таблиц, если между столбцами есть совпадение. SQL INNER JOIN - это то же самое, что и предложение JOIN, объединяющее строки из двух или более таблиц.
Синтаксис:
ВЫБРАТЬ * ИЗ таблицы 1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ ON table1.column_name = table2.column_name;
ИЛИ ЖЕ
ВЫБРАТЬ * ИЗ таблицы 1 ПРИСОЕДИНИТЬСЯ к table2 ON table1.column_name = table2.column_name;
Иллюстрированная презентация:
INNER JOIN в SQL объединяет две таблицы в соответствии с определенными критериями с использованием оператора сравнения.
Синтаксическая диаграмма - INNER JOIN
Пример: SQL INNER JOIN между двумя таблицами
Вот пример внутреннего соединения в SQL между двумя таблицами.
Пример таблицы: продукты
Пример таблицы: компания
Чтобы объединить наименование товара, столбцы единиц товара из таблицы продуктов и название компании, столбцы города компании из таблицы компаний, с выполнением следующего условия -
1. company_id продуктов и таблицы компании должны совпадать,
можно использовать следующий оператор SQL:
Код SQL:
SELECT foods.item_name,foods.item_unit,
company.company_name,company.company_city
FROM foods
INNER JOIN company
ON foods.company_id =company.company_id;
Выход:
ITEM_NAME ITEM_ COMPANY_NAME COMPANY_CITY ------------------------- ----- -------------------- ----- -------------- Chex Mix Pcs Akas Foods Дели Cheez-It Pcs Jack Hill Ltd Лондон BN Biscuit Pcs Jack Hill Ltd Лондон Mighty Munch PC Гурманы. Лондон Пот Райс шт Джек Хилл Лтд Лондон Jaffa Cakes Pcs Заказать все Бостон
Пример SQL INNER JOIN с использованием ключевого слова JOIN
Чтобы получить имя товара, столбцы единиц товара из таблицы продуктов питания и название компании, столбцы города компании из таблицы компаний после объединения этих упомянутых таблиц со следующим условием:
1. Идентификатор компании продуктов и идентификатор компании таблицы компании должны быть одинаковыми,
можно использовать следующий оператор SQL:
Код SQL:
SELECT foods.item_name,foods.item_unit,
company.company_name,company.company_city
FROM foods
JOIN company
ON foods.company_id =company.company_id;
Выход:
ITEM_NAME ITEM_ COMPANY_NAME COMPANY_CITY ------------------------- ----- -------------------- ----- ------------- Chex Mix Pcs Akas Foods Дели Cheez-It Pcs Jack Hill Ltd Лондон BN Biscuit Pcs Jack Hill Ltd Лондон Mighty Munch PC Гурманы. Лондон Пот Райс шт Джек Хилл Лтд Лондон Jaffa Cakes Pcs Заказать все Бостон
Иллюстрированная презентация:
SQL INNER JOIN для всех столбцов
Чтобы получить все столбцы из продуктов и таблицы компании после присоединения, при следующем условии -
1. Идентификатор компании продуктов и идентификатор компании таблицы компании должны быть одинаковыми,
можно использовать следующий оператор SQL:
Код SQL:
SELECT *
FROM foods
JOIN company
ON foods.company_id =company.company_id;
Выход:
ITEM_ID ITEM_NAME ITEM_ COMPAN COMPAN COMPANY_NAME COMPANY_CITY -------- ------------------------- ----- ------ ------ ------------------------- ------------- 1 Chex Mix Pcs 16 16 Akas Foods Дели 6 Cheez-It PC 15 15 Jack Hill Ltd Лондон 2 BN бисквитные шт 15 15 Джек Хилл Лтд Лондон 3 Mighty Munch PC 17 17 Гурманы. Лондон 4 Горшок с рисом шт 15 15 Джек Хилл Лтд Лондон 5 Jaffa Cakes Pcs 18 18 Заказать все Бостон
Разница между JOIN и INNER JOIN
JOIN возвращает все строки из таблиц, где ключевая запись одной таблицы равна ключевой записи другой таблицы.
INNER JOIN выбирает все строки из обеих участвующих таблиц, если между столбцами есть совпадение. SQL INNER JOIN - это то же самое, что и предложение JOIN, объединяющее строки из двух или более таблиц.
Внутреннее соединение A и B дает результат пересечения A B, то есть внутреннюю часть пересечения диаграммы Венна.
Внутренние объединения используют оператор сравнения для сопоставления строк из двух таблиц на основе значений в общих столбцах каждой таблицы. Например, извлечение всех строк, в которых идентификационный номер учащегося одинаков для таблиц учеников и курсов.
Использование предложения JOIN
SELECT * FROM
Table1 JOIN Table2
ON Table1.column_name=Table2.column_name;
Использование предложения INNER JOIN
SELECT *
FROM Table1 INNER JOIN Table2
ON Table1.column_name= Table2.column_name;
Разница между INNER JOIN и OUTER JOIN
INNER JOIN - это такой тип объединения, который возвращает все строки из обеих участвующих таблиц, где ключевая запись одной таблицы равна ключевой записи другой таблицы. Для этого типа объединения требуется оператор сравнения для сопоставления строк из участвующих таблиц на основе общего поля или столбца обеих таблиц.
Где, поскольку OUTER JOIN возвращает все строки из участвующих таблиц, которые удовлетворяют условию, а также те строки, которые не соответствуют условию, появятся в этой операции. Этот набор результатов может отображаться в трех типах формата -
Первый - LEFT OUTER JOIN, в это объединение входят все строки из левой таблицы предложения JOIN и несопоставленные строки из правой таблицы со значениями NULL для выбранных столбцов.
Второй - RIGHT OUTER JOIN, в это объединение входят все строки справа от причины JOIN и несопоставленные строки из левой таблицы со значениями NULL для выбранных столбцов.
Последняя в FULL OUTER JOIN в этом соединении включает в себя совпадающие строки из левой и правой таблиц предложения JOIN и несопоставленные строки из левой и правой таблиц со значениями NULL для выбранных столбцов.
Пример:
Вот две таблицы tableX и tableY, и у них нет повторяющихся строк в каждой. В таблице X значения (A, B) являются уникальными, а в таблице Y значения (E, F) являются уникальными, но значения (C и D) являются общими в обеих таблицах.
Вот ВНУТРЕННЕЕ СОЕДИНЕНИЕ
SELECT *
FROM tableX
INNER JOIN tableY on tableX.X = tableY.Y;
или же
SELECT tableX.*,tableY.*
FROM tableX,tableY
WHERE tableX.X = tableY.Y;
Выход:
Здесь только совпадение tableX и tableY появилось в наборе результатов.
Вот левое внешнее соединение
SELECT tableX.*,tableY.*
FROM tableX,tableY
WHERE tableX.X = tableY.Y(+)
или же
SELECT *
FROM tableX
LEFT OUTER JOIN tableY ON tableX.X= tableY.Y
Выход:
Здесь отображаются все строки из tableX , расположенные слева от предложения JOIN, и все строки со значениями NULL для несопоставленных столбцов из таблицы Y , являющейся правой частью предложения JOIN.
Вот ПРАВО НАРУЖНОЕ
SELECT * FROM tableX
RIGHT OUTER JOIN tableY ON tableX.X= tableY.Y
Выход:
Здесь появились все строки таблицы tableY, которая является правой стороной предложения JOIN, и все строки со значениями NULL для несопоставленных столбцов таблицы tableX, которая находится слева от предложения JOIN.
Вот полное внешнее соединение
SELECT *
FROM tableX
FULL OUTER JOIN tableY ON tableX.X= tableY.Y
Выход:
Здесь появились все совпадающие строки из tableX и tableY и все несопоставленные строки со значениями NULL для обеих таблиц.
ВНУТРЕННЕЕ ПРИСОЕДИНЕНИЕ К ПЛОЩАДКЕ
В предложении WHERE делается то, что все записи, которые соответствуют условию WHERE, включаются в набор результатов, но INNER JOIN состоит в том, что данные, не соответствующие условию JOIN, исключаются из набора результатов.
Связывание между двумя или более таблицами должно выполняться с использованием предложения INNER JOIN ON, но фильтрация отдельных элементов данных должна выполняться с помощью предложения WHERE.
INNER JOIN - это синтаксис ANSI, тогда как синтаксис WHERE более ориентирован на реляционную модель.
INNER JOIN обычно считается более читабельным и представляет собой декартово произведение таблиц, особенно когда вы объединяете много таблиц, но результат двух таблиц JOIN'ed может быть отфильтрован по соответствующим столбцам с помощью предложения WHERE.
ВНУТРЕННИЕ СОЕДИНЕНИЯ: реляционные базы данных
Ключевые моменты для запоминания
Нажмите на следующее, чтобы получить презентацию слайдов -
Выводы указанного оператора SQL, показанного здесь, взяты с использованием Oracle Database 10g Express Edition.
Упражнения по SQL
- Упражнения по SQL, практика, решение
- SQL Получить данные из таблиц [33 Упражнения]
- Булевы и реляционные операторы SQL [12 упражнений]
- Подстановочные знаки SQL и специальные операторы [22 упражнения]
- Агрегатные функции SQL [25 упражнений]
- Вывод запроса форматирования SQL [10 упражнений]
- SQL-запросы к нескольким таблицам [7 упражнений]
- ФИЛЬТРАЦИЯ И СОРТИРОВКА в базе данных персонала [38 упражнений]
- SQL СОЕДИНЯЕТ
- SQL ПОДПИСИ
- SQL Union [9 упражнений]
- SQL View [16 упражнений]
- Управление учетными записями пользователей SQL [16 упражнение]
- База данных фильмов
- ОСНОВНЫЕ запросы к базе данных фильмов [10 упражнений]
- ПОДПИСКИ на фильм База данных [16 упражнений]
- ПРИСОЕДИНЯЕТСЯ к базе данных фильма [24 упражнения]
- Футбольная база
- Вступление
- ОСНОВНЫЕ запросы по футболу базы данных [29 упражнений]
- ПОДПИСКИ по футбольной базе данных [33 упражнения]
- База данных больницы
- База данных сотрудников
- ОСНОВНЫЕ запросы к базе данных сотрудников [115 упражнений]
- БРОНИРОВАНИЕ на сотрудника База данных [77 Упражнения]
- Еще не все!
Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.
Предыдущий: SQL NON EQUI JOIN
Далее: SQL NATURAL JOIN
Новый контент: Composer: менеджер зависимостей для PHP , R программирования