SlideShare una empresa de Scribd logo
Unidad Didáctica 6. Consultas sobre
varias tablas. Composición interna y
cruzada
JOSÉ JUAN SÁNCHEZ HERNÁNDEZ
IES Celia Viñas (Almería) - 2019/2020
Índice general
1 Consultas sobre varias tablas. Composición interna y cruzada 4
1.1 Consultas multitabla SQL 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1 Composiciones cruzadas (Producto cartesiano) . . . . . . . . . . . . . . . . . . . . . . 4
1.1.2 Composiciones internas (Intersección) . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Consultas multitabla SQL 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.1 Composiciones cruzadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.2 Composiciones internas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.3 Composiciones externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 El orden en las tablas no afecta al resultado final . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.4 Podemos usar alias en las tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.5 Unir tres o más tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6 Utilizar la misma tabla varias veces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.7 Unir una tabla consigo misma (self-equi-join) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.8 Uniones equivalentes (equi-joins) y Uniones no equivalentes (non-equi-joins) . . . . . . . . . . 17
2 Errores comunes 18
3 Referencias 20
4 Licencia 21
1
Índice de cuadros
2
Índice de figuras
3
Capítulo 1
Consultas sobre varias tablas.
Composición interna y cruzada
Las consultas multitabla nos permiten consultar información en más de una tabla. La única diferencia respecto
a las consultas sencillas es que vamos a tener que especificar en la cláusula FROM cuáles son las tablas que
vamos a usar y cómo las vamos a relacionar entre sí.
Para realizar este tipo de consultas podemos usar dos alternativas, la sintaxis de SQL 1 (SQL-86), que consiste
en realizar el producto cartesiano de las tablas y añadir un filtro para relacionar los datos que tienen en común,
y la sintaxis de SQL 2 (SQL-92 y SQL-2003) que incluye todas las cláusulas de tipo JOIN.
1.1 Consultas multitabla SQL 1
1.1.1 Composiciones cruzadas (Producto cartesiano)
El producto cartesiano de dos conjuntos, es una operación que consiste en obtener otro conjunto cuyos ele-
mentos son todas las parejas que pueden formarse entre los dos conjuntos. Por ejemplo, tendríamos que
coger el primer elemento del primer conjunto y formar una pareja con cada uno de los elementos del segundo
conjunto. Una vez hecho esto, repetimos el mismo proceso para cada uno de los elementos del primer conjunto.
4
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020
Imagen: Imagen extraída de Wikipedia. Autor: GermanX
Ejemplo
Suponemos que tenemos una base de datos con dos tablas: empleado y departamento.
SELECT *
FROM empleado;
+--
------+-----------+--------------+-----------+-----------+---------------------+
| codigo | nif | nombre | apellido1 | apellido2 | codigo_departamento
|
+--
------+-----------+--------------+-----------+-----------+---------------------+
| 1 | 32481596F | Aarón | Rivero | Gómez | 1
|
| 2 | Y5575632D | Adela | Salas | Díaz | 2
|
| 3 | R6970642B | Adolfo | Rubio | Flores | 3
|
+--
------+-----------+--------------+-----------+-----------+---------------------+
SELECT *
FROM departamento;
+--------+------------------+-------------+
| codigo | nombre | presupuesto |
José Juan Sánchez Hernández 5
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020
+--------+------------------+-------------+
| 1 | Desarrollo | 120000 |
| 2 | Sistemas | 150000 |
| 3 | Recursos Humanos | 280000 |
+--------+------------------+-------------+
El producto cartesiano de las dos tablas se realiza con la siguiente consulta:
SELECT *
FROM empleado, departamento;
El resultado sería el siguiente:
+--------+-----------+--------+-----------+-----------+---------------------+--------------------
| codigo | nif | nombre | apellido1 | apellido2 | codigo_departamento |
codigo | nombre | presupuesto | gastos |
+--------+-----------+--------+-----------+-----------+---------------------+--------------------
| 1 | 32481596F | Aarón | Rivero | Gómez | 1 | 1
| Desarrollo | 120000 | 6000 |
| 2 | Y5575632D | Adela | Salas | Díaz | 2 | 1
| Desarrollo | 120000 | 6000 |
| 3 | R6970642B | Adolfo | Rubio | Flores | 3 | 1
| Desarrollo | 120000 | 6000 |
| 1 | 32481596F | Aarón | Rivero | Gómez | 1 | 2
| Sistemas | 150000 | 21000 |
| 2 | Y5575632D | Adela | Salas | Díaz | 2 | 2
| Sistemas | 150000 | 21000 |
| 3 | R6970642B | Adolfo | Rubio | Flores | 3 | 2
| Sistemas | 150000 | 21000 |
| 1 | 32481596F | Aarón | Rivero | Gómez | 1 | 3
| Recursos Humanos | 280000 | 25000 |
| 2 | Y5575632D | Adela | Salas | Díaz | 2 | 3
| Recursos Humanos | 280000 | 25000 |
| 3 | R6970642B | Adolfo | Rubio | Flores | 3 | 3
| Recursos Humanos | 280000 | 25000 |
+--------+-----------+--------+-----------+-----------+---------------------+--------------------
1.1.2 Composiciones internas (Intersección)
La intersección de dos conjuntos es una operación que resulta en otro conjunto que contiene sólo los ele-
mentos comunes que existen en ambos conjuntos.
José Juan Sánchez Hernández 6
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020
Imagen: Imagen extraída de Wikipedia. Autor: Kismalac.
Ejemplo
Para poder realizar una operación de intersección entre las dos tablas debemos utilizar la cláusula WHERE para
indicar la columna con la que queremos relacionar las dos tablas. Por ejemplo, para obtener un listado de los
empleados y el departamento donde trabaja cada uno podemos realizar la siguiente consulta:
SELECT *
FROM empleado, departamento
WHERE empleado.codigo_departamento = departamento.codigo
El resultado sería el siguiente:
José Juan Sánchez Hernández 7
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020
+--------+-----------+--------+-----------+-----------+---------------------+--------+-----------
| codigo | nif | nombre | apellido1 | apellido2 | codigo_departamento |
codigo | nombre | presupuesto | gastos |
+--------+-----------+--------+-----------+-----------+---------------------+--------+-----------
| 1 | 32481596F | Aarón | Rivero | Gómez | 1 | 1
| Desarrollo | 120000 | 6000 |
| 2 | Y5575632D | Adela | Salas | Díaz | 2 | 2
| Sistemas | 150000 | 21000 |
| 3 | R6970642B | Adolfo | Rubio | Flores | 3 | 3
| Recursos Humanos | 280000 | 25000 |
+--------+-----------+--------+-----------+-----------+---------------------+--------+-----------
Nota: Tenga en cuenta que con la operación de intersección sólo obtendremos los elementos de existan en
ambos conjuntos. Por lo tanto, en el ejemplo anterior puede ser que existan filas en la tabla empleado que no
aparecen en el resultado porque no tienen ningún departamento asociado, al igual que pueden existir filas en
la tabla departamento que no aparecen en el resultado porque no tienen ningún empleado asociado.
José Juan Sánchez Hernández 8
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020
1.2 Consultas multitabla SQL 2
1.2.1 Composiciones cruzadas
• Producto cartesiano
– CROSS JOIN
José Juan Sánchez Hernández 9
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020
Ejemplo de CROSS JOIN:
SELECT *
FROM empleado CROSS JOIN departamento
Esta consulta nos devolvería el producto cartesiano de las dos tablas.
1.2.2 Composiciones internas
• Join interna
– INNER JOIN o JOIN
– NATURAL JOIN
Ejemplo de INNER JOIN:
SELECT *
FROM empleado INNER JOIN departamento
ON empleado.codigo_departamento = departamento.codigo
Esta consulta nos devolvería la intersección entre las dos tablas.
La palabra reservada INNER es opcional, de modo que la consulta anterior también se puede escribir así:
SELECT *
FROM empleado JOIN departamento
ON empleado.codigo_departamento = departamento.codigo
NOTA: Tenga en cuenta que si olvidamos incluir la cláusula ON obtendremos el producto cartesiano de las
dos tablas.
Por ejemplo, la siguiente consulta nos devolverá el producto cartesiano de las tablas empleado y
departamento.
SELECT *
FROM empleado INNER JOIN departamento
Ejemplo de NATURAL JOIN:
SELECT *
FROM empleado NATURAL JOIN departamento
José Juan Sánchez Hernández 10
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020
Esta consulta nos devolvería la intersección de las dos tablas, pero utilizaría las columnas que tengan el mismo
nombre para relacionarlas. En este caso usaría las columnas código y nombre. Sólo deberíamos utilizar una
composición de tipo NATURAL JOIN cuando estemos seguros que los nombres de las columnas sobre las que
quiero relacionar las dos tablas se llaman igual en las dos tablas. Lo normal es que no suelan tener el mismo
nombre y que debamos usar una composición de tipo INNER JOIN.
1.2.3 Composiciones externas
• Join externa
– LEFT OUTER JOIN
– RIGHT OUTER JOIN
– FULL OUTER JOIN (No implementada en MySQL)
– NATURAL LEFT OUTER JOIN
– NATURAL RIGHT OUTER JOIN
Ejemplo de LEFT OUTER JOIN:
SELECT *
FROM empleado LEFT JOIN departamento
ON empleado.codigo_departamento = departamento.codigo
Esta consulta devolverá todas las filas de la tabla que hemos colocado a la izquierda de la composición, en
este caso la tabla empleado. Y relacionará las filas de la tabla de la izquierda (empleado) con las filas de la
tabla de la derecha (departamento) con las que encuentre una coincidencia. Si no encuentra ninguna coinci-
dencia, se mostrarán los valores de la fila de la tabla izquierda (empleado) y en los valores de la tabla derecha
(departamento) donde no ha encontrado una coincidencia mostrará el valor NULL.
José Juan Sánchez Hernández 11
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020
Ejemplo de RIGHT OUTER JOIN:
José Juan Sánchez Hernández 12
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020
SELECT *
FROM empleado RIGHT JOIN departamento
ON empleado.codigo_departamento = departamento.codigo
Esta consulta devolverá todas las filas de la tabla que hemos colocado a la derecha de la composición, en este
caso la tabla departamento. Y relacionará las filas de la tabla de la derecha (departamento) con las filas de la
tabladelaizquierda(empleado)conlasqueencuentreunacoincidencia.Sinoencuentraningunacoincidencia,
se mostrarán los valores de la fila de la tabla derecha (departamento) y en los valores de la tabla izquierda
(empleado) donde no ha encontrado una coincidencia mostrará el valor NULL.
José Juan Sánchez Hernández 13
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020
Ejemplo de FULL OUTER JOIN:
La composición FULL OUTER JOIN no está implementada en MySQL, por lo tanto para poder simular esta
operación será necesario hacer uso del operador UNION, que nos realiza la union del resultado de dos consultas.
José Juan Sánchez Hernández 14
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020
El resultado esperado de una composición de tipo FULL OUTER JOIN es obtener la intersección de las dos
tablas, junto las filas de ambas tablas que no se puedan combinar. Dicho con otras palabras, el resultado sería
el equivalente a realizar la union de una consulta de tipo LEFT JOIN y una consultas de tipo RIGHT JOIN sobre
las mismas tablas.
SELECT *
FROM empleado LEFT JOIN departamento
ON empleado.codigo_departamento = departamento.codigo
UNION
SELECT
FROM empleado RIGHT JOIN departamento
ON empleado.codigo_departamento = departamento.codigo
Ejemplo de NATURAL LEFT JOIN:
SELECT *
FROM empleado NATURAL LEFT JOIN departamento
Esta consulta realiza un LEFT JOIN entre las dos tablas, la única diferencia es que en este caso no es necesario
utilizar la cláusula ON para indicar sobre qué columna vamos a relacionar las dos tablas. En este caso las tablas
se van a relacionar sobre aquellas columnas que tengan el mismo nombre. Por lo tanto, sólo deberíamos
utilizar una composición de tipo NATURAL LEFT JOIN cuando estemos seguros de que los nombres de las
columnas sobre las que quiero relacionar las dos tablas se llaman igual en las dos tablas.
1.3 El orden en las tablas no afecta al resultado final
Estas dos consultas devuelven el mismo resultado:
SELECT *
FROM empleado INNER JOIN departamento
ON empleado.codigo_departamento = departamento.codigo
SELECT *
FROM departamento INNER JOIN empleado
ON empleado.codigo_departamento = departamento.codigo
José Juan Sánchez Hernández 15
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020
1.4 Podemos usar alias en las tablas
SELECT *
FROM empleado AS e INNER JOIN departamento AS d
ON e.codigo_departamento = d.codigo
SELECT *
FROM empleado e INNER JOIN departamento d
ON e.codigo_departamento = d.codigo
1.5 Unir tres o más tablas
Ejemplo:
SELECT *
FROM cliente INNER JOIN empleado
ON cliente.codigo_empleado_rep_ventas = empleado.codigo_empleado
INNER JOIN pago
ON cliente.codigo_cliente = pago.codigo_cliente;
1.6 Utilizar la misma tabla varias veces
TODO
1.7 Unir una tabla consigo misma (self-equi-join)
Para poder hacer una operación de INNER JOIN sobre la misma tabla es necesario utilizar un alias para la tabla.
AcontinuaciónsemuestraunejemplodelasdosformasposiblesdehacerunaoperacióndeINNER JOIN sobre
la misma tablas haciendo uso de alias.
Ejemplo:
SELECT empleado.nombre, empleado.apellido1, empleado.apellido2, jefe.nombre, jefe.
apellido1, jefe.apellido2
FROM empleado INNER JOIN empleado AS jefe
ON empleado.codigo_jefe = jefe.codigo_empleado
José Juan Sánchez Hernández 16
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020
SELECT empleado.nombre, empleado.apellido1, empleado.apellido2, jefe.nombre, jefe.
apellido1, jefe.apellido2
FROM empleado INNER JOIN empleado jefe
ON empleado.codigo_jefe = jefe.codigo_empleado
1.8 Uniones equivalentes (equi-joins) y Uniones no equivalentes (non-
equi-joins)
TODO
José Juan Sánchez Hernández 17
Capítulo 2
Errores comunes
1. Nos olvidamos de incluir en el WHERE la condición que nos relaciona las dos tablas.
Consulta incorrecta
SELECT *
FROM producto, fabricante
WHERE fabricante.nombre = 'Lenovo';
Consulta correcta
SELECT *
FROM producto, fabricante
WHERE producto.codigo_fabricante = fabricante.codigo AND fabricante.nombre = '
Lenovo';
2. Nos olvidamos de incluir ON en las consultas de tipo INNER JOIN.
Consulta incorrecta
SELECT *
FROM producto INNER JOIN fabricante
WHERE fabricante.nombre = 'Lenovo';
Consulta correcta
SELECT *
FROM producto INNER JOIN fabricante
ON producto.codigo_fabricante = fabricante.codigo
WHERE fabricante.nombre = 'Lenovo';
18
Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020
3. Relacionamos las tablas utilizando nombres de columnas incorrectos.
Consulta incorrecta
SELECT *
FROM producto INNER JOIN fabricante
ON producto.codigo = fabricante.codigo;
Consulta correcta
SELECT *
FROM producto INNER JOIN fabricante
ON producto.codigo_fabricante = fabricante.codigo;
4. Cuando hacemos la intersección de tres tablas con INNER JOIN nos olvidamos de incluir ON en alguna
de las intersecciones.
Consulta incorrecta
SELECT DISTINCT nombre_cliente, nombre, apellido1
FROM cliente INNER JOIN empleado
INNER JOIN pago
ON cliente.codigo_cliente = pago.codigo_cliente;
Consulta correcta
SELECT DISTINCT nombre_cliente, nombre, apellido1
FROM cliente INNER JOIN empleado
ON cliente.codigo_empleado_rep_ventas = empleado.codigo_empleado
INNER JOIN pago
ON cliente.codigo_cliente = pago.codigo_cliente;
José Juan Sánchez Hernández 19
Capítulo 3
Referencias
• Wikibook SQL Exercises.
• Tutorial SQL de w3resource.
• MySQL Join Types by Steve Stedman.
• Guía visual de SQL Joins.
• Bases de Datos. 2ª Edición. Grupo editorial Garceta. Iván López Montalbán, Manuel de Castro Vázquez y
John Ospino Rivas.
• INNER JOIN.
• LEFT JOIN.
• RIGHT JOIN.
20
Capítulo 4
Licencia
Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Inter-
nacional.
21

