Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Tema3 A Lenguaje SQL Consultas Basicas Ver02

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 32

UPTTMBI-PNFI- Electiva 1-- Tema2-Modelo Relacional, Introducción SQL (2023-2)

Introducción al Lenguaje SQL

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.

El nombre SQL significa Lenguaje de Consulta Estructurado


(Structured Query Language). Originalmente, SQL se denominaba
SEQUEL (Structured English QUEry Language) y fue diseñado e
implementado por IBM Research a modo de interfaz para un
sistema de base de datos relacional conocido como SYSTEM R.

SQL es ahora el lenguaje estándar de los DBMSs relacionales comerciales. Un esfuerzo


conjunto llevado a cabo por el Instituto nacional americano de normalización (ANSI,
American National Standards Institute) y la Organizacón internacional para la
normalización (ISO, International Standards Organization) llevó a una versión estándar de
SQL (ANSI 1986), denominada SQL-86 o SQL1. A continuación se desarrolló un estándar
revisado y mucho más amplio, SQL2 (también conocido como SQL-92). El siguiente
estándar fue SQL-99.

Se han propuesto otros estándares, como SQL3, pero no han gozado de suficiente
respaldo por parte de la industria.

3.2 Características del Lenguaje SQL


Grupos principales de comandos del Lenguaje SQL

Comandos
SQL

DDL DML DCL TCL

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)

- DDL (Lenguaje de Definición de Datos/Data Definition Language)


Proporciona comandos para la definición de esquemas de relación (tablas). Estos
comandos se utilizan para crear o modificar la estructura de una base de datos.
Permite crear o eliminar Tablas (relaciones), modificar la estructura de las Tablas,
por ejemplo, agregar campos (atributos), eliminar campos (atributos) e incluye
comandos para definir las vistas.

- DCL (Lenguaje de Control de Datos/Data Control Language)


Estos comandos se utilizan para proporcionar SEGURIDAD a la INFORMACIÓN en la
Base de Datos.

- TCL (Lenguaje de Control de Transacciones/Transaction Control Languaje)


Estos comandos se utilizan para la gestión de los cambios en los datos.

- DML (Lenguaje de Manipulación de Datos/Data Manipulation Language)


Incluye lenguajes de consultas. Estos comandos se utilizan para seleccionar
(consultar) registros (filas, tuplas) de una Base de Datos BBDD, también para
INSERTAR nuevos registros, ACTUALIZAR, borrar información, en resumen, estos
comandos DML se utilizan para realizar consultas de SELECCIÓN y de ACCION.

Detalle de comandos SQL por cada grupo principal


Comandos
SQL

DDL DML DCL TCL

CREATE ALTER SELECT INSERT GRANT COMMI

DROP TRUNCATE UPDATE DELETE REVOKE ROLLBAC

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:

InstrucciónSQL= { Comando+Cláusulas+Operadores+ Funciones }

Uniendo todos los elementos forman una instrucción SQL, lo mínimo


sería:
Instrucción SQL= { Comando+Cláusula }

3.3 Consultas Básicas en SQL


SQL tiene una sentencia básica para recuperar información de una base de
datos: SELECT.

En SQL hay muchas opciones y versiones de la sentencia SELECT, por lo que


hay que ir introduciendo sus características gradualmente.

Utilizaremos las consultas de ejemplo que antes habíamos considerado de


una EMPRESA, aquí consideramos de nuevo primero su esquema de relación
( Fig 3.1), y sus tablas (Fig2) para poder luego verificar más fácilmente los
resultados obtenidos mediante el uso de los comandos SQL.

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)

Fig1: Esquema de la base de datos EMPRESA


-------------------------------------------------------------------------------------------------------------------

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)

Anteriormente cuando se abordó el Modelo Relacional en el Tema2, se dijo


que dos filas (tuplas) no podían ser idénticas, pero en la práctica el SQL de los
SGBD comerciales permiten que una tabla (relación) tenga dos o más tuplas
idénticas en todos sus valores de atributo, esto se dice como aclaratoria ya
que en la teoría del MODELO RELACIONAL esto no se permite.

Por tanto, en general, siendo rigurosos una tabla SQL no es un conjunto de


