Kurs MySQL – relacje między tabelami cz. 2

Poprzednio stworzyliśmy relacje pomiędzy tabelami w MySQL i dowiedzieliśmy się, czym są klucze obce w MySQL. Czas zobaczyć jak to działa w praktyce. Dziś dowiemy się jak łączyć ze sobą tabelę by wyciągnąć interesujące nas dane. Poznamy również rodzaje zbiorów i zestawimy je z odpowiednimi zapytaniami.

Relacje w MySQL – poznajemy zbiory i relacje w MySQL za pomocą zapytań SQL

Zacznijmy może od rodzajów zbiorów.

Prezentacja graficzna

Zapytanie SQL

Przykład zastosowania

Relacje w MySQL - LEFT JOIN
SELECT <kolumny> FROM TabelaA A 
    LEFT JOIN TabelaB B ON A.Key = B.Key

Lista regionów + lista krajów. Nie każdy region będzie przypisany do kraju.

Relacje w MySQL - LEFT JOIN WHERE
SELECT <kolumny> FROM TabelaA A
    LEFT JOIN TabelaB B ON A.Key = B.Key
WHERE B.Key IS NULL

Lista produktów + kategorie. Produkty z listy nie będą przypisane do żadnej kategorii

 Relacje w MySQL - RIGHT JOIN
SELECT <kolumny> FROM TabelaA A
    RIGHT JOIN TabelaB B ON A.Key = B.Key

Lista stawek VAT + lista produktów. Produkty z listy mogą, lecz nie muszą mieć przypisanej stawki VAT

Relacje w MySQL - RIGHT JOIN WHERE
SELECT <kolumny> FROM TabelaA A
    RIGHT JOIN TabelaB B ON A.Key = B.Key
WHERE A.Key IS NULL

Lista regionów + lista krajów. Zwrócona zostanie lista krajów bez przypisanego regionu.

Relacje w MySQL - FULL OUTER JOIN
SELECT <kolumny> FROM TabelaA A
    FULL OUTER JOIN TabelaB B ON A.Key = B.Key

Połączenie dwóch magazynów. Zwrócona lista będzie zawierała wszystkie dostępne produkty na stanie

Relacje w MySQL - INNER JOIN
SELECT <kolumny> FROM TabelaA A
    INNER JOIN TabelaB B ON A.Key = B.Key

 

Lista klientów + adresy. Każdy z klientów będzie miał przypisany do siebie adres.

Relacje w MySQL - FULL OUTER JOIN WHERE
SELECT <kolumny> FROM TabelaA A
    FULL OUTER JOIN TabelaB B ON A.Key = B.Key
WHERE A.Key IS NULL OR B.Key IS NULL

Połączenie dwóch magazynów. Zwrócona lista będzie zawierać unikalne pozycje na obu magazynach

Ciekawostką jest to, że zapytanie:

SELECT <kolumny> FROM TabelaA A INNER JOIN TabelaB B ON A.Key = B.Key

można również zapisać w ten sposób:

SELECT <kolumny> FROM TabelaA A JOIN TabelaB B ON A.Key = B.Key

oznacza to, że INNER JOIN i samo JOIN przez MySQL interpretowane są tak samo.

Relacje w MySQL w praktyce

Spróbujmy więc wyciągnąć imię i płeć na podstawie tabel, które stworzyliśmy poprzednio podczas lekcji dotyczącej tworzenia relacji w MySQL.

SELECT i.imie, p.plec FROM imię i JOIN plec p ON i.idplec = p.idplec

Dzięki za udział w kolejnej lekcji, jeśli masz chwilę podziel się swoimi wrażeniami i >> zostaw komentarz << w wątku do tego posta.