Cum să interogați și să îmbinați înregistrările folosind MariaDB JOIN
Într-un sistem de gestionare a bazelor de date relaționale, puteți compara între ele înregistrările de date din diferite tabele. Acest lucru face posibilă crearea de conexiuni și extragerea valorilor corespunzătoare din două tabele diferite. Această sarcină este realizată cu JOIN în MariaDB. Instrucțiunea este utilizată în combinație cu SELECT și poate fi împărțită în diferite categorii. Vom prezenta INNER JOIN, LEFT OUTER JOIN și RIGHT OUTER JOIN mai detaliat mai jos.
Care este sintaxa pentru JOIN?
Pentru a vă ajuta să înțelegeți cele JOIN instrucțiuni din MariaDB, vom începe prin a prezenta sintaxa de bază a instrucțiunii. Iată sintaxa pentru INNER JOIN:
SELECT column
FROM table_1
INNER JOIN table_2
ON table_1.column = table_2.column;sqlFolosind SELECT, specificați coloana (sau coloanele) pe care doriți să le includeți. Înlocuiți substituentul „table_1” cu primul tabel și „table_2” cu al doilea tabel pe care doriți să îl uniți cu primul. Operațiunea INNER JOIN compară fiecare rând din primul tabel cu fiecare rând din al doilea tabel. Numai înregistrările care se potrivesc (cele prezente în ambele tabele) vor fi afișate în tabelul cu rezultate. Înregistrările care nu se potrivesc sunt excluse din rezultat.
Cum se utilizează INNER JOIN în MariaDB
Pentru a demonstra cum funcționează INNER JOIN în MariaDB, să luăm un exemplu simplu. Vom folosi o bază de date care are două tabele. Primul tabel se numește „Lista clienților”, iar al doilea „Comenzi”. Putem crea tabelul „Lista clienților” folosind MariaDB CREATE TABLE. Acest tabel include coloanele „ID client”, „Nume”, „Prenume”, „Oraș” și „Data creării”. Iată cum arată codul:
CREATE TABLE CustomerList (
CustomerID INT PRIMARY KEY,
LastName VARCHAR(50),
FirstName VARCHAR(50),
City VARCHAR(50),
CreationDate DATE
);sqlAcum, să completăm acest tabel cu câteva valori. Pentru a face acest lucru, folosim INSERT INTO:
INSERT INTO CustomerList VALUES
(1, 'Smith', 'Martina', 'London', '2022-07-19'),
(2, 'Rodman', 'Daniel', 'Aberdeen', '2023-03-03'),
(3, 'Meyer', 'Peter', 'Cardiff', '2023-07-09'),
(4, 'Garcia', 'Laura', 'Preston', '2023-12-10'),
(5, 'Davis', 'Lisa', 'Bournemouth', '2024-01-17');sqlApoi creăm tabelul „Comenzi”. Acesta conține coloanele „ID comandă”, „ID produs”, „Numele clientului” și „Data comenzii”. Codul arată astfel:
CREATE TABLE Orders (
OrderID INT AUTO_INCREMENT PRIMARY KEY,
ProductID INT,
CustomerName VARCHAR(50),
OrderDate DATE
);sqlDe asemenea, vom completa acest tabel cu valori de exemplu:
INSERT INTO Orders VALUES
(101, 247, 'Jackson', '2024-02-20'),
(102, 332, 'Meyer', '2024-03-03'),
(103, 247, 'Anderson', '2024-03-09'),
(104, 191, 'Rodman', '2024-03-17'),
(105, 499, 'Martinez', '2024-03-17');sqlAcum, vom folosi INNER JOIN pentru MariaDB pentru a filtra clienții care apar în lista de clienți și care au plasat o comandă listată în tabelul Comenzi. Codul corespunzător arată astfel:
SELECT CustomerList.CustomerID, CustomerList.LastName, Orders.OrderID, Orders.ProductID
FROM CustomerList
INNER JOIN Orders
ON CustomerList.LastName = Orders.CustomerName;sqlÎn acest exemplu, ne concentrăm pe numele de familie din lista de clienți și pe numele clientului din comenzi. Când aceste valori se potrivesc, ele sunt incluse în rezultate. Deoarece clienții Meyer și Rodman apar în ambele tabele, rezultatul ar arăta astfel:
| ID client | Numele clientului | ID comandă | ID produs |
|---|---|---|---|
| 3 | Meyer | 102 | 332 |
| 2 | Rodman | 104 | 191 |
LEFT OUTER JOIN
LEFT OUTER JOIN în MariaDB funcționează după un principiu similar și utilizează, de asemenea, o sintaxă aproape identică. Spre deosebire de INNER JOIN, însă, toate înregistrările de date din prima tabelă sau din tabelul din stânga (în exemplul nostru „CustomerList”) sunt afișate și numai înregistrările de date corespunzătoare din a doua tabelă sau din tabelul din dreapta („orders”). Dacă nu există un echivalent în a doua tabelă, valoarea este specificată ca NULL. Folosind exemplul de mai sus, codul arată astfel:
SELECT CustomerList.LastName, Orders.ProductID
FROM CustomerList
LEFT OUTER JOIN Orders
ON CustomerList.LastName = Orders.CustomerName;sqlAcest lucru ne dă următorul rezultat:
| Numele clientului | ID produs |
|---|---|
| Smith | NULL |
| Rodman | 191 |
| Meyer | 332 |
| Garcia | NULL |
| Davis | NULL |
RIGHT OUTER JOIN
În MariaDB, RIGHT OUTER JOIN funcționează în mod opus. Aici, datele din a doua tabelă sau din tabelul din dreapta sunt combinate cu valorile corespunzătoare din prima tabelă sau din tabelul din stânga. Dacă nu există nicio potrivire, valoarea rezultată va fi NULL. Mai jos este codul:
SELECT CustomerList.LastName, Orders.ProductID
FROM CustomerList
RIGHT OUTER JOIN Orders
ON CustomerList.LastName = Orders.CustomerName;sqlIată cum arată rezultatul:
| Numele clientului | ID produs |
|---|---|
| NULL | 247 |
| Meyer | 332 |
| NULL | 247 |
| Rodman | 191 |
| NULL | 499 |