Más contenido relacionado

La actualidad más candente

ASP.NET WEB API
ASP.NET WEB APIASP.NET WEB API
ASP.NET WEB API
Thang Chung
 
Base de datos vs sistemas de ficheros exp.2 (1)
Base de datos vs sistemas de ficheros exp.2 (1)Base de datos vs sistemas de ficheros exp.2 (1)
Base de datos vs sistemas de ficheros exp.2 (1)
Yudy Reyes
 
Aula10 sql-ddl
Aula10 sql-ddlAula10 sql-ddl
Aula10 sql-ddl
Rafael Albani
 
INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVER
Darwin Durand
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datos
josecuartas
 
Normalizacion de bases de datos
Normalizacion de bases de datosNormalizacion de bases de datos
Normalizacion de bases de datos
Caro_Noirgean
 
Joins in SQL
Joins in SQLJoins in SQL
Joins in SQL
Vigneshwaran Sankaran
 
Database Normalization by Dr. Kamal Gulati
Database Normalization by Dr. Kamal GulatiDatabase Normalization by Dr. Kamal Gulati
Database Normalization
Database NormalizationDatabase Normalization
Database Normalization
Arun Sharma
 
Mysql
MysqlMysql
Mysql
TSUBHASHRI
 
Crear base de datos mysql command
Crear base de datos mysql commandCrear base de datos mysql command
Crear base de datos mysql command
Louis Jhosimar
 
