Tecnología

Inicio

MySQL se une Relación Tutorial

MySQL es un sistema de gestión de base de datos relacional de código abierto (RDBMS) que los individuos y las empresas utilizan con frecuencia para ejecutar el extremo posterior de las aplicaciones web. En SQL, se une con frecuencia frustrar a los nuevos usuarios. A medida que se hacen más grandes bases de datos, se convierte en fundamental para las consultas para utilizar une de manera eficiente. JOIN palabra clave de MySQL hace que sea más fácil trabajar con los nuevos y legado código.

Las uniones interiores

Cuando se piensa en la unión de dos tablas, es probable que piense de una consulta con una combinación sencilla de una tabla como empleados con una tabla como Departamentos:

SELECT Employees.last_name, Employees.first_name, Departments.department_name
Los empleados de los departamentos,
DONDE Departments.department_id = Employees.department_id
IR

Esta es 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 puede resultar menos legible que el siguiente:

SELECT Employees.last_name, Employees.first_name, Departments.department_name
de los departamentos
INNER JOIN empleados
EN Departments.department_id = Employees.department_id
IR

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 unión que utiliza. Desde combinación interna es el valor por defecto, si se deja fuera la palabra clave INTERIOR, MySQL todavía realiza una combinación interna.

Combinaciones externas

Si usted tiene empleados que no están asignados a un departamento específico y tienen un valor NULL para su department_id, lo anterior no se mostrará unirse a aquellos empleados en absoluto. Si desea que todos los empleados si tienen un departamento o no, usted tiene que utilizar una combinación externa.

MySQL usa IZQUIERDA o DERECHA con la palabra clave JOIN para especificar que desea una combinación externa, y decirle qué tabla desea que los valores nulos. Aquí está nuestra consulta revisada:

SELECT Employees.last_name, Employees.first_name, Departments.department_name
Los Empleados
LEFT OUTER JOIN Departamento
EN Departments.department_id = Employees.department_id
IR

Usted obtiene todos los empleados en su producción, incluso si no encuentra MySQL department_id para que coincida con registro de empleado. La tabla que desea permitir valores nulos (de los departamentos) está a la izquierda del signo igual.

Si quieres ver los departamentos sin empleados en su producción, se utilizaría un RIGHT OUTER JOIN. La tabla que desea permitir valores nulos en ese caso está a la derecha del signo igual.

Cross se une al

Haciendo Cross se une al por accidente es un error común. Es lo que ocurre cuando no se especifica una unión en absoluto. Si no lo hace o bien poner en una combinación en su cláusula WHERE, o utilizar una de la otra ... JOIN sobre las opciones, se obtiene todas las combinaciones posibles de las filas en cada una de las tablas de su DESDE si tienen una relación o no.

Si tira de tres mesas tienen, respectivamente, 10, 20, y 3 filas, se obtiene 10 x 20 x 3 filas como su producción total. Se puede ver el problema que esto hace que si su base de datos tiene más de unos pocos registros.

En raras ocasiones, tendrá que hacer una combinación cruzada a propósito. MySQL permite el uso de la combinación cruzada ... EN sintaxis para mostrarle a todo la edición de su código más tarde que la combinación cruzada fue deliberada.