tuplas, porque un conjunto no permite dos miembros idénticos; en su lugar,
es un multiconjunto (a veces conocido como bolsa) de tuplas.

Algunas relaciones SQL están restringidas a ser conjuntos porque se ha


declarado una restricción de clave o porque se ha utilizado la opción
DISTINCT (dentro de una sentencia SELECT y que no permite duplicados
como resultado de una consulta). Debemos ser conscientes de esta distinción
durante la explicación de los ejemplos. Existe también en MySQL,
DISTINCTROW que tiene la misma finalidad de evitar duplicados, ya que
MySQL permite que una tabla duplique la misma clave inclusive.

3.3.1 Estructura SELECT-FROM-WHERE de las consultas básicas de SQL


La forma básica de la sentencia SELECT, está formada por las cláusulas
SELECT, FROM y WHERE y tiene la siguiente forma:

SELECT <lista de atributos>


FROM <lista de tablas>
WHERE <condición>;

Donde:
<lista de atributos> es una lista de los atributos (columnas) cuyos
valores serán recuperados por la consulta.

<lista de tablas> es una lista de las relaciones (tablas) necesarias para


procesar la consulta.

<condición> es una expresión condicional (booleana) que identifica las


tuplas que la consulta recuperará, aquí se pueden usar

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)

uno o más de los operadores siguientes: { =, <, <=, >, >=, !


=}
Notar que la cláusula WHERE requiere dependiendo de los requisitos de la
consulta del uso de uno o más Operadores de comparación:

Operadores de Comparación (en la cláusula WHERE)


Tipo de operador Descripción
= Igual a
< Menor que
<= Menor o igual que
> Mayor que
>= Mayor o igual que
!= Diferente a

Además, dependiendo de los requerimientos se hace necesario combinar los


operadores de comparación con uno o más operadores lógicos:

Operadores Lógicos (en la cláusula WHERE)


Tipo de operador Descripción
and Y-Lógico
or O-Lógico
not Negación

A continuación, vamos a ilustrar la sentencia SELECT básica con algunos


ejemplos.

Cuando no utilizamos la cláusula WHERE estamos indicándole a SQL que


queremos considerar que muestre todas las filas de la tabla en la consulta
para la <lista de atributos> indicada.

SELECT <lista de atributos>


FROM <lista de tablas>

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:

SELECT nombre, apellido1, apellido2


FROM EMPLEADO;

o también podemos expresarla en una misma línea como sigue:


SELECT nombre, apellido1, apellido2 FROM EMPLEADO

Nota: los dos puntos al final no son obligatorios.

El resultado de la consulta (en MySQL) sería:

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 Nombre, Apellido1, Apellido2, Dni, FechaNac, Dirección, Sexo,


Sueldo, SuperDni, Dno
FROM EMPLEADO
WHERE sexo = ’H’

o también podemos indicar que consideraremos todos los atributos de la


tabla EMPLEADO mediante el comodín (*) y es evidente que trabajamos
menos:

SELECT *
FROM EMPLEADO
WHERE Sexo = ’H’

El resultado de la consulta (en MySQL) sería:

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’

El resultado de la consulta (en MySQL) sería:

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’

El resultado de la consulta (en MySQL) sería:

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)

o también podemos usar el operador between cuya sintaxis es la siguiente:

WHERE atibuto  BETWEEN valor1 AND valor2

Dependiendo del tipo de datos de atributo, se pueden manejar


valores numéricos o de tipo fecha:

SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;

En nuestro caso (Ejemplo #4), sería:


SELECT *
FROM DEPARTAMENTO
WHERE FechaIngresoDirector between ‘1981-01-01’ and ‘1988-12-31’

El resultado de la consulta (en MySQL) sería:

Observa que da la misma respuesta que la expresión anterior ambas son


válidas y cualquiera de las dos puedes usarla según tu criterio.

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)

3.3.2 Consultas de AGRUPACIÓN o TOTALES en SQL


Consideramos las siguientes clausulas:
Cláusula Descripción
FROM Especifica la tabla de la que se
quieren obtener los registros
WHERE Especifica las condiciones o criterios
de los registros seleccionados
ORDER BY Ordena los registros seleccionados
en función de un campo
GROUP BY Para agrupar los registros
seleccionados en función de un
campo:

