MySQL est un système open source de base de données relationnelle de gestion (SGBDR) que les individus et les entreprises utilisent souvent pour exécuter le back-end des applications web . Dans SQL , rejoint frustrer souvent les nouveaux utilisateurs. Comme les bases de données deviennent plus grandes , il devient essentiel pour les requêtes à utiliser des jointures efficacement. Mot-clé JOIN de MySQL , il est plus facile de travailler avec les deux nouveaux et le code existant . Jointures internes
Quand vous pensez à joindre deux tables , vous pensez probablement d'une requête avec une jointure simple d'un tableau comme employés avec un tableau comme Départements :
SELECT Employees.last_name , Employees.first_name , départements Departments.department_nameFROM , EmployeesWHERE Departments.department_id = Employees.department_id ;
Il s'agit d'une jointure interne . Il récupère uniquement les lignes où la departement_id est exactement égale dans les deux tables. Le code ci-dessus fonctionne dans MySQL, mais vous trouverez peut-être moins lisible que ce qui suit :
SELECT Employees.last_name , Employees.first_name , Departments.department_nameFROM DepartmentsINNER JOIN EmployeesON Departments.department_id = Employees.department_id ;
Ces deux requêtes produisent exactement le même résultat . La différence est que, en utilisant le mot-clé JOIN MySQL, vous avez fait plus évident ce genre de joindre vous avez utilisé. Depuis jointure interne est la valeur par défaut , si vous ne mettez pas le mot-clé INNER , MySQL effectue toujours une jointure interne .
Jointures externes
Si vous avez des employés qui ne sont pas affectés à un service spécifique et ont une valeur NULL pour leur departement_id , la jointure ci-dessus ne sera pas afficher les employés à tous. Si vous voulez que tous les employés, qu'ils ont un département ou pas, vous devez utiliser une jointure externe .
MySQL utilise à gauche ou à droite avec le mot-clé JOIN pour indiquer que vous souhaitez une jointure externe , et de lui dire quelle table vous voulez que les valeurs NULL à partir . Voici notre requête révisée :
Employees.last_name SELECT, Employees.first_name , Departments.department_nameFROM EmployeesLEFT OUTER JOIN DepartmentON Departments.department_id = Employees.department_id ;
Vous obtenez tous les employés de votre sortie , même si MySQL ne trouve pas departement_id pour correspondre à celui dossier de l'employé . Le tableau que vous souhaitez autoriser les valeurs NULL de ( départements) se trouve à gauche du signe égal .
Si vous vouliez voir départements avec aucun des employés de votre sortie , vous devez utiliser un OUTER JOIN . Le tableau que vous souhaitez autoriser les valeurs NULL à partir dans ce cas est à droite du signe égal .
Jointures croisées
Faire croix rejoint par accident est un erreur commune. C'est ce qui arrive quand vous ne spécifiez pas de joindre à tous. Si vous n'avez pas non plus mettre une jointure dans la clause WHERE , ou utiliser l'un de l'autre ... REJOIGNEZ-NOUS SUR options, vous obtenez toutes les combinaisons possibles des lignes dans chacun des tableaux dans votre FROM si elles ont une relation ou pas .
Si vous tirez à partir de trois tables ayant respectivement , 10, 20 , et 3 lignes , vous bénéficiez de 10 x 20 x 3 lignes que votre production totale. Vous pouvez voir le problème qu'elle pose si votre base de données a plus que quelques enregistrements .
Rarement , vous voulez faire une jointure croisée sur le but. MySQL vous permet d'utiliser le CROSS JOIN ... ON syntaxe de montrer quelqu'un édition de votre code plus tard que la jointure croisée était délibérée .