Оператор JOIN SQL
- Предыдущая страница SQL Aliases
- Следующая страница SQL Inner Join
SQL join используется для запроса данных из таблиц, связанных между собой по столбцам.
Join и Key
Иногда для получения полных результатов нам нужно получить данные из двух или более таблиц. В этом случае нам нужно выполнить join.
Таблицы в базе данных можно связать между собой с помощью ключей. Основной ключ (Primary Key) - это столбец, в котором каждый значений уникальны. В таблице каждый значений основного ключа уникальны. Цель такой做法 - связать данные между таблицами, не повторяя все данные в каждой таблице.
Далее рассмотрим таблицу "Persons":
Id_P | LastName | FirstName | Адрес | Город |
---|---|---|---|---|
1 | Adams | John | Улица Оксфорд | Лондон |
2 | Буш | Джордж | Пятая авеню | Нью-Йорк |
3 | Carter | Thomas | Улица Чан'an | Пекин |
Пожалуйста, обратите внимание, что столбец "Id_P" является主 ключом таблицы "Persons". Это означает, что ни одна строка не может иметь одинаковый Id_P. Даже если имена двух людей полностью идентичны, Id_P может отличить их.
Далее рассмотрим таблицу "Orders":
Id_O | OrderNo | Id_P |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 65 |
Пожалуйста, обратите внимание, что столбец "Id_O" является主 ключом таблицы "Orders", а столбец "Id_P" в таблице "Orders" используется для ссылки на таблицу "Persons", не требуя использования их точных имен.
Обратите внимание, что "Id_P" столбец связывает два вышеуказанных таблицы.
Ссылка на две таблицы
Мы можем получить данные из двух таблиц, ссылаясь на две таблицы:
Кто заказал продукт и что он заказал?
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P
Результаты набора:
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
SQL JOIN - использование JOIN
Кроме вышеуказанного метода, мы также можем использовать ключевое слово JOIN для получения данных из двух таблиц.
Если мы хотим перечислить все заказы людей, можно использовать следующую SELECT-фразу:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName
Результаты набора:
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
Разные SQL JOIN
Кроме INNER JOIN (внутреннее соединение), которое мы использовали в примерах выше, мы можем использовать и другие типы соединений.
Ниже перечислены доступные вам типы JOIN и их различия.
- JOIN: Возвращает строки, если есть至少 одно соответствие в таблице
- LEFT JOIN: Возвращает все строки из левой таблицы, даже если нет соответствия в правой таблице
- RIGHT JOIN: Возвращает все строки из правой таблицы, даже если нет соответствия в левой таблице
- FULL JOIN: Возвращает строки, если есть соответствие в至少 одной таблице
- Предыдущая страница SQL Aliases
- Следующая страница SQL Inner Join