Создадим две таблицы в MySQL
CREATE TABLE IF NOT EXISTS `productA` (
`id` int unsigned NOT NULL,
`name` text NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `productA` (`id`, `name`) VALUES
('1', 'Груша'),
('2', 'Яблоко'),
('3', 'Апельсин'),
('4', 'Арбуз'),
('5', 'Дыня');
CREATE TABLE IF NOT EXISTS `productB` (
`id` int unsigned NOT NULL,
`name` text NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `productB` (`id`, `name`) VALUES
('1', 'Груша'),
('2', 'Яблоко'),
('3', 'Апельсин'),
('4', 'Арбуз'),
('5', 'Картофель'),
('6', 'Петрушка'),
('7', 'Мандарин');
Пересечение и соединение данных из двух таблиц в MySQL — INNER JOIN:
SELECT * FROM producta INNER JOIN productb ON producta.name = productb.name;
Результат

Операция простого пересечения выборок из двух таблиц (как и в операциях над множествами):
SELECT name FROM producta INTERSECT SELECT name FROM productb;
Результат


Левостороннее и правостороннее объединение (в теории множеств это разность) данных в MySQL слева LEFT (справа оператор — RIGHT):
SELECT * FROM producta LEFT OUTER JOIN productb ON producta.name = productb.name WHERE productb.id IS null;
Результат


FULL OUTER JOIN in MySQL (объединение и соединение данных в MySQL)
SELECT * FROM producta LEFT JOIN productb ON producta.name = productb.name UNION SELECT * FROM producta RIGHT JOIN productb ON producta.name = productb.name;
Результат

Операция простого объединения выборок из двух таблиц (как и в операциях над множествами):
SELECT name FROM producta UNION SELECT name FROM productb;
Результат


Декартово произведение в MySQL CROSS JOIN
SELECT * FROM producta CROSS JOIN productb;
Результат

