Está en la página 1de 7

Trabajo Práctico para el receso sanitario – 3er año informática

Informática Aplicada a la Empresa III.


Crear la base de datos escuela con dos tablas alumnos y notas, relacionadas como indica
la figura. Cargar datos para 10 alumnos y el promedio de cada trimestre. Trabajar el apunte
con dicho archivo.
Consultas: marcela.loccisano@gmail.com
Entrega: Primer clase después de las vacaciones.
SQL: lenguaje de consulta estructurado

Existen numerosas versiones de SQL. Este lenguaje originalmente fue llamado Sequel
(década del ’70), que ha evolucionado cambiando su nombre a SQL (Structured Query
Languaje o lenguaje de consulta estructurado). Access es capaz de soportar este lenguaje.
La estructura básica de una expresión en SQL consta de tres cláusulas: SELECT, FROM y
WHERE.

La cláusula SELECT se usa para mostrar los


campos que se quieran del total de la base de datos.
Apliquémoslo a un ejemplo: tenemos una tabla
Alumnos, con los datos del mismo (nombre y año que
cursa) y Notas, en la que se registra la calificación de
los tres trimestres por alumno. Ver figura

Si quisiéramos ver todos los alumnos de la tabla


Alumnos la sentencia será:

SELECT NOMBRE
FROM ALUMNOS

O sea que Select significa mostrar, y FROM de que tabla. Si se trabaja con varias tablas
en el SELECT el nombre del campo que se desea mostrar deberá ir antecedido por el nombre
de la tabla.
Por ejemplo si quisiéramos mostrar el nombre del alumno, y su calificación en los tres
trimestres, sería:

SELECT ALUMNOS.NOMBRE, NOTAS.TRIMESTRE, NOTAS.CALIFICACION


FROM ALUMNOS, NOTAS;

La instrucción WHERE, significa “cuando”, es decir que se pueden mostrar registros que
tengan determinada condición. Por ejemplo, para ver los alumnos cuya calificación es menor a
4 sería:

SELECT ALUMNOS.NOMBRE, NOTAS.TRIMESTRE, NOTAS.CALIFICACION


FROM ALUMNOS, NOTAS
WHERE NOTAS.CALIFICACION < 5;

Si desea ver todos los alumnos con sus calificaciones y su promedio correspondiente,
pruebe con el asistente para consultas de referencia cruzada.

Existen otras sentencias, a saber:


DISTINCT: esta sentencia luego del SELECT hace que se muestren solo una vez los registros
repetidos. Por ejemplo si quiero ver solo los nombres de los alumnos y sin repetir,
la instrucción sería:

SELECT DISTINCT ALUMNOS.NOMBRE

(Nota: esto se nota si están incluídas las dos tablas).

AND: significa “y”. Por ejemplo, si quisiéramos los alumnos cuyas notas están entre 4 y 7
sería:

SELECT DISTINCT ALUMNOS.NOMBRE


FROM ALUMNOS, NOTAS
WHERE NOTAS.CALIFICACION > 3 AND NOTAS.CALIFICACION < 8;

AVG: calcula la media aritmética (comúnmente llamada promedio), por ejemplo si quisiera el
promedio para cada alumno la instrucción sería:

SELECT Alumnos.Nombre, Avg(Notas.Calificacion)AS[Promedio trimestral]


FROM Alumnos, Notas
where Alumnos.idalumno = notas.idalumno
GROUP BY Alumnos.Nombre;

Nota: es necesario igualar los registros para que concuerden las relaciones. (el por qué
de la línea 3).

GROUP BY: Combina en un único registro los registros con valores idénticos en la lista de
campos especificada. Se creará un valor de resumen para cada registro si incluye una
función agregada de SQL, como Sum o Count, en la instrucción SELECT.

SUM: calcula la suma de los registros situados en los campos indicados.

SQR: calcula la raíz cuadrada del campo indicado.

COUNT: cuenta la cantidad de registros alojados en los campos indicados.

MAX y MIN: devuelven el valor mínimo o máximo de un conjunto de valores contenidos en un


campo especificado de una consulta.

En el ejemplo se muestra la menor nota de cada alumno:

SELECT Alumnos.Nombre, min(Notas.calificacion) as [Menor nota]


FROM Alumnos, Notas
WHERE Alumnos.IdAlumno = Notas.IdAlumno
group by Alumnos.Nombre

Este otro ejemplo muestra el alumno que obtuvo la mejor nota:

SELECT DISTINCT Alumnos.Nombre, Notas.Calificacion


