06 ConsultasSQL
06 ConsultasSQL
Control de Gestión
v Cada consulta debe tener una cláusula SELECT y otra FROM, pero la
cláusula WHERE es opcional.
Consultas (cont.)
Pedro Gómez 26
Juan Muñoz 25
Marta Figueroa 34
Mario González 27
Ximena Gómez 18
Uso de DISTINCT
v Para poder realizar consultas a más de una tabla, se deben realizar una
condición donde se igualen las clave primaria de una de ellas y la clave
foránea de la otra tabla.
SELECT columnas
FROM tabla1, tabla2
WHERE tabla1.columna= tabla2.columna
SELECT columnas
FROM tabla1
JOIN tabla2 ON tabla1.columna= tabla2.columna
Uso de JOIN (cont.)
Uso de alías
SELECT C.Nombre , A.Nombre
FROM Curso C
JOIN Nota N ON C.Idc=N.IdC
JOIN Alumno A ON A.IdA=N.IdA
Operador: BETWEEN
SELECT columnas
FROM tablas
WHERE nombre_columna BETWEEN valor1 AND valor2
v Ejemplo:
SELECT Nombre, Apellido, Edad
FROM ALUMNO
WHERE Edad BETWEEN 20 AND 35;
Operador: LIKE
SELECT columnas
FROM tablas
WHERE nombre_columna LIKE (patron)
v Ejemplo
SELECT Nombre, Apellido, Edad
FROM ALUMNO
WHERE Nombre LIKE (‘%am%’);
Operaciones con consultas
v Sintaxis
Consulta 1
UNION
Consulta 2
UNION
…
Consulta N
Ejemplo de UNION
v Esquema:
§ Empleado_partime(rut, nombre, edad, n°horas, salario)
§ Empleado_Full (rut, nombre, titulo, salario).
v El operador IN, forma una condición donde se sabe que valores exactos
se deben cumplir. Es decir verifica si un elemento esta en un conjunto
dado, los que pueden ser valores o el resultado de una consulta
SELECT columnas
FROM tablas
WHERE nombre_columna IN (valor1,.. , valorn)
v Del mismo modo, el operador NOT IN, lista los elementos que no están
en un cojunto dado, pudiendo ser ser valores o el resultado de una
consulta
SELECT columnas
FROM tablas
WHERE nombre_columna NOT IN (valor1,.. , valorn)
v Una consulta anidada es una consulta que tiene otra consulta embebida
dentro de ella.
§ La segunda consulta es llamada sub-consulta
§ Esta sub-consulta puede, a su vez, tener una consulta anidada
§ Una sub-consulta generalmente aparece en la cláusula WHERE, pero
también pueden aparecer en la cláusula FROM o en la cláusula
HAVING
Ejercicio en SQL
v Solución:
SELECT N.nombre
FROM Navegante N
WHERE N.idn IN (SELECT R.idn
FROM Reserva R
WHERE R.idb IN (
SELECT B.idb
FROM Bote B
WHERE B.color = 'rojo'));
Ejercicio (Q4)
v Solución:
SELECT N.nombre
FROM Navegantes N
WHERE N.idn NOT IN (SELECT R.idn
FROM Reservas R
WHERE R.idb IN ( SELECT B.idb
FROM Botes B
WHERE B.color = 'rojo’));
¿Qué computan las siguientes consultas?
SELECT N.nombre
FROM Navegantes N
WHERE N.idn IN (SELECT R.idn
FROM Reservas R
WHERE R.idb NOT IN (SELECT B.idb
FROM Botes B
WHERE B.color = 'rojo'));
SELECT N.nombre
FROM Navegantes N
WHERE N.idn NOT IN (SELECT R.idn
FROM Reservas R
WHERE R.idb NOT IN (SELECT B.idb
FROM Botes B
WHERE B.color = 'rojo'));
Ingeniería en Información y
Control de Gestión