Normalization
NormalizationNormalization
Normalization
Rajeev Srivastava
 
Basic sql Commands
Basic sql CommandsBasic sql Commands
Basic sql Commands
MUHAMMED MASHAHIL PUKKUNNUMMAL
 
Consultas base de datos en SQL
Consultas base de datos en SQLConsultas base de datos en SQL
Consultas base de datos en SQL
Cristian Salazar C.
 
SQL for interview
SQL for interviewSQL for interview
SQL for interview
Aditya Kumar Tripathy
 
Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)
José Toro
 
Clases de direcciones IP
Clases de direcciones IPClases de direcciones IP
Clases de direcciones IP
f_lazarte
 
Referential integrity
Referential integrityReferential integrity
Referential integrity
Jubin Raju
 
Sql and Sql commands
Sql and Sql commandsSql and Sql commands
Sql and Sql commands
Knowledge Center Computer
 
Sesión01 - Gestión de instancia (Oracle)
Sesión01 - Gestión de instancia (Oracle)Sesión01 - Gestión de instancia (Oracle)
Sesión01 - Gestión de instancia (Oracle)
José Toro
 

La actualidad más candente (20)

ASP.NET WEB API
ASP.NET WEB APIASP.NET WEB API
ASP.NET WEB API
 
Base de datos vs sistemas de ficheros exp.2 (1)
Base de datos vs sistemas de ficheros exp.2 (1)Base de datos vs sistemas de ficheros exp.2 (1)
Base de datos vs sistemas de ficheros exp.2 (1)
 
Aula10 sql-ddl
Aula10 sql-ddlAula10 sql-ddl
Aula10 sql-ddl
 
INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVER
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datos
 
Normalizacion de bases de datos
Normalizacion de bases de datosNormalizacion de bases de datos
Normalizacion de bases de datos
 
Joins in SQL
Joins in SQLJoins in SQL
Joins in SQL
 