HAVING Especifica las condiciones o criterios


que deben cumplir los grupos

3.3.2.a CLAUSULA ORDER BY:


Consideremos la tabla PROYECTO

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

El resultado de la consulta (en MySQL) sería:

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

Aquí le agregamos al final de ORDER BY campo DESC


Solución:
SELECT NombreProyecto, UbicacionProyecto
FROM PROYECTO
WHERE UbicacionProyecto=’Madrid’ or UbicacionProyecto=’Gijón’
ORDER BY UbicacionProyecto DESC

El resultado de la consulta (en MySQL) sería:

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

Aquí le agregamos al inicio el Número del Proyecto al final de ORDER BY los


dos campos involucrados
Solución:
SELECT NombreProyecto, UbicacionProyecto, NumProyecto
FROM PROYECTO
WHERE UbicacionProyecto=’Madrid’ or UbicacionProyecto=’Gijón’
ORDER BY UbicacionProyecto, NumProyecto

El resultado de la consulta (en MySQL) sería:

Nota: En este caso le estamos diciendo que ordene primero por


UbicacionProyecto y luego de ordenado este último ordene por
NumProyecto.

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

El resultado de la consulta (en MySQL) sería:

Nota: Inclusive pueden establecerse 3, 4 o 5 criterios de ordenación.

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)

3.3.2.b CONSULTAS DE GROUP BY (Agrupación o TOTALES)


Aquí lo que se hace es realizar cálculos por grupos, se agrupan varios campos
de una tabla y una vez agrupados se realizan cálculos con ellos, por ejemplo,
conteo de cuantos proyectos hay en Madrid, la media para saber el sueldo
medio de algunos empleados, entre otros.

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.

Para estas consultas se necesita un CAMPO de AGRUPACION, y un CAMPO de


CALCULO.
Aquí se usan las funciones de Agregado, que son las siguientes:
Función Descripción
A1 AVG Calcula el promedio de un
campo.
A2 COUNT Cuenta los registros de un
campo
A3 SUM Suma los valores de un
campo
A4 MAX Devuelve el máximo de
un campo
A5 MIN Devuelve el mínimo de un
campo

Para esta sección consideremos nuevamente la tabla EMPLEADO, ya que


presenta diversos tipos de datos y un cierto número de registros a fin de
establecer ejemplos de aplicación de algunas de estas Funciones de
agregado.

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)

Consideremos la tabla EMPLEADO:

EJEMPLO #6-1 –FUNCION SUM()


Se desea realizar una consulta para mostrar la suma total de los sueldos de
los empleados que son hombres y que son mujeres

Solución:
SELECT sexo, sum(sueldo)
FROM EMPLEADO
GROUP BY sexo

El resultado de la consulta (en MySQL) sería:

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)

EJEMPLO #6-2 – FUNCION AVG(), ordenando mediante un campo ALIAS


Se desea realizar una consulta para mostrar la suma total de los sueldos de
los empleados que son hombres.

Solución:
SELECT sexo, AVG(sueldo) AS promedio_sueldo
FROM EMPLEADO
GROUP BY sexo
HAVING sexo=’H’
ORDER BY promedio_sueldo

El resultado de la consulta (en MySQL) sería:

Nota: El HAVING se utiliza cuando estamos agrupando GROUP BY y


necesitamos tambiém utilizar WHERE, en este caso HAVING sustituye al
WHERE.

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)

EJEMPLO #6-3 – FUNCION AVG(), Calculo de promedio AVG ordenando


mediante un campo ALIAS, Y FORMATEO DE SALIDA A DOS DECIMALES.

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;

El resultado de la consulta (en MySQL) sería:

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)

EJEMPLO #6-5 – FUNCION COUNT(), Calculo de conteo mediante COUNT()

Se desea realizar una consulta para mostrar cuantos empleados son


hombres y cuántos empleados son mujeres

Solución:
SELECT sexo, COUNT(Dni) AS TOTAL
FROM EMPLEADO
GROUP BY sexo;

El resultado de la consulta (en MySQL) sería:

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)

