Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
mysql: conectar
Este tutorial de MySQL explica cómo usar MySQL participar (interno y externo) con gramática, ilustraciones visuales y ejemplos.
describir
mysql participar Se utiliza para recuperar datos de varias tablas. Se realiza un JOIN de MySQL cada vez que se unen dos o más tablas en una instrucción SQL.
Hay diferentes tipos de conexiones MySQL:
- MySQL INNER JOIN (o a veces llamado unión simple)
- Combinación externa izquierda de MySQL (o, a veces, llamada combinación izquierda)
- MySQL RIGHT OUTER JOIN (o algunas veces llamado RIGHT JOIN)
Así que analicemos la sintaxis de MySQL JOIN, veamos una ilustración visual de MySQL JOIN y exploremos los ejemplos de MySQL JOIN.
UNIÓN INTERNA (unión simple)
Lo más probable es que haya escrito una declaración que use MySQL INNER JOIN. Es el tipo de conexión más común. MySQL INNER JOINS devuelve todas las filas de varias tablas que cumplen la condición de unión.
sintaxis
La sintaxis de INNER JOIN en MySQL es:
SELECT columns FROM table1 INNER JOIN table2 ON table1.column = table2.column;
ilustración visual
En este gráfico visual, MySQL INNER JOIN devuelve el área sombreada:
MySQL INNER JOIN devolverá los registros donde se cruzan table1 y table2.
ejemplo
Aquí hay un ejemplo de MySQL INNER JOIN:
SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date FROM suppliers INNER JOIN orders ON suppliers.supplier_id = orders.supplier_id;
Este ejemplo de MySQL INNER JOIN devolverá todas las filas de las tablas Proveedores y Pedidos en las que haya un valor de ID de proveedor coincidente en las tablas Proveedores y Pedidos.
Veamos algunos datos para explicar cómo funciona INNER JOINS:
Tenemos una tabla llamada Proveedores con dos campos (ID del proveedor y Nombre del proveedor). Contiene los siguientes datos:
Identificación del proveedor | Nombre del proveedor |
---|---|
10000 | IBM |
10001 | HP |
10002 | microsoft |
10003 | nvidia |
Tenemos otra tabla llamada orders con tres campos (order_id, supplier_id y order_date). Contiene los siguientes datos:
Solicitar ID | Identificación del proveedor | fecha de orden |
---|---|---|
500125 | 10000 | 2013/05/12 |
500126 | 10001 | 2013/05/13 |
500127 | 10004 | 2013/05/14 |
Si ejecutamos la declaración SELECT de MySQL a continuación (incluyendo INNER JOIN):
SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date FROM suppliers INNER JOIN orders ON suppliers.supplier_id = orders.supplier_id;
Nuestro conjunto de resultados se ve así:
Identificación del proveedor | nombre | fecha de orden |
---|---|---|
10000 | IBM | 2013/05/12 |
10001 | HP | 2013/05/13 |
Las filas de Microsoft y NVIDIA en la tabla de proveedores se omitirán porque los ID de proveedor 10002 y 10003 no existen en ninguna de las tablas. La fila 500127 (order_id) en la tabla de pedidos se omitirá porque el ID de proveedor 10004 no existe en la tabla de proveedores.
sintaxis antigua
Como nota final, vale la pena mencionar que el ejemplo anterior de MySQL INNER JOIN se puede reescribir usando la sintaxis implícita más antigua de la siguiente manera (pero aún recomendamos usar la sintaxis de palabra clave INNER JOIN):
SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date FROM suppliers, orders WHERE suppliers.supplier_id = orders.supplier_id;
izquierda combinación externa
Otro tipo de unión se llama MySQL LEFT OUTER JOIN.Este tipo de unión devuelve todas las filas en el reloj izquierdo especificado en la condición ON, y si solo Une esas filas de otras tablas donde los campos son iguales (se cumplen las condiciones de unión).
sintaxis
La sintaxis para LEFT OUTER JOIN en MySQL es:
SELECT columns FROM table1 LEFT [OUTER] JOIN table2 ON table1.column = table2.column;
En algunas bases de datos, la palabra clave LEFT OUTER JOIN se reemplaza por LEFT JOIN.
ilustración visual
En esta visualización, MySQL LEFT OUTER JOIN devuelve el área sombreada:
MySQL LEFT OUTER JOIN devolverá todos los registros en la tabla 1 y solo aquellos registros en la tabla 2 que se cruzan con la tabla 1.
ejemplo
Aquí hay un ejemplo de MySQL LEFT OUTER JOIN:
SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date FROM suppliers LEFT JOIN orders ON suppliers.supplier_id = orders.supplier_id;
Este ejemplo de LEFT OUTER JOIN devolverá todas las filas de la tabla Proveedores y solo aquellas filas de la tabla Pedidos donde los campos de combinación son iguales.
Si el valor de id_proveedor en la tabla de proveedores no existe en la tabla de pedidos, todos los campos de la tabla de pedidos aparecerán en el conjunto de resultados como
Veamos algunos datos para explicar cómo funciona LEFT OUTER JOINS:
Tenemos una tabla llamada Proveedores con dos campos (ID del proveedor y Nombre del proveedor). Contiene los siguientes datos:
Identificación del proveedor | Nombre del proveedor |
---|---|
10000 | IBM |
10001 | HP |
10002 | microsoft |
10003 | nvidia |
Tenemos una segunda tabla llamada pedidos con tres campos (id_pedido, id_proveedor y fecha_pedido). Contiene los siguientes datos:
Solicitar ID | Identificación del proveedor | fecha de orden |
---|---|---|
500125 | 10000 | 2013/05/12 |
500126 | 10001 | 2013/05/13 |
Si ejecutamos la siguiente sentencia SELECT (incluyendo LEFT OUTER JOIN):
SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date FROM suppliers LEFT JOIN orders ON suppliers.supplier_id = orders.supplier_id;
Nuestro conjunto de resultados se ve así:
Identificación del proveedor | Nombre del proveedor | fecha de orden |
---|---|---|
10000 | IBM | 2013/05/12 |
10001 | HP | 2013/05/13 |
10002 | microsoft | |
10003 | nvidia |
Dado que se usa LEFT OUTER JOIN, se incluirán las líneas para Microsoft y NVIDIA.Sin embargo, notará que el campo order_date de estos registros contiene un
unión externa derecha
Otro tipo de unión se llama MySQL RIGHT OUTER JOIN.Este tipo de combinación devuelve todas las filas de la tabla DERECHA especificadas en la condición ON y si solo Une esas filas de otras tablas donde los campos son iguales (se cumplen las condiciones de unión).
sintaxis
La sintaxis de RIGHT OUTER JOIN en MySQL es:
SELECT columns FROM table1 RIGHT [OUTER] JOIN table2 ON table1.column = table2.column;
En algunas bases de datos, la palabra clave RIGHT OUTER JOIN se reemplaza por RIGHT JOIN.
ilustración visual
En esta visualización, MySQL RIGHT OUTER JOIN devuelve el área sombreada:
MySQL RIGHT OUTER JOIN devolverá todos los registros en table2 y solo aquellos registros en table1 que se cruzan con table2.
ejemplo
El siguiente es un ejemplo de MySQL RIGHT OUTER JOIN:
SELECT orders.order_id, orders.order_date, suppliers.supplier_name FROM suppliers RIGHT JOIN orders ON suppliers.supplier_id = orders.supplier_id;
Este ejemplo de RIGHT OUTER JOIN devolverá todas las filas de la tabla de pedidos y solo aquellas filas de la tabla de proveedores donde los campos de unión sean iguales.
Si el valor de id_proveedor en la tabla de pedidos no existe en la tabla de proveedores, todos los campos de la tabla de proveedores aparecerán en el conjunto de resultados como
Veamos algunos datos para explicar cómo funciona RIGHT OUTER JOINS:
Tenemos una tabla llamada Proveedores con dos campos (ID del proveedor y Nombre del proveedor). Contiene los siguientes datos:
Identificación del proveedor | Nombre del proveedor |
---|---|
10000 | manzana |
10001 |
Tenemos una segunda tabla llamada pedidos con tres campos (id_pedido, id_proveedor y fecha_pedido). Contiene los siguientes datos:
Solicitar ID | Identificación del proveedor | fecha de orden |
---|---|---|
500125 | 10000 | 2013/08/12 |
500126 | 10001 | 2013/08/13 |
500127 | 10002 | 2013/08/14 |
Si ejecutamos la siguiente sentencia SELECT (con RIGHT OUTER JOIN):
SELECT orders.order_id, orders.order_date, suppliers.supplier_name FROM suppliers RIGHT JOIN orders ON suppliers.supplier_id = orders.supplier_id;
Nuestro conjunto de resultados se ve así:
Solicitar ID | fecha de orden | Nombre del proveedor |
---|---|---|
500125 | 2013/08/12 | manzana |
500126 | 2013/08/13 | |
500127 | 2013/08/14 |
Debido a que se utilizó RIGHT OUTER JOIN, se incluirá la fila para 500127 (order_id).Sin embargo, notará que el campo Nombre del proveedor del registro contiene