Database Normalization by Dr. Kamal Gulati
Database Normalization by Dr. Kamal GulatiDatabase Normalization by Dr. Kamal Gulati
Database Normalization by Dr. Kamal Gulati
 
Database Normalization
Database NormalizationDatabase Normalization
Database Normalization
 
Mysql
MysqlMysql
Mysql
 
Crear base de datos mysql command
Crear base de datos mysql commandCrear base de datos mysql command
Crear base de datos mysql command
 
Normalization
NormalizationNormalization
Normalization
 
Basic sql Commands
Basic sql CommandsBasic sql Commands
Basic sql Commands
 
Consultas base de datos en SQL
Consultas base de datos en SQLConsultas base de datos en SQL
Consultas base de datos en SQL
 
SQL for interview
SQL for interviewSQL for interview
SQL for interview
 
Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)
 
Clases de direcciones IP
Clases de direcciones IPClases de direcciones IP
Clases de direcciones IP
 
Referential integrity
Referential integrityReferential integrity
Referential integrity
 
Sql and Sql commands
Sql and Sql commandsSql and Sql commands
Sql and Sql commands
 
Sesión01 - Gestión de instancia (Oracle)
Sesión01 - Gestión de instancia (Oracle)Sesión01 - Gestión de instancia (Oracle)
Sesión01 - Gestión de instancia (Oracle)
 

Similar a Guía 03. Consultas MySQL sobre varias tablas. Composición interna - José J Sánchez H

Guía 02. Consultas MySQL sobre una tabla - José J Sánchez H
Guía 02. Consultas MySQL sobre una tabla - José J Sánchez HGuía 02. Consultas MySQL sobre una tabla - José J Sánchez H
Guía 02. Consultas MySQL sobre una tabla - José J Sánchez H
José Ricardo Tillero Giménez
 
Material Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de DatosMaterial Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de Datos
liras loca
 
Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)
José Toro
 
Plantilla con-normas-icontec
Plantilla con-normas-icontecPlantilla con-normas-icontec
Plantilla con-normas-icontec
Andres Camilo Morales Nova
 
Guía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez H
Guía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez HGuía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez H
Guía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez H
José Ricardo Tillero Giménez
 
Lenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-proLenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-pro
Madeleine Eneida Barrera Condori
 
Lenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-proLenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-pro
Alejandro Alzate Walteros
 
Lenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-proLenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-pro
Alejandro Alzate Walteros
 
Guía 02. Ejercicios de teoría sobre SQL - José J Sánchez H
Guía 02. Ejercicios de teoría sobre SQL - José J Sánchez HGuía 02. Ejercicios de teoría sobre SQL - José J Sánchez H
Guía 02. Ejercicios de teoría sobre SQL - José J Sánchez H
José Ricardo Tillero Giménez
 
Trabajo de informatica
Trabajo de informaticaTrabajo de informatica
Trabajo de informatica
Rodrigo Vasquez
 
54563910 curso-de-mysql
54563910 curso-de-mysql54563910 curso-de-mysql
54563910 curso-de-mysql
Aldo Vilches Godoy
 
MySQL - SQL.pdf
MySQL - SQL.pdfMySQL - SQL.pdf
MySQL - SQL.pdf
kabern
 
MySQL.pdf
MySQL.pdfMySQL.pdf
MySQL.pdf
kabern
 
Johan nuevo 2
Johan nuevo 2Johan nuevo 2
Johan nuevo 2
Julian Rivera
 
Johan nuevo 2
Johan nuevo 2Johan nuevo 2
Johan nuevo 2
Julian Rivera
 
Johan nuevo 2
Johan nuevo 2Johan nuevo 2
Johan nuevo 2
Julian Rivera
 
Filtros
FiltrosFiltros
Filtros
SANDY Guaman
 
Textos sqli_mssql
 Textos sqli_mssql Textos sqli_mssql
Textos sqli_mssql
Segundo Puerto
 
Sql postgres
Sql postgresSql postgres
Sql postgres
Gilmar Campana Quispe
 
Laboratorio 3
Laboratorio 3Laboratorio 3

Similar a Guía 03. Consultas MySQL sobre varias tablas. Composición interna - José J Sánchez H (20)

Guía 02. Consultas MySQL sobre una tabla - José J Sánchez H
Guía 02. Consultas MySQL sobre una tabla - José J Sánchez HGuía 02. Consultas MySQL sobre una tabla - José J Sánchez H
Guía 02. Consultas MySQL sobre una tabla - José J Sánchez H
 
Material Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de DatosMaterial Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de Datos
 
Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)
 
Plantilla con-normas-icontec
Plantilla con-normas-icontecPlantilla con-normas-icontec
Plantilla con-normas-icontec
 
Guía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez H
Guía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez HGuía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez H
Guía 01. Lenguaje DDL. Manipulación del MySQL - José J Sánchez H
 
Lenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-proLenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-pro
 
Lenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-proLenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-pro
 
Lenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-proLenguaje de-programacion-iii-visual-fox-pro
Lenguaje de-programacion-iii-visual-fox-pro
 
Guía 02. Ejercicios de teoría sobre SQL - José J Sánchez H
Guía 02. Ejercicios de teoría sobre SQL - José J Sánchez HGuía 02. Ejercicios de teoría sobre SQL - José J Sánchez H
Guía 02. Ejercicios de teoría sobre SQL - José J Sánchez H
 
Trabajo de informatica
Trabajo de informaticaTrabajo de informatica
Trabajo de informatica
 
54563910 curso-de-mysql
54563910 curso-de-mysql54563910 curso-de-mysql
54563910 curso-de-mysql
 
MySQL - SQL.pdf
MySQL - SQL.pdfMySQL - SQL.pdf
MySQL - SQL.pdf
 
MySQL.pdf
MySQL.pdfMySQL.pdf
MySQL.pdf
 
Johan nuevo 2
Johan nuevo 2Johan nuevo 2
Johan nuevo 2
 
Johan nuevo 2
Johan nuevo 2Johan nuevo 2
Johan nuevo 2
 
Johan nuevo 2
Johan nuevo 2Johan nuevo 2
Johan nuevo 2
 
Filtros
FiltrosFiltros
Filtros
 
Textos sqli_mssql
 Textos sqli_mssql Textos sqli_mssql
Textos sqli_mssql
 
Sql postgres
Sql postgresSql postgres
Sql postgres
 
Laboratorio 3
Laboratorio 3Laboratorio 3
Laboratorio 3
 

Más de José Ricardo Tillero Giménez

PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
José Ricardo Tillero Giménez
 
Guía Ejercicios SQL
Guía Ejercicios SQLGuía Ejercicios SQL
Guía Ejercicios SQL
José Ricardo Tillero Giménez
 