FROM Alumnos, Notas
WHERE Notas.IdAlumno = Alumnos.IdAlumno
AND Notas.Calificacion =
(select max(Notas.calificacion) as [Mayor nota] from Notas);

Y este otro el abanderado del curso (el mejor promedio):

Para esto se necesitan dos consultas, una para crear una tabla auxiliar con los promedios de
cada alumno:
SELECT IdAlumno, Avg(Calificacion) AS Promedio
INTO [Auxiliar_Promedios]
FROM Notas
GROUP BY Notas.IdAlumno;

Y con esta otra haríamos la pregunta:

SELECT DISTINCT Alumnos.Nombre, Auxiliar_Promedios.Promedio


FROM Alumnos, Notas, Auxiliar_Promedios
WHERE Notas.IdAlumno = Alumnos.IdAlumno
AND Notas.IdAlumno = Auxiliar_Promedios.IdAlumno
AND Auxiliar_Promedios.Promedio =
(select max(Auxiliar_Promedios.Promedio) as [Mayor promedio]
from Auxiliar_Promedios);

BETWEEN: determina si el valor de una expresión se encuentra entre un intervalo de valores


especificado. El siguiente ejemplo muestra el número de clientes que hayan hecho un
pedido entre el 4/1/99 y el 7/1/99

SELECT [ID de cliente]


FROM Pedidos
WHERE FechaPedido Between 04/1/99 And 07/1/95;

DELETE: Crea una consulta de eliminación que elimina registros de una o más tablas
enumeradas en la cláusula FROM y que cumplen la cláusula WHERE. El ejemplo
eliminaría todos los registros de los alumnos cuya calificación sea menor a 4.

DELETE * FROM ALUMNOS WHERE NOTAS.Calificacion < 4;

INSERT: Agrega uno o varios registros a una tabla. Esto se conoce como una consulta de
datos añadidos. En el ejemplo siguiente se crea un registro nuevo en la tabla Alumnos:

INSERT INTO Alumnos (IdAlumnos, Nombre, AñoCursante) VALUES (5, “Joaquín


González”, 2);

En el ejemplo siguiente se seleccionan todos los asistentes a prácticas, que figuran en


una tabla Prácticas supuesta, que fueron contratados con anterioridad a un mes y se agregan
sus registros a la tabla Empleados.

INSERT INTO Empleados SELECT Prácticas.*


FROM Prácticas
WHERE FechaContratación < Now() - 30;
INTO: Crea una consulta de creación de tabla. En el ejemplo siguiente se crea una tabla
nueva llamada RepresentantesVentas que contienen sólo registros de los empleados
que tienen el cargo de Representantes de ventas:

SELECT Empleados.Nombre, Apellido INTO [Representantesde ventas]


FROM Empleados
WHERE Cargo = “Representante de ventas”;

LIKE: Compara una expresión de cadena con un modelo en una expresión SQL. En el
ejemplo siguiente se muestran todos los alumnos cuya calificación fue de 10 puntos:

SELECT Alumnos.Nombre
FROM Alumnos, Notas
WHERE Alumnos.IdAlumno = Notas.IdAlumno
AND Notas.Calificacion Like 10;

Este otro ejemplo devuelve una lista de empleados cuyos nombres comienzan por las letras A
a D.
SELECT * FROM Empleados WHERE Apellido Like '[A-D]*';

NOT: Se utiliza para ejecutar una negación lógica sobre una expresión.
El ejemplo siguiente da una lista de alumnos con los notas de todos los trimestre,
exceptuando el 1.

SELECT Alumnos.Nombre, Notas.Trimestre, Notas.Calificacion


FROM Alumnos, Notas
WHERE Alumnos.IdAlumno = Notas.IdAlumno
AND Notas.Trimestre not like 1;

ORDER: Ordena los registros resultantes de una consulta por un campo o unos campos
especificados en sentido ascendente o descendente.
El siguiente ejemplo muestra un listado de los alumnos ordenados alfabéticamente:
SELECT Nombre
FROM Alumnos
ORDER BY Nombre Asc;

Si quisiera que el orden fuera al reves, en forma descendente, de la z a la a, la orden


sería:

SELECT Nombre
FROM Alumnos
ORDER BY Nombre Desc;

SET: crea una consulta de actualización que cambia los valores de los campos en una tabla
específica según un criterio específico.
En el ejemplo siguiente se cambian los valores del campo Jefe a 5 para todos los
registros de empleados que actualmente tienen el valor 2 en Jefe:

UPDATE Empleados SET Jefe = 5 WHERE Jefe = 2;


En el ejemplo siguiente se aumenta un 10% el PrecioUnitario para todos los productos no
discontinuados del proveedor número 8:

UPDATE Productos SET PrecioUnitario = PrecioUnitario * 1.1


WHERE IdProveedor = 8 AND Suspendido = No;

UPDATE: Crea una consulta de actualización que cambia los valores de los campos en una
tabla específica según un criterio específico.

TOP: Devuelve cierto número de registros que se encuentran entre la parte superior e inferior
de un intervalo especificado por una cláusula ORDER BY. Suponga que desea obtener los
nombres de los primeros 25 alumnos de la promoción de 1994:

SELECT TOP 25
Nombre, Apellidos
FROM Alumnos
WHERE AñoGraduación = 1994
ORDER BY NotasMedias DESC;

Si no incluye la cláusula ORDER BY, el resultado de la consulta devolverá un conjunto aleatorio


de 25 registros de la tabla Alumnos que cumplan la cláusula WHERE. El predicado TOP no elige
entre valores iguales. En el ejemplo anterior, si las notas medias de los registros número
veinticinco y veintiséis son iguales, la consulta devolverá 26 registros.
Operaciones con fechas/horas:

NOW: ahora. Devuelve la fecha actual.

El ejemplo de abajo muestra el nombre de los alumnos que ya han dado exámen (con
respecto a la fecha actual), y la nota que sacaron.

SELECT Alumnos.Nombre, Notas.Calificacion


FROM Alumnos, Notas
WHERE Alumnos.IdAlumno = Notas.IdAlumno
AND Notas.FechaExamen < Now( );

YEAR: Año. Devuelve el año de una fecha dada.

Si quisiera ver el año que se tomó el exámen (siguiendo el ejemplo anterior), la primera línea
sería:

SELECT Alumnos.Nombre, Notas.Calificacion, YEAR(FechaExamen)AS[AÑO]

MONTH: Mes. Devuelve el mes de una fecha dada.

Siguiendo con el ejemplo, de esta forma se mostraría el mes del exámen:

SELECT Alumnos.Nombre, Notas.Calificacion, MONTH(FechaExamen)AS[Mes]

DAY: Día. Devuelve el día de una fecha dada.

Siguiendo con el ejemplo, de esta forma se mostraría el día del exámen:


SELECT Alumnos.Nombre, Notas.Calificacion, DAY(FechaExamen)AS[Día]

Weekday: Día de la semana. Devuelve el número de día de la semana de una fecha dada. El
1 es domingo, 2 el lunes, etc.

DATEDIFF: Devuelve un valor de tipo Variant (Long) que especifica el número de intervalos
de tiempo entre dos fechas determinadas.

Este ejemplo utilizan la función DateDiff para calcular el número de semanas entre la
fecha de exámen y el día de hoy
SELECT Alumnos.Nombre, Notas.Calificacion,
datediff( "ww",FechaExamen, now( ) ) AS[Semanas]
Este otro indica el número de días que pasaron entre la fecha de exámen y la actual:

SELECT Alumnos.Nombre, Notas.Calificacion,


datediff( "y",FechaExamen, now( ) ) AS[Semanas]

Como se ve, lo que hace a la diferencia es el valor que se escribe en la primer parte de
la instrucción: el intervalo. Este puede tomar los siquientes valores:

Intervalo Descripción
yyyy Año
q Trimestre
m Mes
y Día del año
d Día
w Día de la semana
ww Semana
h Hora
n Minuto
s Segundo

TIME: Hora. Devuelve la hora actual.

MINUTE: Devuelve un valor de tipo Variant (Integer) que especifica un número entero entre
0 y 59, inclusive, que representa el minuto de la hora.

DATEPART: Devuelve un valor de tipo Variant (Integer) que contiene la parte especificada de
la fecha dada. Se usan los mismos valores que la tabla de arriba.

El siguiente ejemplo lista todos los pedidos realizados en el primer trimestre de 1.996.

DatePart("t", [FechaDePedido])=1) y (DatePart("aaaa",[FechaDePedido]) = 1996

SUMFECHA: Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado
un intervalo de tiempo especificado. Igualmente se usan los valores de la tabla de la hoja
anterior.

El siguiente ejemplo muestra la fecha en la que debe ser enviado un pedido determinado; en
este caso, treinta días después de la FechaDePedido.
= DateAdd("d", 30, [FechaDePedido])