Здесь вы получите подробную информацию о соединениях в SQL.
Присоединение - это очень базовая концепция в SQL, которая иногда может сбивать с толку. Объединения используются, когда нам нужно найти решение для запроса, включающего атрибуты нескольких таблиц, которые имеют хотя бы один общий атрибут. Следовательно, необходимость объединения довольно ясна сама по себе. Существуют разные типы соединений, которые используются для разных целей.
Присоединяется в SQL
Допустим, у нас есть две таблицы: таблица с именем STUDENT и другая таблица с именем TEACHER.
В первой таблице «СТУДЕНТ» хранятся справочные данные ученика, а во второй таблице «УЧИТЕЛЬ» хранятся данные учителей, которые находятся в школе, и классе, который они преподают.
УЧЕНИК
ID класса | название | Домашний адрес |
101 | Радж | хуг |
201 | Варуна | BYC |
301 | Chittiz | азбука |
401 | Хема | Защита |
УЧИТЕЛЬ
Идентификатор учителя | Имя класса | ID класса |
1 | Первый | 101 |
2 | второй | 201 |
3 | В третьих | 301 |
4 | четвертый | 401 |
Во второй таблице «ClassID» является внешним ключом, который используется как ссылка на первую таблицу во второй.
Теперь, если мы хотим узнать имя ученика, чей идентификатор учителя равен 1; нам нужно найти объединение вышеупомянутых таблиц, так как это требует, чтобы мы собрали информацию обеих таблиц. Следовательно, объединения используются только тогда, когда обе таблицы имеют хотя бы один общий атрибут (в данном случае ClassID), и нам нужно найти решение для запроса, который включает атрибуты из обеих таблиц.
Типы Присоединения
В основном существует четыре типа объединений, а именно: внутреннее соединение, левое соединение, правое соединение, полное внешнее соединение. Объяснение каждого из упомянутых соединений приведено ниже.
1. Внутреннее соединение
Давайте рассмотрим следующие две таблицы: имя первой таблицы - Страна (сохраняет идентификатор разных стран), а имя другой таблицы - Государство (сохраняет различные состояния в этих странах).
СТРАНА
CountryId | Название страны |
1 | Китай |
2 | Индия |
3 | Соединенные Штаты Америки |
ГОСУДАРСТВО
StateId | CountryId | StateName |
01 | 2 | ГОА |
02 | 2 | RAJASTHAN |
03 | 5 | KATHMANDU |
04 | 6 | ISLAMABAD |
выбрать * из страны
внутреннее соединение ГОСУДАРСТВО
on COUNTRY.CountryId = STATE.CountryId
Вышеупомянутая команда применяет внутреннее объединение к двум таблицам, поскольку общим атрибутом является Идентификатор страны, мы применили объединение к той же самой.
Внутреннее соединение возвращает все совпадающие значения из обеих таблиц. Здесь, в таблице State, поскольку единственное совпадающее значение CountryId в таблице стран - {CountryId = 2}, в результате внутреннего соединения мы получим следующий результат:
CountryId | Название страны | StateId | StateName |
2 | Индия | 01 | ГОА |
2 | Индия | 02 | RAJASTHAN |
2. Правильное соединение
Правое (или правое внешнее соединение), с другой стороны, отображает данные, которые являются общими в обеих таблицах, а также данные, которые присутствуют в правой таблице (исключительно).
Это в основном означает, что данные всей правой таблицы будут отображаться при применении правильного соединения.
Когда в левой таблице нет совпадений, отображается NULL.
Пример:
СТРАНА
CountryId | Название страны |
1 | Китай |
2 | Индия |
3 | Соединенные Штаты Америки |
ГОСУДАРСТВО
StateId | CountryId | StateName |
01 | 2 | ГОА |
02 | 2 | RAJASTHAN |
03 | 5 | KATHMANDU |
04 | 6 | ISLAMABAD |
выбрать * из страны
право присоединиться к государству
on COUNTRY.CountryId = STATE.CountryId
Вышеупомянутая команда применяет правое объединение к двум таблицам, поскольку общим атрибутом является CountryId; мы применили объединение к самому CountryId.
Правая таблица - вторая таблица, на которую мы ссылаемся.
Мы получили бы следующую таблицу в результате применения правого соединения:
CountryId | Название страны | StateId | StateName |
2 | Индия | 01 | ГОА |
2 | Индия | 02 | RAJASTHAN |
5 | НОЛЬ | 03 | KATHMANDU |
6 | НОЛЬ | 04 | ISLAMABAD |
В результате ясно показано, что значения в левой таблице, которые не имеют абсолютно никаких совпадающих значений в правой таблице, не отображаются. Отображаются только те значения левой таблицы, которые имеют общие атрибуты с правой. Принимая во внимание, что все значения в правой таблице отображаются. Строки в правой таблице без совпадений в левой таблице отображаются как NULL (пусто).
3. Левое соединение
С другой стороны, левое соединение (или левое внешнее соединение) отображает данные, которые являются общими для обеих таблиц, а также данные, которые присутствуют в левой таблице (исключительно).
Это в основном означает, что все данные левой таблицы будут отображаться при применении левого соединения.
Когда в левой таблице нет совпадений, отображается NULL.
СТРАНА
CountryId | Название страны |
1 | Китай |
2 | Индия |
3 | Соединенные Штаты Америки |
ГОСУДАРСТВО
StateId | CountryId | StateName |
01 | 2 | ГОА |
02 | 2 | RAJASTHAN |
03 | 5 | KATHMANDU |
04 | 6 | ISLAMABAD |
выбрать * из страны
осталось присоединиться к ГОСУДАРСТВУ
on COUNTRY.CountryId = STATE.CountryId
Вышеупомянутая команда применяет левое соединение к двум таблицам, поскольку общим атрибутом является CountryId; мы применили объединение к самой Countryid.
Левая таблица - это первая таблица, на которую мы ссылаемся.
Мы получили бы следующую таблицу в результате применения левого соединения:
CountryId | Название страны | Stateid | StateName |
1 | Китай | НОЛЬ | НОЛЬ |
2 | Индия | 01 | ГОА |
2 | Индия | 02 | RAJASTHAN |
3 | Соединенные Штаты Америки | НОЛЬ | НОЛЬ |
В результате ясно показано, что значения в правом столбце, которые не имеют абсолютно никаких совпадающих значений в левом, не отображаются. Отображаются только те атрибуты правого столбца, которые имеют общие атрибуты с левым. Принимая во внимание, что все значения в левой таблице отображаются. Строки в левой таблице без совпадений в правой таблице отображаются как NULL (пусто)
4. Полное внешнее соединение
Полное внешнее объединение, как следует из названия, показывает все содержимое обеих таблиц. Полное внешнее соединение возвращает все совпадающие записи из обеих таблиц, независимо от того, совпадает другая таблица или нет.
СТРАНА
CountryId | Название страны |
1 | Китай |
2 | Индия |
3 | Соединенные Штаты Америки |
ГОСУДАРСТВО
StateId | CountryId | StateName |
01 | 2 | ГОА |
02 | 2 | RAJASTHAN |
03 | 5 | KATHMANDU |
04 | 6 | КАНАДА |
выбрать * из страны
полное внешнее соединение
on COUNTRY.CountryId = TEACHER.CountryId
Вышеупомянутая команда применяет полное внешнее соединение к двум таблицам, поскольку общим атрибутом является CountryId; мы применили объединение к самой Countryid.
В результате мы получим следующую таблицу при применении Full Outer Join:
CountryId | Название страны | Stateid | StateName |
1 | Китай | НОЛЬ | НОЛЬ |
2 | Индия | 01 | ГОА |
2 | Индия | 02 | RAJASTHAN |
3 | Соединенные Штаты Америки | НОЛЬ | НОЛЬ |
НОЛЬ | НОЛЬ | 03 | KATHMANDU |
НОЛЬ | НОЛЬ | 04 | ISLAMABAD |
Это соединение приводит ко всем строкам. Мы получаем NULL (Пусто), когда нет совпадений.
Объединения очень важны для работы с таблицами в SQL, и в приведенном выше описании действительно подробно описывается использование каждой из них.
Прокомментируйте ниже, если у вас есть какие-либо вопросы, связанные с объединениями SQL.
Комментариев нет:
Отправить комментарий