MySQL es un sistema de código abierto de gestión de bases de datos relacionales (RDBMS ) que los individuos y las empresas suelen utilizar para ejecutar el back-end de las aplicaciones web . En SQL , se une con frecuencia frustrar los nuevos usuarios. Como bases de datos se hacen más grandes , se convierte en fundamental para las consultas a utilizar se une de manera eficiente. Palabra clave JOIN de MySQL hace que sea más fácil trabajar con los nuevos y código heredado . Las combinaciones internas
Cuando usted piensa en la unión de dos tablas , probablemente piense en una consulta con una combinación sencilla de una tabla como empleados con una tabla como Departamentos :
SELECT Employees.last_name , Employees.first_name , Departamentos Departments.department_nameFROM , EmployeesWHERE Departments.department_id = Employees.department_id ;
se trata de una combinación interna . Se recupera sólo las filas donde el department_id es exactamente igual en ambas tablas. El código anterior funciona en MySQL, pero es posible que sea menos legible que la siguiente :
SELECCIONAR Employees.last_name , Employees.first_name , Departments.department_nameFROM DepartmentsINNER JOIN EmployeesON Departments.department_id = Employees.department_id ;
Estas dos consultas producen exactamente la misma salida . La diferencia es que mediante el uso de la palabra clave JOIN MySQL, usted lo ha hecho más evidente qué tipo de combinación que utilizó. Desde combinación interna es el valor por defecto , si se deja fuera la palabra clave INTERIOR , MySQL sigue realizando una combinación interna .
Combinaciones externas
Si usted tiene empleados que no son asignados a un departamento específico y tienen un valor NULL para su department_id , la combinación más arriba no se mostrará a los empleados en todos. Si desea que todos los empleados si tienen un departamento o no, usted tiene que utilizar una combinación externa .
MySQL usa la izquierda o derecha con la palabra clave JOIN para especificar que desea una combinación externa , y decirle qué tabla desea que los valores NULL de . Aquí está nuestra revisado consulta: SELECT
Employees.last_name , Employees.first_name , Departments.department_nameFROM EmployeesLEFT combinación externa DepartmentON Departments.department_id = Employees.department_id ;
obtener todos los empleados de la salida , incluso si MySQL no encuentra department_id para que coincida con registro de empleado . La tabla que desea permitir valores nulos a partir de ( departamentos ) está a la izquierda del signo igual .
Si querías ver departamentos sin empleados en su producción , debería usar una RIGHT OUTER JOIN . La tabla que desea permitir valores nulos en caso de que está a la derecha del signo igual .
Cruz se une
Haciendo combinaciones cruzadas por accidente es un error común. Es lo que sucede cuando no se especifica una combinación en absoluto. Si no pones bien una combinación en la cláusula WHERE , o utilizar uno de los otros JOIN ... ON opciones , se obtiene todas las combinaciones posibles de las filas en cada una de las mesas en el DE si tienen una relación o no .
Si tira de tres tablas que tienen , respectivamente , 10, 20 , y 3 filas , obtendrá 10 x 20 x 3 filas como su producción total. Usted puede ver el problema que esto causa si su base de datos tiene más de unos pocos registros.
Rara vez , tendrá que hacer una combinación cruzada a propósito. MySQL le permite usar el CROSS JOIN ... ON sintaxis para mostrar cualquier edición de su código después de que la combinación cruzada fue deliberado .