EJEMPLO #6-6 – FUNCION MAX(), Calculo del máximo de un campo

Se desea realizar una consulta para mostrar cual es el mayor sueldo


hombre y de mayor sueldo mujer

Solución:
SELECT sexo, MAX(sueldo) AS MAX_SUELDO
FROM EMPLEADO
GROUP BY sexo;

Campo para agrupar: sexo


Campo para operar: sueldo

El resultado de la consulta (en MySQL) sería:

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)

EJEMPLO #6-7 – FUNCION MIN(), Calculo del mínimo de un campo

Se desea realizar una consulta para mostrar cual es el menor sueldo


hombre y de menor sueldo mujer

Solución:
SELECT sexo, MIN (sueldo) AS MIN_SUELDO
FROM EMPLEADO
GROUP BY sexo;

Campo para agrupar: sexo


Campo para operar: sueldo

El resultado de la consulta (en MySQL) sería:

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)

3.3.2.c CONSULTAS DE CALCULO


A diferencia de las consultas de grupo que vimos anteriormente, las
consultas de CALCULO se realizan sobre registros individuales, no sobre
grupos como las hicimos en la sección anterior.
Es frecuente pero no obligatorio que en esas consultas de calculo se utilicen
funciones SQL.
Las funciones SQL se salen del estándar SQL porque cada gestor de base de
datos SGBD tiene sus propias funciones, Access con las suyas, de igual
manera MySQL y ORACLE, aunque hay funciones que son comunes a muchas
de ellas.

Aquí se usan las funciones de Agregado, que son las siguientes:


Función Descripción
B1 Now() Día y hora actuales en el sistema al momento de
hacer la consulta.
B2 Datediff() Diferencia que hay entre dos fechas. Días, meses,
años de diferencia entre dos fechas.
B3 Date_format() Permite formatear resultados, suprimir decimales,
para redondear, etc., aunque hay otras funciones
para este fin como ROUND(), TRUNCATE().
B4 Concat() Concatenar cadenas de texto.

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)

EJEMPLO #7.1 –Campo calculado

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

El resultado de la consulta (en MySQL) sería:

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)

EJEMPLO #7.2 –Campo calculado

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

El resultado de la consulta (en MySQL) sería:

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)

EJEMPLO #7.3 –Campo calculado con funciones de fecha: Now()

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

El resultado de la consulta (en MySQL) sería:

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)

EJEMPLO #7.4 –Campo calculado con funciones de fecha: Now(), Datediff()

Como segundo 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(), y adicionalmente la diferencia de fechas
usando la función Datediff(Fecha1_mas actual, fecha2).
Solución:
Nota Aparte: La función Datediff(), requiere ciertos argumentos
dependiendo del gestor de base de datos SGBD que estamos utilizando, por
ejemplo con Access se requieren tres argumentos, DateDiff (‘D’, Fech1,
fech2) para diferencia en días, DateDiff (‘M’, Fech1, fech2) para diferencia en
meses y DateDiff (‘YYYY’, Fech1, fech2) para diferencia en años. Pero en
MySQL se usan solo dos argumentos, DateDiff (, Fech1, fech2).
SELECT nombre, apellido1, apellido2, fechaNac, now() as FECHA_HOY,
datediff(now(), FechaNac) as Hoy_vs_FechNac
FROM EMPLEADO

NOTA: en la función DateDiff(), es necesario colocar la funcion Now() en lugar


del campo alias FECHA_HOY, ya que este último no lo toma.

El resultado de la consulta (en MySQL) sería:

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)

EJEMPLO #7.6 –Campo calculado con funciones de fecha: Now(), Datediff()

Como cuarto ejemplo con cálculos de fecha, suponga que queremos


calcular el número de años de la persona en base a los días de diferencia.
Solución:
SELECT nombre, apellido1, apellido2, fechaNac, format(datediff(now(), Fec
haNac)/365,0) as Edad FROM EMPLEADO;

El resultado de la consulta (en MySQL) sería:

PNF-Ing en Informática -Trayecto 1-ELECTIVA_1: Prof Ing. Esp. Manuel Calistri R – ver 01 --2023 32

También podría gustarte