Base de Datos - SQL 1
Base de Datos - SQL 1
Practica N° 5
TablaA y TablaB
Id name id name
1 Pirate 1 Rutabaga
2 Monkey 2 Pirate
3 Ninja 3 Darth Vader
4 Spaghetti 4 Ninja
TablaA TablaB
Select Sintaxis
SELECT select_list [ INTO new_table ]
FROM table_source
[WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
Ejemplos de select
• select * from TablaA
Id name id name
1 Pirate 1 Rutabaga
2 Monkey 2 Pirate
3 Ninja 3 Darth Vader
4 Spaghetti 4 Ninja
TablaA TablaB
Joins explícitos: Inner join
• Inner join solo produce un conjunto de
registros que coincidan en ambas tablas.
Id name id name
1 Pirate 2 Pirate
3 Ninja 4 Ninja
TablaA inner join TablaB on TablaA.name=TablaB.name
Joins explícitos: left join
• Left join produce un conjunto completo de
registros de TablaA, con los registros (donde
estén disponibles) que coincidan en TablaB. Si
no coinciden se coloca NULL en el lado
derecho.
Joins explícitos: left join
SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
Joins explícitos: left join
Id name id name
1 Pirate 1 Rutabaga
2 Monkey 2 Pirate
3 Ninja 3 Darth Vader
4 Spaghetti 4 Ninja
Tabla A Tabla B
Id name id name
1 Pirate 2 Pirate
2 Monkey Null Null
3 Ninja 4 Ninja
4 Spaghetti Null Null
TablaA left join TablaB on TablaA.name=TablaB.name
Joins explícitos: left join
SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableB.id IS null
Joins explícitos: left join
Id name id name
1 Pirate 1 Rutabaga
2 Monkey 2 Pirate
3 Ninja 3 Darth Vader
4 Spaghetti 4 Ninja
Tabla A Tabla B
Id name id name
2 Monkey Null Null
4 Spaghetti Null Null
TablaA left join TablaB on TablaA.name=TablaB.name where TablaB.id is null
Joins explícitos: full join
• Full join produce un conjunto de todos los
registros de la TablaA y TablaB, donde
coincidan ambos lados cuando este
disponible. Si no hay coincidencia en uno de
los lados contendrá Null.
Joins explícitos: full join
SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
Joins explícitos: full join
Id name id name
1 Pirate 1 Rutabaga
2 Monkey 2 Pirate
3 Ninja 3 Darth Vader
4 Spaghetti 4 Ninja
Tabla A Tabla B
id name Id name
1 Pirate 2 Pirate
2 Monkey Null Null
3 Ninja 4 Ninja
4 Spaghetti Null Null
Null Null 1 Rutabaga
Null Null 3 Darth Vader
TablaA full join TablaB on TablaA.name=TablaB.name
SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableA.id IS null OR TableB.id IS null
Joins explícitos: cross join
• Cross join genera el producto cartesiano de
ambas tablas.
• Esto une todos los registros de la TablaA con la
TablaB. Si la TablaA tiene 4 registros y la
TablaB tiene 5 registros, el producto
cartesiano producirá 5x4 = 20 registros.
Operaciones de conjuntos
Operaciones de conjuntos: Union
• El operador UNION combina la salida de 2
queries y retorna todos los registros del
primer query y del segundo query. Sin
registros repetidos.
Operaciones de conjuntos: UNION
Id name id name
Ejemplo: 1 Pirate 1 Rutabaga
select * from TablaA 2 Monkey 2 Pirate
union 3 Ninja 3 Darth Vader
4 Spaghetti 4 Ninja
select * from TablaB
TablaA TablaB
Id name
1 Pirate
2 Monkey
3 Ninja
1 Rutabaga
2 Pirate
3 Darth Vader
4 Ninja
Operaciones de conjuntos: INTERSECT
Id name
1 Pirate
2 Monkey
3 Ninja
4 Spaghetti
TablaA