Guía 3 Ejercicios de Normalización de Base de Datos
Guía 3 Ejercicios de Normalización de Base de DatosGuía 3 Ejercicios de Normalización de Base de Datos
Guía 3 Ejercicios de Normalización de Base de Datos
José Ricardo Tillero Giménez
 
Guía 1 Ejercicios MR
Guía 1 Ejercicios MRGuía 1 Ejercicios MR
Guía 1 Ejercicios MR
José Ricardo Tillero Giménez
 
Guía 2 Ejercicios de Normalización de Base de Datos
Guía 2 Ejercicios de Normalización de Base de DatosGuía 2 Ejercicios de Normalización de Base de Datos
Guía 2 Ejercicios de Normalización de Base de Datos
José Ricardo Tillero Giménez
 
Guía 3 Ejercicios MER Extendido
Guía 3 Ejercicios MER ExtendidoGuía 3 Ejercicios MER Extendido
Guía 3 Ejercicios MER Extendido
José Ricardo Tillero Giménez
 
Guía 2 Ejercicios MER
Guía 2 Ejercicios MERGuía 2 Ejercicios MER
Guía 2 Ejercicios MER
José Ricardo Tillero Giménez
 
Guía 1 Ejercicios MER
Guía 1 Ejercicios MERGuía 1 Ejercicios MER
Guía 1 Ejercicios MER
José Ricardo Tillero Giménez
 
Plan de evaluación BD2021
Plan de evaluación BD2021Plan de evaluación BD2021
Plan de evaluación BD2021
José Ricardo Tillero Giménez
 
Perfil Docente y Asesoría
Perfil Docente y AsesoríaPerfil Docente y Asesoría
Perfil Docente y Asesoría
José Ricardo Tillero Giménez
 
Planificación BD2021
Planificación BD2021Planificación BD2021
Planificación BD2021
José Ricardo Tillero Giménez
 
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBDUNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
José Ricardo Tillero Giménez
 
NOTAS FINALES DE REDES AVANZADAS IIN4301
NOTAS FINALES DE REDES AVANZADAS IIN4301NOTAS FINALES DE REDES AVANZADAS IIN4301
NOTAS FINALES DE REDES AVANZADAS IIN4301
José Ricardo Tillero Giménez
 
NOTAS FINALES ELECTIVA II IN2102
NOTAS FINALES ELECTIVA II IN2102NOTAS FINALES ELECTIVA II IN2102
NOTAS FINALES ELECTIVA II IN2102
José Ricardo Tillero Giménez
 
NOTAS FINALES ELECTIVA II IN2101
NOTAS FINALES ELECTIVA II IN2101NOTAS FINALES ELECTIVA II IN2101
NOTAS FINALES ELECTIVA II IN2101
José Ricardo Tillero Giménez
 
Notas definitivas per base de datos
Notas definitivas per base de datosNotas definitivas per base de datos
Notas definitivas per base de datos
José Ricardo Tillero Giménez
 
Clase 6 VLAN
Clase 6 VLANClase 6 VLAN
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRPGuía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
José Ricardo Tillero Giménez
 
Guía CISCO de redistribución de protocolos de ruteo
Guía CISCO de redistribución de protocolos de ruteoGuía CISCO de redistribución de protocolos de ruteo
Guía CISCO de redistribución de protocolos de ruteo
José Ricardo Tillero Giménez
 
Manual Basico de jQuery
Manual Basico de jQueryManual Basico de jQuery
Manual Basico de jQuery
José Ricardo Tillero Giménez
 

Más de José Ricardo Tillero Giménez (20)

PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
 
Guía Ejercicios SQL
Guía Ejercicios SQLGuía Ejercicios SQL
Guía Ejercicios SQL
 
Guía 3 Ejercicios de Normalización de Base de Datos
Guía 3 Ejercicios de Normalización de Base de DatosGuía 3 Ejercicios de Normalización de Base de Datos
Guía 3 Ejercicios de Normalización de Base de Datos
 
Guía 1 Ejercicios MR
Guía 1 Ejercicios MRGuía 1 Ejercicios MR
Guía 1 Ejercicios MR
 
Guía 2 Ejercicios de Normalización de Base de Datos
Guía 2 Ejercicios de Normalización de Base de DatosGuía 2 Ejercicios de Normalización de Base de Datos
Guía 2 Ejercicios de Normalización de Base de Datos
 
Guía 3 Ejercicios MER Extendido
Guía 3 Ejercicios MER ExtendidoGuía 3 Ejercicios MER Extendido
Guía 3 Ejercicios MER Extendido
 
Guía 2 Ejercicios MER
Guía 2 Ejercicios MERGuía 2 Ejercicios MER
Guía 2 Ejercicios MER
 
Guía 1 Ejercicios MER
Guía 1 Ejercicios MERGuía 1 Ejercicios MER
Guía 1 Ejercicios MER
 
Plan de evaluación BD2021
Plan de evaluación BD2021Plan de evaluación BD2021
Plan de evaluación BD2021
 
Perfil Docente y Asesoría
Perfil Docente y AsesoríaPerfil Docente y Asesoría
Perfil Docente y Asesoría
 
Planificación BD2021
Planificación BD2021Planificación BD2021
Planificación BD2021
 
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBDUNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
 
NOTAS FINALES DE REDES AVANZADAS IIN4301
NOTAS FINALES DE REDES AVANZADAS IIN4301NOTAS FINALES DE REDES AVANZADAS IIN4301
NOTAS FINALES DE REDES AVANZADAS IIN4301
 
NOTAS FINALES ELECTIVA II IN2102
NOTAS FINALES ELECTIVA II IN2102NOTAS FINALES ELECTIVA II IN2102
NOTAS FINALES ELECTIVA II IN2102
 
NOTAS FINALES ELECTIVA II IN2101
NOTAS FINALES ELECTIVA II IN2101NOTAS FINALES ELECTIVA II IN2101
NOTAS FINALES ELECTIVA II IN2101
 
Notas definitivas per base de datos
Notas definitivas per base de datosNotas definitivas per base de datos
Notas definitivas per base de datos
 
Clase 6 VLAN
Clase 6 VLANClase 6 VLAN
Clase 6 VLAN
 
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRPGuía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
 
Guía CISCO de redistribución de protocolos de ruteo
Guía CISCO de redistribución de protocolos de ruteoGuía CISCO de redistribución de protocolos de ruteo
Guía CISCO de redistribución de protocolos de ruteo
 
Manual Basico de jQuery
Manual Basico de jQueryManual Basico de jQuery
Manual Basico de jQuery
 

Último

CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZACORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
Sandra Mariela Ballón Aguedo
 
Presentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdfPresentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdf
eleandroth
 
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdfp4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
DavidCamiloMosquera
 
Prueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infanciaPrueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infancia
LudmilaOrtega3
 
Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.
genesiscabezas469
 
Clase Prensencial, Actividad 2.pdf.......
Clase Prensencial, Actividad 2.pdf.......Clase Prensencial, Actividad 2.pdf.......
Clase Prensencial, Actividad 2.pdf.......
LuanaJaime1
 
Los Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres VivosLos Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres Vivos
karlafreire0608
 
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIACONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
ginnazamudio
 
Power Point: El conflicto inminente (Bosquejo)
Power Point: El conflicto inminente (Bosquejo)Power Point: El conflicto inminente (Bosquejo)
Power Point: El conflicto inminente (Bosquejo)
https://gramadal.wordpress.com/
 
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdfCarnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
EleNoguera
 
Este documento contiene, el programa completo de un acto para realizar la pro...
Este documento contiene, el programa completo de un acto para realizar la pro...Este documento contiene, el programa completo de un acto para realizar la pro...
Este documento contiene, el programa completo de un acto para realizar la pro...
romina395894
 
Presentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdfPresentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdf
LuanaJaime1
 
1° T3 Examen Mtro JP 23-24.pdf completos
1° T3 Examen Mtro JP 23-24.pdf completos1° T3 Examen Mtro JP 23-24.pdf completos
1° T3 Examen Mtro JP 23-24.pdf completos
ROCIORUIZQUEZADA
 
Vida, obra y pensamiento de Kant I24.ppt
Vida, obra y pensamiento de Kant I24.pptVida, obra y pensamiento de Kant I24.ppt
Vida, obra y pensamiento de Kant I24.ppt
LinoLatella
 
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsadUrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
JorgeVillota6
 
efemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptxefemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptx
acgtz913
 
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdfCronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
RicardoValdiviaVega
 
Hablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes CuadernilloHablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes Cuadernillo
Mónica Sánchez
 
200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural
shirherrer
 
Lecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docxLecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docx
Alejandrino Halire Ccahuana
 

Último (20)

CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZACORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
 
Presentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdfPresentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdf
 
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdfp4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
 
Prueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infanciaPrueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infancia
 
Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.
 
Clase Prensencial, Actividad 2.pdf.......
Clase Prensencial, Actividad 2.pdf.......Clase Prensencial, Actividad 2.pdf.......
Clase Prensencial, Actividad 2.pdf.......
 
Los Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres VivosLos Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres Vivos
 
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIACONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
 
Power Point: El conflicto inminente (Bosquejo)
Power Point: El conflicto inminente (Bosquejo)Power Point: El conflicto inminente (Bosquejo)
Power Point: El conflicto inminente (Bosquejo)
 
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdfCarnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
 
Este documento contiene, el programa completo de un acto para realizar la pro...
Este documento contiene, el programa completo de un acto para realizar la pro...Este documento contiene, el programa completo de un acto para realizar la pro...
Este documento contiene, el programa completo de un acto para realizar la pro...
 
Presentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdfPresentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdf
 
1° T3 Examen Mtro JP 23-24.pdf completos
1° T3 Examen Mtro JP 23-24.pdf completos1° T3 Examen Mtro JP 23-24.pdf completos
1° T3 Examen Mtro JP 23-24.pdf completos
 
Vida, obra y pensamiento de Kant I24.ppt
Vida, obra y pensamiento de Kant I24.pptVida, obra y pensamiento de Kant I24.ppt
Vida, obra y pensamiento de Kant I24.ppt
 
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsadUrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
 
efemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptxefemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptx
 
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdfCronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
 
Hablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes CuadernilloHablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes Cuadernillo
 
200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural
 
Lecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docxLecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docx
 

