MySQL entra a far parte di relazione Tutorial

April 12

MySQL è un sistema di gestione di database relazionale open source (RDBMS) che gli individui e le aziende spesso utilizzano per eseguire il back-end di applicazioni web. In SQL, si unisce spesso vanificare i nuovi utenti. Come database diventano più grandi, diventa fondamentale per le query da usare si unisce in modo efficiente. MySQL JOIN parola chiave rende più facile lavorare sia con codice nuovo e legacy.

interno entra a far parte

Quando si pensa di unire due tabelle, probabilmente pensate di una query con un semplice join di una tabella come dipendenti con una tabella come Dipartimenti:

SELEZIONE Employees.last_name, Employees.first_name, Departments.department_name
Dai reparti, dipendenti
DOVE Departments.department_id = Employees.department_id
ANDARE

Si tratta di un inner join. Si recupera solo le righe in cui il department_id è esattamente uguale in entrambe le tabelle. Il codice precedente funziona in MySQL, ma si può trovare meno leggibile la seguente:

SELEZIONE Employees.last_name, Employees.first_name, Departments.department_name
FROM Dipartimenti
INNER JOIN dipendenti
ON Departments.department_id = Employees.department_id
ANDARE

Questi due query producono esattamente la stessa uscita. La differenza è che utilizzando il MySQL JOIN parola chiave, che hai fatto più evidente che tipo di join è stato utilizzato. Dal momento che inner join è l'impostazione predefinita, se si lascia fuori la parola chiave INNER, MySQL esegue ancora un inner join.

outer join

Se si dispone di dipendenti che non sono assegnati ad un reparto specifico e avere un valore NULL per la loro department_id, quanto sopra unire non visualizzerà i dipendenti a tutti. Se si desidera che tutti i dipendenti se hanno un reparto o no, è necessario utilizzare un outer join.

MySQL utilizza DESTRA o SINISTRA con la parola chiave JOIN per specificare che si desidera un outer join, e dirgli quale tabella si desidera che i NULL da. Ecco la nostra query rivisto:

SELEZIONE Employees.last_name, Employees.first_name, Departments.department_name
FROM Impiegati
LEFT OUTER JOIN Dipartimento
ON Departments.department_id = Employees.department_id
ANDARE

È possibile ottenere tutti i dipendenti in uscita, anche se MySQL non trova department_id per abbinare il record dipendente. La tabella si desidera consentire i null da (dipartimenti) si trova a sinistra del segno di uguale.

Se si voleva vedere reparti senza dipendenti nell'output, è necessario utilizzare un RIGHT OUTER JOIN. La tabella che si desidera consentire i null da in quel caso si trova sulla destra del segno di uguale.

entra a far parte Croce

Facendo croce unisce per caso è un errore comune. E 'quello che succede quando non si specifica un join a tutti. Se non si sia messo un join nella clausola WHERE, o utilizzare uno degli altri JOIN ... sulle opzioni, si ottiene ogni possibile combinazione delle righe in ciascuna delle tabelle nel FROM se hanno una relazione o no.

Se si tira da tre tabelle avere, rispettivamente, 10, 20, e 3 le righe, si ottiene 10 x 20 x 3 righe come l'output totale. È possibile vedere il problema questa causa se il database ha più di un paio di record.

Raramente, si vuole fare un cross join di proposito. MySQL consente di utilizzare il CROSS JOIN ... ON sintassi per mostrare a nessuno modificare il codice in seguito che il cross join era intenzionale.