Mějme 2 tabulky, ve kterých se nachází data, jež spolu souvisí určitým atributem. Respektive se v daném atributu dané záznamy rovnají. Pak je možné provádět výběr dat najednou z obou tabulek.
Data tabulek
--
-- Struktura tabulky `primarni`
--
CREATE TABLE `primarni` (
`id` int(10) UNSIGNED NOT NULL,
`znacka` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Vypisuji data pro tabulku `primarni`
--
INSERT INTO `primarni` (`id`, `znacka`) VALUES
(1, 'Škoda'),
(2, 'Fiat'),
(3, 'Seat'),
(4, 'Ford');
-- --------------------------------------------------------
--
-- Struktura tabulky `sekundarni`
--
CREATE TABLE `sekundarni` (
`id` int(10) UNSIGNED NOT NULL,
`majitel` varchar(50) NOT NULL,
`auto` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Vypisuji data pro tabulku `sekundarni`
--
INSERT INTO `sekundarni` (`id`, `majitel`, `auto`) VALUES
(2, 'Žielinský', 1),
(3, 'Šerber', 2),
(4, 'Šerber', 3),
(5, 'Lukáš', 1);
--
-- Klíče pro exportované tabulky
--
--
-- Klíče pro tabulku `primarni`
--
ALTER TABLE `primarni`
ADD PRIMARY KEY (`id`);
--
-- Klíče pro tabulku `sekundarni`
--
ALTER TABLE `sekundarni`
ADD UNIQUE KEY `unikatni_klic` (`id`),
ADD KEY `auto` (`auto`);
Nyní výběr a spojení dat
SELECT * FROM primarni, sekundarni WHERE primarni.id=sekundarni.auto
/* nevypíše všechna data z primární tabulky */

Výše jde vidět, že nám chybí např. záznam s id=4 (Ford).
Spojení dat pomocí JOIN
Spojování dat lze podobně provést i pomocí (LEFT/RIGHT) JOIN. Uvedeme si tedy to nejběžnější použití. Chceme vždycky zobrazit všechny existující záznamy v nadřízené tabulce, bez ohledu, zda existují odpovídající data v tabulce podřízené. Např. záznam Ford se nám konečně také vypíše, ale data z podřízené tabulky nejsou k dispozici (hodnoty NULL).
SELECT * FROM primarni LEFT JOIN sekundarni ON primarni.id=sekundarni.auto
/* vypíše všechna data z primární tabulky, ale ne všechna z tabulky sekundární */

Podmínka, která logicky sjednocuje data z obou tabulek může být zapsána i pomocí příkazu USING(pole). Je třeba si uvědomit, že pole se stejným názvem se musí nacházet v obou tabulkách. My však toto použít nemohli, jelikož provádíme spojení na polích id a auto.
Jiné formy spojení dat

Logika je podobná jako při manipulaci s množinami v matematice. INNER JOIN (průnik hodnot), LEFT JOIN (levá je nadřízená), RIGHT JOIN (pravá je nadřízená) a FULL OUTER JOIN (sjednocení všech hodnot).
Jak je to s klíči?
Jelikož nevytváříme integritní omezení, není třeba, aby klíčový sloupec v nadřízené tabulce musel obsahovat primární klíč. Tabulky mohou mít nastaven pouze unikátní klíč, což by měl být běžný standard.
