Объединить две таблицы в SQL

Ob Edinit Dve Tablicy V Sql



В SQL объединение таблиц означает процесс объединения данных из двух отдельных таблиц в данной базе данных в единое целое на основе общего столбца или критериев. Да, если это звучит как таблица, то это именно то, что есть.

Соединение таблиц или слияние таблиц — известная функция реляционных баз данных, и она невероятно эффективна. Это позволяет нам консолидировать информацию из нескольких источников для создания более связного и значимого анализа данных. Это также позволяет реляционным базам данных быть хорошо масштабируемыми (но не гибкими), поскольку мы можем разбивать данные на более мелкие, управляемые фрагменты, к которым мы можем обратиться позже.

В этом уроке мы рассмотрим основы объединения или слияния таблиц. Давайте посмотрим на примеры реальных таблиц, чтобы закрепить наши знания.







Пример таблицы

Прежде чем мы углубимся в мир соединений таблиц, давайте настроим базовые таблицы, которые мы будем использовать в демонстрационных целях.



Рассмотрим две таблицы, содержащие информацию о сотрудниках и зарплате, как показано в следующих примерах запросов:



СОЗДАТЬ ТАБЛИЦУ сотрудников (

сотрудник_id INT AUTO_INCREMENT ПЕРВИЧНЫЙ КЛЮЧ,

первое_имя VARCHAR( пятьдесят ),

фамилия VARCHAR( пятьдесят ),

отдел ВАРЧАР( пятьдесят )

);

Затем мы можем вставить образец данных в таблицу сотрудника, как показано в следующих запросах:





ВСТАВИТЬ В сотрудников (имя, фамилия, отдел) ЗНАЧЕНИЯ

( «Алиса» , 'Смит' , 'Человеческие ресурсы' ),

( «Боб» , «Джонсон» , «Маркетинг» ),

( 'Чарли' , 'Уилсон' , «Финансы» ),

( 'Дэйвид' , 'Коричневый' , 'Продажи' ),

( 'Ева' , 'Дэвис' , 'Инжиниринг' );

Давайте продолжим и создадим новую таблицу для хранения информации о зарплате следующим образом:

СОЗДАТЬ ТАБЛИЦУ зарплат (

зарплата_id INT AUTO_INCREMENT ПЕРВИЧНЫЙ КЛЮЧ,

идентификатор сотрудника INT,

зарплата ДЕСЯТИЧНАЯ( 10 , 2 ),

начальная_дата ДАТА,

конечная_дата ДАТА,

ВНЕШНИЙ КЛЮЧ (employee_id) ССЫЛКИ на сотрудников (employee_id)

);

Добавьте данные вставки образца в таблицу следующим образом:



ВСТАВИТЬ В зарплаты (идентификатор_сотрудника, зарплата, начальная_дата, конечная_дата) ЗНАЧЕНИЯ
( 1 , 60000.00 , '2023-01-01' , '2023-12-31' ),
( 2 , 55000,00 , '2023-01-01' , '2023-12-31' ),
( 3 , 65000.00 , '2023-01-01' , '2023-12-31' ),
( 4 , 58000,00 , '2023-01-01' , '2023-12-31' ),
( 5 , 70000.00 , '2023-01-01' , '2023-12-31' );

Это должно предоставить нам две таблицы, которые помогут нам продемонстрировать концепцию объединения/слияния таблиц в SQL.

Слияние/объединение таблиц SQL

Давайте рассмотрим различные типы слияний таблиц, которые мы можем выполнить. Мы рассмотрим основные из них по мере перехода к более продвинутым.

ВНУТРЕННЕЕ СОЕДИНЕНИЕ

Первый и наиболее распространенный тип соединения таблиц в SQL — это INNER JOIN. INNER JOIN позволяет нам объединять строки из двух таблиц на основе определенного условия. Затем этот тип возвращает только те строки, в которых есть совпадения между таблицами.

В качестве примера возьмем таблицы «сотрудники» и «зарплаты», которые мы создали ранее. Чтобы выполнить INNER JOIN в SQL, мы используем предложение INNER JOIN следующим образом:

ВЫБИРАТЬ

e.employee_id,

e.first_name,

е.фамилия,

электронный отдел,

зарплата

ОТ

сотрудники е

INNER JOIN зарплаты НА

e.employee_id = s.employee_id;

В данном примере запроса мы используем INNER JOIN для объединения таблиц «сотрудники» и «зарплаты» в столбце «employee_id», который существует в обеих таблицах. Результирующий набор содержит только совпадающие строки из обеих таблиц.

Пример вывода выглядит следующим образом:

ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ

У нас также есть LEFT OUTER JOIN, который объединяет все строки из левой таблицы и соответствующие строки из правой таблицы. Если совпадений в правой таблице нет, при объединении используется значение NULL.

ВЫБИРАТЬ

e.employee_id,

e.first_name,

е.фамилия,

электронный отдел,

зарплата

ОТ

сотрудники е

LEFT JOIN зарплаты

НА

e.employee_id = s.employee_id;

В этом примере мы выполняем LEFT OUTER JOIN для объединения таблиц «сотрудники» и «зарплаты». Включаются все строки из таблицы «сотрудники» и добавляются соответствующие строки из таблицы «зарплаты». Однако значения NULL включаются в столбец «зарплата» для несовпадающих строк.

SQL-СОЮЗ

Другой метод объединения таблиц в SQL — использование оператора UNION. Этот оператор позволяет нам объединить результаты двух или более операторов выбора в один набор результатов.

Чтобы объединение было применимо, столбцы в каждом операторе SELECT должны иметь один и тот же тип данных.

Пример следующий:

ВЫБЕРИТЕ идентификатор_сотрудника, имя_фамилии, отдел, NULL AS зарплата

ОТ сотрудников е

СОЮЗ

ВЫБЕРИТЕ идентификатор_сотрудника, NULL AS имя_первого, NULL AS фамилия, NULL AS отдел, зарплата

ОТ зарплаты ;

В этом случае UNION объединяет таблицы «сотрудники» и «зарплаты». Затем мы создаем столбцы NULL в каждом операторе SELECT, чтобы гарантировать, что обе таблицы имеют одинаковое количество столбцов.

ОБЪЕДИНЕНИЯ технически распространены, но они могут быть полезны, особенно когда вам нужно объединить таблицы с разными структурами.

Заключение

В этом уроке мы изучили основы объединения/объединения двух таблиц в единый набор результатов. Следует иметь в виду, что в этом посте обсуждаются гораздо более сложные соединения.