Guía 03. Consultas MySQL sobre varias tablas. Composición interna - José J Sánchez H

  • 1. Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzada JOSÉ JUAN SÁNCHEZ HERNÁNDEZ IES Celia Viñas (Almería) - 2019/2020
  • 2. Índice general 1 Consultas sobre varias tablas. Composición interna y cruzada 4 1.1 Consultas multitabla SQL 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1.1 Composiciones cruzadas (Producto cartesiano) . . . . . . . . . . . . . . . . . . . . . . 4 1.1.2 Composiciones internas (Intersección) . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2 Consultas multitabla SQL 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.1 Composiciones cruzadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.2 Composiciones internas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.2.3 Composiciones externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3 El orden en las tablas no afecta al resultado final . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.4 Podemos usar alias en las tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.5 Unir tres o más tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6 Utilizar la misma tabla varias veces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.7 Unir una tabla consigo misma (self-equi-join) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.8 Uniones equivalentes (equi-joins) y Uniones no equivalentes (non-equi-joins) . . . . . . . . . . 17 2 Errores comunes 18 3 Referencias 20 4 Licencia 21 1
  • 5. Capítulo 1 Consultas sobre varias tablas. Composición interna y cruzada Las consultas multitabla nos permiten consultar información en más de una tabla. La única diferencia respecto a las consultas sencillas es que vamos a tener que especificar en la cláusula FROM cuáles son las tablas que vamos a usar y cómo las vamos a relacionar entre sí. Para realizar este tipo de consultas podemos usar dos alternativas, la sintaxis de SQL 1 (SQL-86), que consiste en realizar el producto cartesiano de las tablas y añadir un filtro para relacionar los datos que tienen en común, y la sintaxis de SQL 2 (SQL-92 y SQL-2003) que incluye todas las cláusulas de tipo JOIN. 1.1 Consultas multitabla SQL 1 1.1.1 Composiciones cruzadas (Producto cartesiano) El producto cartesiano de dos conjuntos, es una operación que consiste en obtener otro conjunto cuyos ele- mentos son todas las parejas que pueden formarse entre los dos conjuntos. Por ejemplo, tendríamos que coger el primer elemento del primer conjunto y formar una pareja con cada uno de los elementos del segundo conjunto. Una vez hecho esto, repetimos el mismo proceso para cada uno de los elementos del primer conjunto. 4
  • 6. Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020 Imagen: Imagen extraída de Wikipedia. Autor: GermanX Ejemplo Suponemos que tenemos una base de datos con dos tablas: empleado y departamento. SELECT * FROM empleado; +-- ------+-----------+--------------+-----------+-----------+---------------------+ | codigo | nif | nombre | apellido1 | apellido2 | codigo_departamento | +-- ------+-----------+--------------+-----------+-----------+---------------------+ | 1 | 32481596F | Aarón | Rivero | Gómez | 1 | | 2 | Y5575632D | Adela | Salas | Díaz | 2 | | 3 | R6970642B | Adolfo | Rubio | Flores | 3 | +-- ------+-----------+--------------+-----------+-----------+---------------------+ SELECT * FROM departamento; +--------+------------------+-------------+ | codigo | nombre | presupuesto | José Juan Sánchez Hernández 5
  • 7. Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020 +--------+------------------+-------------+ | 1 | Desarrollo | 120000 | | 2 | Sistemas | 150000 | | 3 | Recursos Humanos | 280000 | +--------+------------------+-------------+ El producto cartesiano de las dos tablas se realiza con la siguiente consulta: SELECT * FROM empleado, departamento; El resultado sería el siguiente: +--------+-----------+--------+-----------+-----------+---------------------+-------------------- | codigo | nif | nombre | apellido1 | apellido2 | codigo_departamento | codigo | nombre | presupuesto | gastos | +--------+-----------+--------+-----------+-----------+---------------------+-------------------- | 1 | 32481596F | Aarón | Rivero | Gómez | 1 | 1 | Desarrollo | 120000 | 6000 | | 2 | Y5575632D | Adela | Salas | Díaz | 2 | 1 | Desarrollo | 120000 | 6000 | | 3 | R6970642B | Adolfo | Rubio | Flores | 3 | 1 | Desarrollo | 120000 | 6000 | | 1 | 32481596F | Aarón | Rivero | Gómez | 1 | 2 | Sistemas | 150000 | 21000 | | 2 | Y5575632D | Adela | Salas | Díaz | 2 | 2 | Sistemas | 150000 | 21000 | | 3 | R6970642B | Adolfo | Rubio | Flores | 3 | 2 | Sistemas | 150000 | 21000 | | 1 | 32481596F | Aarón | Rivero | Gómez | 1 | 3 | Recursos Humanos | 280000 | 25000 | | 2 | Y5575632D | Adela | Salas | Díaz | 2 | 3 | Recursos Humanos | 280000 | 25000 | | 3 | R6970642B | Adolfo | Rubio | Flores | 3 | 3 | Recursos Humanos | 280000 | 25000 | +--------+-----------+--------+-----------+-----------+---------------------+-------------------- 1.1.2 Composiciones internas (Intersección) La intersección de dos conjuntos es una operación que resulta en otro conjunto que contiene sólo los ele- mentos comunes que existen en ambos conjuntos. José Juan Sánchez Hernández 6
  • 8. Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020 Imagen: Imagen extraída de Wikipedia. Autor: Kismalac. Ejemplo Para poder realizar una operación de intersección entre las dos tablas debemos utilizar la cláusula WHERE para indicar la columna con la que queremos relacionar las dos tablas. Por ejemplo, para obtener un listado de los empleados y el departamento donde trabaja cada uno podemos realizar la siguiente consulta: SELECT * FROM empleado, departamento WHERE empleado.codigo_departamento = departamento.codigo El resultado sería el siguiente: José Juan Sánchez Hernández 7
  • 9. Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020 +--------+-----------+--------+-----------+-----------+---------------------+--------+----------- | codigo | nif | nombre | apellido1 | apellido2 | codigo_departamento | codigo | nombre | presupuesto | gastos | +--------+-----------+--------+-----------+-----------+---------------------+--------+----------- | 1 | 32481596F | Aarón | Rivero | Gómez | 1 | 1 | Desarrollo | 120000 | 6000 | | 2 | Y5575632D | Adela | Salas | Díaz | 2 | 2 | Sistemas | 150000 | 21000 | | 3 | R6970642B | Adolfo | Rubio | Flores | 3 | 3 | Recursos Humanos | 280000 | 25000 | +--------+-----------+--------+-----------+-----------+---------------------+--------+----------- Nota: Tenga en cuenta que con la operación de intersección sólo obtendremos los elementos de existan en ambos conjuntos. Por lo tanto, en el ejemplo anterior puede ser que existan filas en la tabla empleado que no aparecen en el resultado porque no tienen ningún departamento asociado, al igual que pueden existir filas en la tabla departamento que no aparecen en el resultado porque no tienen ningún empleado asociado. José Juan Sánchez Hernández 8
  • 10. Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020 1.2 Consultas multitabla SQL 2 1.2.1 Composiciones cruzadas • Producto cartesiano – CROSS JOIN José Juan Sánchez Hernández 9
  • 11. Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020 Ejemplo de CROSS JOIN: SELECT * FROM empleado CROSS JOIN departamento Esta consulta nos devolvería el producto cartesiano de las dos tablas. 1.2.2 Composiciones internas • Join interna – INNER JOIN o JOIN – NATURAL JOIN Ejemplo de INNER JOIN: SELECT * FROM empleado INNER JOIN departamento ON empleado.codigo_departamento = departamento.codigo Esta consulta nos devolvería la intersección entre las dos tablas. La palabra reservada INNER es opcional, de modo que la consulta anterior también se puede escribir así: SELECT * FROM empleado JOIN departamento ON empleado.codigo_departamento = departamento.codigo NOTA: Tenga en cuenta que si olvidamos incluir la cláusula ON obtendremos el producto cartesiano de las dos tablas. Por ejemplo, la siguiente consulta nos devolverá el producto cartesiano de las tablas empleado y departamento. SELECT * FROM empleado INNER JOIN departamento Ejemplo de NATURAL JOIN: SELECT * FROM empleado NATURAL JOIN departamento José Juan Sánchez Hernández 10
  • 12. Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020 Esta consulta nos devolvería la intersección de las dos tablas, pero utilizaría las columnas que tengan el mismo nombre para relacionarlas. En este caso usaría las columnas código y nombre. Sólo deberíamos utilizar una composición de tipo NATURAL JOIN cuando estemos seguros que los nombres de las columnas sobre las que quiero relacionar las dos tablas se llaman igual en las dos tablas. Lo normal es que no suelan tener el mismo nombre y que debamos usar una composición de tipo INNER JOIN. 1.2.3 Composiciones externas • Join externa – LEFT OUTER JOIN – RIGHT OUTER JOIN – FULL OUTER JOIN (No implementada en MySQL) – NATURAL LEFT OUTER JOIN – NATURAL RIGHT OUTER JOIN Ejemplo de LEFT OUTER JOIN: SELECT * FROM empleado LEFT JOIN departamento ON empleado.codigo_departamento = departamento.codigo Esta consulta devolverá todas las filas de la tabla que hemos colocado a la izquierda de la composición, en este caso la tabla empleado. Y relacionará las filas de la tabla de la izquierda (empleado) con las filas de la tabla de la derecha (departamento) con las que encuentre una coincidencia. Si no encuentra ninguna coinci- dencia, se mostrarán los valores de la fila de la tabla izquierda (empleado) y en los valores de la tabla derecha (departamento) donde no ha encontrado una coincidencia mostrará el valor NULL. José Juan Sánchez Hernández 11
  • 13. Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020 Ejemplo de RIGHT OUTER JOIN: José Juan Sánchez Hernández 12
  • 14. Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020 SELECT * FROM empleado RIGHT JOIN departamento ON empleado.codigo_departamento = departamento.codigo Esta consulta devolverá todas las filas de la tabla que hemos colocado a la derecha de la composición, en este caso la tabla departamento. Y relacionará las filas de la tabla de la derecha (departamento) con las filas de la tabladelaizquierda(empleado)conlasqueencuentreunacoincidencia.Sinoencuentraningunacoincidencia, se mostrarán los valores de la fila de la tabla derecha (departamento) y en los valores de la tabla izquierda (empleado) donde no ha encontrado una coincidencia mostrará el valor NULL. José Juan Sánchez Hernández 13
  • 15. Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020 Ejemplo de FULL OUTER JOIN: La composición FULL OUTER JOIN no está implementada en MySQL, por lo tanto para poder simular esta operación será necesario hacer uso del operador UNION, que nos realiza la union del resultado de dos consultas. José Juan Sánchez Hernández 14
  • 16. Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020 El resultado esperado de una composición de tipo FULL OUTER JOIN es obtener la intersección de las dos tablas, junto las filas de ambas tablas que no se puedan combinar. Dicho con otras palabras, el resultado sería el equivalente a realizar la union de una consulta de tipo LEFT JOIN y una consultas de tipo RIGHT JOIN sobre las mismas tablas. SELECT * FROM empleado LEFT JOIN departamento ON empleado.codigo_departamento = departamento.codigo UNION SELECT FROM empleado RIGHT JOIN departamento ON empleado.codigo_departamento = departamento.codigo Ejemplo de NATURAL LEFT JOIN: SELECT * FROM empleado NATURAL LEFT JOIN departamento Esta consulta realiza un LEFT JOIN entre las dos tablas, la única diferencia es que en este caso no es necesario utilizar la cláusula ON para indicar sobre qué columna vamos a relacionar las dos tablas. En este caso las tablas se van a relacionar sobre aquellas columnas que tengan el mismo nombre. Por lo tanto, sólo deberíamos utilizar una composición de tipo NATURAL LEFT JOIN cuando estemos seguros de que los nombres de las columnas sobre las que quiero relacionar las dos tablas se llaman igual en las dos tablas. 1.3 El orden en las tablas no afecta al resultado final Estas dos consultas devuelven el mismo resultado: SELECT * FROM empleado INNER JOIN departamento ON empleado.codigo_departamento = departamento.codigo SELECT * FROM departamento INNER JOIN empleado ON empleado.codigo_departamento = departamento.codigo José Juan Sánchez Hernández 15
  • 17. Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020 1.4 Podemos usar alias en las tablas SELECT * FROM empleado AS e INNER JOIN departamento AS d ON e.codigo_departamento = d.codigo SELECT * FROM empleado e INNER JOIN departamento d ON e.codigo_departamento = d.codigo 1.5 Unir tres o más tablas Ejemplo: SELECT * FROM cliente INNER JOIN empleado ON cliente.codigo_empleado_rep_ventas = empleado.codigo_empleado INNER JOIN pago ON cliente.codigo_cliente = pago.codigo_cliente; 1.6 Utilizar la misma tabla varias veces TODO 1.7 Unir una tabla consigo misma (self-equi-join) Para poder hacer una operación de INNER JOIN sobre la misma tabla es necesario utilizar un alias para la tabla. AcontinuaciónsemuestraunejemplodelasdosformasposiblesdehacerunaoperacióndeINNER JOIN sobre la misma tablas haciendo uso de alias. Ejemplo: SELECT empleado.nombre, empleado.apellido1, empleado.apellido2, jefe.nombre, jefe. apellido1, jefe.apellido2 FROM empleado INNER JOIN empleado AS jefe ON empleado.codigo_jefe = jefe.codigo_empleado José Juan Sánchez Hernández 16
  • 18. Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020 SELECT empleado.nombre, empleado.apellido1, empleado.apellido2, jefe.nombre, jefe. apellido1, jefe.apellido2 FROM empleado INNER JOIN empleado jefe ON empleado.codigo_jefe = jefe.codigo_empleado 1.8 Uniones equivalentes (equi-joins) y Uniones no equivalentes (non- equi-joins) TODO José Juan Sánchez Hernández 17
  • 19. Capítulo 2 Errores comunes 1. Nos olvidamos de incluir en el WHERE la condición que nos relaciona las dos tablas. Consulta incorrecta SELECT * FROM producto, fabricante WHERE fabricante.nombre = 'Lenovo'; Consulta correcta SELECT * FROM producto, fabricante WHERE producto.codigo_fabricante = fabricante.codigo AND fabricante.nombre = ' Lenovo'; 2. Nos olvidamos de incluir ON en las consultas de tipo INNER JOIN. Consulta incorrecta SELECT * FROM producto INNER JOIN fabricante WHERE fabricante.nombre = 'Lenovo'; Consulta correcta SELECT * FROM producto INNER JOIN fabricante ON producto.codigo_fabricante = fabricante.codigo WHERE fabricante.nombre = 'Lenovo'; 18
  • 20. Unidad Didáctica 6. Consultas sobre varias tablas. Composición interna y cruzadaIES Celia Viñas (Almería) - 2019/2020 3. Relacionamos las tablas utilizando nombres de columnas incorrectos. Consulta incorrecta SELECT * FROM producto INNER JOIN fabricante ON producto.codigo = fabricante.codigo; Consulta correcta SELECT * FROM producto INNER JOIN fabricante ON producto.codigo_fabricante = fabricante.codigo; 4. Cuando hacemos la intersección de tres tablas con INNER JOIN nos olvidamos de incluir ON en alguna de las intersecciones. Consulta incorrecta SELECT DISTINCT nombre_cliente, nombre, apellido1 FROM cliente INNER JOIN empleado INNER JOIN pago ON cliente.codigo_cliente = pago.codigo_cliente; Consulta correcta SELECT DISTINCT nombre_cliente, nombre, apellido1 FROM cliente INNER JOIN empleado ON cliente.codigo_empleado_rep_ventas = empleado.codigo_empleado INNER JOIN pago ON cliente.codigo_cliente = pago.codigo_cliente; José Juan Sánchez Hernández 19
  • 21. Capítulo 3 Referencias • Wikibook SQL Exercises. • Tutorial SQL de w3resource. • MySQL Join Types by Steve Stedman. • Guía visual de SQL Joins. • Bases de Datos. 2ª Edición. Grupo editorial Garceta. Iván López Montalbán, Manuel de Castro Vázquez y John Ospino Rivas. • INNER JOIN. • LEFT JOIN. • RIGHT JOIN. 20
  • 22. Capítulo 4 Licencia Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Inter- nacional. 21