Tema3 A Lenguaje SQL Consultas Basicas Ver02
Tema3 A Lenguaje SQL Consultas Basicas Ver02
Tema3 A Lenguaje SQL Consultas Basicas Ver02
3.1 Introducción
El lenguaje SQL se puede considerar como una de las principales
razones del éxito comercial de las bases de datos relacionales.
Se han propuesto otros estándares, como SQL3, pero no han gozado de suficiente
respaldo por parte de la industria.
Comandos
SQL
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 1
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 2
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
SAVEPOI
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 3
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
Clausulas
FROM
Instrucción SQL
WHERE GROUP BY HAVING ORDER BY
Una Instrucción SQL que permita obtener información de una base de
datos o modificar la información que hay en una base de datos seria la
unión de varios componentes, no todos son obligatorios, depende del
caso:
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 4
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 5
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
Fig 3.2 Posible estado de la misma base de datos EMPRESA en un momento determinado:
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 6
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
Donde:
<lista de atributos> es una lista de los atributos (columnas) cuyos
valores serán recuperados por la consulta.
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 7
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 8
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
EJEMPLO #1
Se desea realizar una consulta para recuperar el nombre, y apellidos de
cada empleado
Solución:
Los requerimientos de esta consulta sugieren que debemos dirigirnos
específicamente a la tabla EMPLEADO y establecer con ella la expresión SQL
que nos dará la respuesta deseada, debemos notar que cuando se nos dice
“de cada empleado”, se refiere a todos los empleados:
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 9
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
Nota:
Si observas más arriba en la tabla EMPLEADO en la Fig 3.2, notarás que
presenta un total de 8 filas, al igual que el resultado de la consulta anterior ya
que no filtramos filas a través de la cláusula WHERE.
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 10
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
EJEMPLO #2
Se desea realizar una consulta para recuperar todos los datos de los
empleados pero que sean hombres
Solución:
Los requerimientos de esta consulta sugieren que debemos dirigirnos
específicamente a la tabla EMPLEADO ya que la misma contiene los datos de
estos, y entre sus atributos se encuentra la columna Sexo, y estamos
interesados en seleccionar solo aquellos que sean hombres (H).
SELECT *
FROM EMPLEADO
WHERE Sexo = ’H’
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 11
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
EJEMPLO #3
Se desea realizar una consulta para recuperar todos los datos de un
empleado en la tabla EMPLEADO identificado por: José Pérez Pérez.
Solución:
Los requerimientos de esta consulta sugieren que debemos dirigirnos
específicamente a la tabla EMPLEADO ya que la misma contiene los datos de
estos, y seleccionar de todas las filas de la tabla aquella que contiene los
datos del empleado cuyo conjunto de atributos: Nombre y Apellido1 y
Apellido2 coinciden con los datos señalados permitiendo así diferenciarlo del
resto e empleados en la tabla, y además mostrar todos los atributos (o
columnas).
SELECT *
FROM EMPLEADO
WHERE Nombre = ’José’ and Apellido1 = ’Pérez’ and Apellido2 = ’Pérez’
Notar:
Aquí se usa AND-Lógico y no OR-Lógico, si se aplicara OR el resultado sería
todos los empleados cuyo primer nombre es ‘José’, adicionalmente todos los
empleados cuyo primer apellido es ‘Perez’, adicionalmente todos los
empleados cuyo segundo apellido es ‘Perez’, lo cual pudiera resultar en una
tabla que tenga muchos empleados, más de un empleado como respuesta a
esta consulta, por supuesto también estaría en el resultado de la consulta
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 12
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
aquel empleado que estamos buscando, pero en este caso queremos solo un
empleado como respuesta a la consulta.
Una conclusión adicional, es que siempre nos podremos encontrar una Base
de Datos donde existan tablas donde un solo atributo no es suficiente para
diferenciar cada fila de la misma y hay que recurrir a hacer coincidir más de
un atributo (columna) utilizando el operador AND-lógico.
EJEMPLO #4
Se desea realizar una consulta para mostrar el Nombre del Departamento,
Numero de departamento, DNI del Director y Fecha de ingreso del director,
para aquellos departamentos cuya fecha de ingreso del director se
encuentra comprendida entre 01-01-1981 y 31-12-1988
Solución:
Los requerimientos de esta consulta sugieren que debemos dirigirnos
específicamente a la tabla DEPARTAMENTO ya que la misma contiene todos
los datos solicitados, y seleccionar de todas las filas de la tabla aquella cuya
FechaIngresoDirector está comprendida entre 1981-01-01 y 1988-12-31 (en
MySQL para las fechas usamos el orden yyyy-mm-dd, es decir año, mes, dia).
En la consulta debemos mostrar todos los atributos de la tabla.
SELECT *
FROM DEPARTAMENTO
WHERE FechaIngresoDirector >= ‘1981-01-01’ and
FechaIngresoDirector <= ‘1988-12-31’
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 13
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
WHERE atibuto BETWEEN valor1 AND valor2
SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 14
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 15
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
EJEMPLO #5
Se desea realizar una consulta para mostrar el Nombre del proyecto, y la
ubicación del proyecto que sea de Madrid o Guijón ordenado por ubicación
del proyecto
Solución:
SELECT NombreProyecto, UbicacionProyecto
FROM PROYECTO
WHERE UbicacionProyecto=’Madrid’ or UbicacionProyecto=’Gijón’
ORDER BY UbicacionProyecto
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 16
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
EJEMPLO #5-B
Se desea realizar una consulta para mostrar el Nombre del proyecto, y la
ubicación del proyecto que sea de Madrid o Guijón ordenado
descendentemente por ubicación del proyecto
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 17
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
EJEMPLO #5-c
Se desea realizar una consulta para mostrar el Nombre del proyecto, y la
ubicación del proyecto y el Número del Proyecto que sea de Madrid o
Guijón ordenado primero por ubicación del proyecto y luego por Numero
del Proyecto
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 18
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
EJEMPLO #5-d
Se desea realizar una consulta para mostrar el Nombre del proyecto, y la
ubicación del proyecto y el Número del Proyecto que sea de Madrid o
Guijón ordenado primero por ubicación del proyecto y luego por Numero
del Proyecto, en orden descendente
Solución:
SELECT NombreProyecto, UbicacionProyecto, NumProyecto
FROM PROYECTO
WHERE UbicacionProyecto=’Madrid’ or UbicacionProyecto=’Gijón’
ORDER BY UbicacionProyecto, NumProyecto DESC
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 19
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
Todas estas consultas en la que hay que hacer una agrupación y un cálculo se
hacen con estas cláusulas de agrupación o Totales.
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 20
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
Solución:
SELECT sexo, sum(sueldo)
FROM EMPLEADO
GROUP BY sexo
30,000
40,000
38,000
25,000
55,000
188,000
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 21
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
Solución:
SELECT sexo, AVG(sueldo) AS promedio_sueldo
FROM EMPLEADO
GROUP BY sexo
HAVING sexo=’H’
ORDER BY promedio_sueldo
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 22
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
Se desea realizar una consulta para mostrar la suma total de los sueldos de
los empleados que son hombres y mujeres. Formatear la salida numérica a
dos decimales.
Solución:
SELECT sexo, FORMAT(AVG(sueldo), 2) AS promedio_sueldo
FROM EMPLEADO
GROUP BY sexo
ORDER BY promedio_sueldo;
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 23
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
Solución:
SELECT sexo, COUNT(Dni) AS TOTAL
FROM EMPLEADO
GROUP BY sexo;
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 24
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
Solución:
SELECT sexo, MAX(sueldo) AS MAX_SUELDO
FROM EMPLEADO
GROUP BY sexo;
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 25
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
Solución:
SELECT sexo, MIN (sueldo) AS MIN_SUELDO
FROM EMPLEADO
GROUP BY sexo;
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 26
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
Las consultas de cálculo nos periten hacer consultas que realicen algún
cálculo respecto de los valores originales de un campo de una tabla.
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 27
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
Suponga que quiere ver el sueldo original para todos los empleados, y en
otra columna el aumento de sueldo general calculado en base a un 22.33%.
Adicionalmente deseamos usar la función ROUND() en este caso para
redondear a dos decimales el aumento del sueldo calculado
Solución:
SELECT nombre, sueldo, ROUND(SUELDO*1.2233, 2) AS
SUELDO_MAS_2233_PORCIENTO
FROM empleado
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 28
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
Suponga que quiere ver el sueldo original para todos los empleados, y en
otra columna el mismo sueldo, pero con una deducción de 500.
Solución:
SELECT nombre, sueldo, (SUELDO-500) AS SUELDO_CON_DESCUENTO_500
FROM empleado
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 29
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
Como primer ejemplo con cálculos de fecha, suponga que se quiere ver
para todos los empleados su nombre y apellidos, así como también su
fecha de nacimiento y al lado a manera de comparación la fecha de hoy
utilizando la función Now().
Solución:
SELECT nombre, apellido1, apellido2, fechaNac, now() as FECHA_HOY
FROM empelado
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 30
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 31
UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)
PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 32