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

Завершено

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

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

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

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

Существует несколько "видов" соединений (INNER, LEFT, RIGHT, FULL OUTER, NATURAL), каждый из которых предназначен для объединения таблиц немного разными способами. Они обеспечивают контроль над тем, какие строки включены в результирующий набор на основе наличия или отсутствия совпадающих значений в присоединенных таблицах.

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

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

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

SELECT orders.order_id, customers.customer_name, employees.first_name, employees.last_name
FROM sales.orders AS orders
INNER JOIN sales.customers AS customers ON orders.customer_id = customers.customer_id
INNER JOIN sales.employees AS employees ON orders.employee_id = employees.employee_id;

Предоставленный запрос использует несколько INNER JOIN операций для получения единого результированного набора, содержащего сведения о orders, customersи employees.

Он сопоставляет customer_id в таблице orders с соответствующим customer_id в таблице customers и employee_id в таблице orders с employee_id в таблице employees. В результате запрос выводит идентификатор каждого заказа вместе с именами задействованных клиентов и сотрудников.