Soedinenie_tablits

Содержание

Слайд 2

ТАБЛИЦЫ "ТОВАРЫ" И "ОПИСАНИЯ"

Таблица с наименованием товаров хранит номер товара (id) и

ТАБЛИЦЫ "ТОВАРЫ" И "ОПИСАНИЯ" Таблица с наименованием товаров хранит номер товара (id)
краткое название (name) и таблица с описанием товаров

Таблица nomenclature содержит перечень всех товаров, которые есть в базе. Таблица описаний description, напротив, содержит лишь неполный перечень описаний для товаров, которые необязательно присутсвуют в базе. Чтобы однозначно привязать описание к товару, в таблицах присутвует столбец id, который содержит уникальный номер товара.

Слайд 3

INNER JOIN (2 СПОСОБА)

Код - способы объявления внутреннего объединения таблиц
SELECT *

INNER JOIN (2 СПОСОБА) Код - способы объявления внутреннего объединения таблиц SELECT
FROM Таблица1, Таблица2[, Таблица3, ...] [WHERE Условие1 [Условие2 ...]
SELECT * FROM Таблица1 [INNER | CROSS] JOIN Таблица2 [(ON Условие1 [Условие2 ...]) | (USING(Поле))]

Слайд 4

LEFT JOIN

Левосторонние объединения позволяют извлекать данные из таблицы, дополняя их по возможности

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

Слайд 5

LEFT JOIN

К примеру, чтобы получить полный список наименований товаров вместе с их

LEFT JOIN К примеру, чтобы получить полный список наименований товаров вместе с
описанием, нужно выполнить следующий запрос:
SELECT * FROM nomenclature LEFT JOIN description ON nomenclature.id= description.id;

Слайд 6

LEFT JOIN

Если дополнить предыдущий запрос условием на проверку несуществования описания, то можно

LEFT JOIN Если дополнить предыдущий запрос условием на проверку несуществования описания, то
получить список записей, которые не имеют пары в таблице описаний:
SELECT id, name FROM nomenclature LEFT JOIN description ON nomenclature.id= description.id WHERE description IS NULL;
По сути это и есть основное назначение внешних запросов - показывать расхождение данных двух таблиц.
Кроме того, при таком объединении обязательным является условие, которое задаётся через ON или USING. Без него запрос будет выдавать ошибку.

Слайд 7

RIGHT JOIN

Этот вид объединений практически ничем не отличается от левостороннего объединения,

RIGHT JOIN Этот вид объединений практически ничем не отличается от левостороннего объединения,
за тем исключением, что данные берутся из второй таблицы, которая находится справа от констркуции JOIN, и сравниваются с данными, которые находятся в таблице, указанной перед конструкцией.
SELECT * FROM nomenclature RIGHT JOIN description ON nomenclature.id= description.id ;

Как видно, теперь уже поле name содержит нулевые значения. Также поменялся и порядок расположения столбцов.
Однако, во всех случаях использования правосторонних объединений, запрос можно переписать, используя левостороннее объединение, просто поменяв таблицы местами, и наоборот. Следующие два запроса равнозначны:

SELECT * FROM nomenclature LEFT JOIN description ON nomenclature.id= description.id;
SELECT * FROM description RIGHT JOIN nomenclature ON nomenclature.id= description.id;

Слайд 8

ОПЕРАТОРЫ СОЕДИНЕНИЯ

UNION возвращает все строки из обоих операторов SELECT; повторяющиеся значения удаляются.
UNION

ОПЕРАТОРЫ СОЕДИНЕНИЯ UNION возвращает все строки из обоих операторов SELECT; повторяющиеся значения
ALL возвращает все строки из обоих операторов SELECT; повторяющиеся значения показываются.