0% encontró este documento útil (0 votos)
202 vistas

SQL 2024-1

Este documento presenta una introducción al lenguaje de consultas SQL. Explica cómo crear tablas en el software PGADMIN y realizar consultas simples de selección utilizando palabras clave como SELECT, FROM y WHERE. También cubre temas como ordenar y agrupar resultados, funciones de agregado como COUNT y AVG, y el uso de operadores como BETWEEN. El documento proporciona ejemplos de 18 consultas SQL que ilustran estas capacidades.

Cargado por

jguarinp5941
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
202 vistas

SQL 2024-1

Este documento presenta una introducción al lenguaje de consultas SQL. Explica cómo crear tablas en el software PGADMIN y realizar consultas simples de selección utilizando palabras clave como SELECT, FROM y WHERE. También cubre temas como ordenar y agrupar resultados, funciones de agregado como COUNT y AVG, y el uso de operadores como BETWEEN. El documento proporciona ejemplos de 18 consultas SQL que ilustran estas capacidades.

Cargado por

jguarinp5941
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 19

UNIVERSIDAD DISTRITAL

Ing. Topográfica
BASES DE DATOS G.T.C
Practica SQL
Para la presente práctica, crearemos nuestras propias tablas en el software
PGADMIN, y haremos las consultas en el mismo.

Introducción al SQL

Una consulta SQL está compuesta por una instrucción SQL que define esa
consulta. Se trata de un comando que puede ocupar cuantas líneas de texto se
desee, terminado en punto y coma (;). SQL es un lenguaje sencillo e intuitivo (No
procedural); las consultas se asemejan al lenguaje natural.

Existen algunas palabras reservadas, como en cualquier lenguaje: SELECT,INSERT,


DELETE, UPDATE, SET, WHERE, IN, DISTICT, GROUP, ORDER, BY,
etc.

Consultas de selección simple

La consulta más simple posible consiste en la selección de campos y registros de


una tabla. Se identifican los campos que nos interesan y una condición que deben
cumplir los registros seleccionados. El resultado es una tabla que es un
subconjunto de la original.

El formato genérico de este tipo de consultas es:

SELECT <lista de campos> FROM <tabla> WHERE <condición>;

Esta instrucción recupera ciertos campos de los registros de una tabla que verifican
una condición. La cláusula WHERE es opcional. Si se omite, se seleccionan todos
los registros (se supone que la condición es siempre verdadera).

SELECT <lista de campos> FROM <tabla>;

Si nos interesan todos los campos podemos utilizar el símbolo “ * ” (asterisco)


para identificar la lista completa:

SELECT * FROM <tabla> WHERE <condición>;

Si no, podemos especificar varios campos identificándolos por sus nombres y


separándolos por comas (,).
SELECT campo1, campo2,..., campo ‘n’ FROM <tabla> WHERE <condición>;

Supongamos la tabla de Alumnos….


Cada Alumno que realice la práctica se debe incluir en esta tabla
Alumnos
NIF Apellido1 Apellido2 Nombre Edad Parcial1 Parcial2 Practicas
110 Pardo Pardo Jaime 26 50 30 46
210 Álvarez Domínguez Angélica 31 80 74 65
311 Zamir Maturana Camilo 18 49 81 64
411 Moreno Arjona Daniel 23 45 68 73
511 Torres Torres Iván 24 69 72 90
611 Gutiérrez Hernández Héctor 25 82 64 51
711 Matiz Castaño Ángela 33 60 82 70
811 Pipe Núñez Armando 25 45 30 76
911 Sarmiento Castro Bernardo 23 84 63 72
1011 Castillo Niño 24 33 65 81
1012 Cristo Sánchez Antonio 45 42 50 49
1112 Serrano Melo Nelson 24 48 68 72
1212 Caro Méndez Andrés 27 69 49
1312 Triviño Carreño Miguel 24 85 63 75
1412 Sarmiento Novoa Santiago 22 56 63 74
1512 Casas Martínez Paola 35 60 69 52
1612 Oicata Rincón Andrea 32 85 85 65
1712 Angulo Buitrago 21 74 42
1812 Madrid Urrego Amanda 34 70 84 75
1913 Avellaneda Díaz Eduardo 25 95 75 56
2013 Rodríguez Diego 24 10 65 42
2113 Bernal Mora Manuel 22 66 42 56
2213 Torres Vélez Pablo 22 35 75 95
La tabla se debe hacer en el software PGADMIN quedando así: Este es un
ejemplo:

Este es un ejemplo

Podemos definir las siguientes consultas:


CONSULTA 1: Seleccionar los alumnos mayores de 25 años

CONSULTA 2: Seleccionar los apellidos y nombres de los que han aprobado los
dos parciales.

CONSULTA 3: Generar un listado con los nombres y apellidos de los alumnos y sus
notas.
EJEMPLO

ES UN
EJEMPLO

Adición de campos

Podemos generar consultas en las que aparezcan nuevos campos.

Por ejemplo, nos puede interesar una consulta en la que se


muestre la nota mediaobtenida por los alumnos.

En tal caso podemos utilizar la sintaxis “<expresión> AS <nombre


campo>”
para cada columna añadida como si se tratara de un campo más de la tabla:

SELECT <lista campos>, <expresión> AS


<nombre campo>FROM <tabla> WHERE
<condición>;

Así:
CONSULTA 4: Obtener los apellidos junto a la nota media, suponiendo que la media
de los parciales es el 80% y el resto se obtiene con las practicas.
CONSULTA 5: Obtener los nombres completos de los alumnos junto a su NIF.

Nota: en el ejemplo el campo se llama NIT, para el ejemplo de la tabla anterior es


NIF.
Ejemplo Consulta 5

ES UN
EJEMPLO

Operadores y expresiones
Las expresiones en SQL son semejantes a las utilizadas en la
mayoría de loslenguajes.
Se destacan los siguientes:

CONSULTA 6: Comparar con valor nulo. Indica si un campo se ha dejado en blanco.


Ejemplo: Alumnos cuya edad se desconoce:

CONSULTA 7: Comparador con valor no nulo. Indica si u campo contiene un valor,


y no se ha dejado en blanco. Ejemplo: Alumnos Cuya edad no se desconoce.

CONSULTA 8: Comparador de semejanza. Permite realizar una comparación de


cadenas utilizando caracteres comodines.
? = Un carácter cualquiera
*= Cualquier combinación de caracteres (incluido ningún carácter)
Ejemplo: Alumnos cuyo apellido comienza por “A”

Ejemplo Consulta 6:
ES UN
EJEMPLO

CONSULTA 9: (BETWEEN….AND) Comparador de pertenencia de rango. Por


ejemplo, alumnos cuya edad este comprendida entre 18 y 20:

[ ]: Delimitadores de identificadores. Sirven para delimitar los nombres de objetos


(campos, tablas, etc.) cuando estos incluyen espacios. Ejemplo: supongamos una
tabla llamada “Alumnos nuevos”
SELECT * FROM [Alumnos nuevos]
Ejemplo…….Edad entre 18 a 20 años,

Valores repetidos

Una consulta de selección puede recuperar tuplas idénticas. Supongamos la


siguiente tabla: Alumnos2
CONSUTA 10: La siguiente consulta de selección:

¿Cuántas tuplas de Juan se generan?


CONSULTA 11: Para evitar obtener tuplas repetidas, podemos utilizar el
modificador DISTINCT

Ahora la consulta no devolverá tuplas repetidas.

Existe otro modificador, DISTINCTROW, este no tiene en cuenta tuplas que


estén completamente duplicadas.
Ordenación de registros
SQL permite especificar que las tuplas seleccionadas se muestren ordenadas por
alguno o algunos de los campos seleccionados, ascendente o descendentemente.
Para ello se dispone de la palabra reservada ORDER BY, con el siguiente formato:
SELECT <lista de campos seleccionados> FROM <tabla>
WHERE <condición> ORDER BY <lista de campos para ordenar>;
La lista de campos para ordenar debe ser un subconjunto de la lista de campos
seleccionados. Para especificar un orden inverso (decreciente) se emplea la
cláusula DESC que ordena de forma descendente. De la misma forma la cláusula
ASC ordena de forma ascendente, aunque no es necesario especificarla, ya que
es la opción por defecto. Así:
CONSULTA 12: Obtener un listado de alumnos ordenados por apellidos.
CONSULTA 13: Obtener los alumnos con el primer parcial aprobado, comenzando
con las mejores notas.

CONSULTA 14: Obtener los apellidos y las notas de los parciales de los alumnos
que han sacado mejor nota en el primer parcial que en el segundo, ordenando
según la diferencia entre ambas notas (las mayores diferencias primero). En caso
de empate, ordenar por apellidos de forma ascendente.

Ejemplo:

Agrupamiento de datos

SQL permite definir consultas en la que se ofrecen tuplas que se obtengan como
resultado del agrupamiento de varias tuplas. Por ejemplo, valor promedio de un
campo, máximo, mínimo, cuenta, etc.
Para este tipo de consultas se proporcionan los siguientes operadores, que se
denominan funciones de agregado:

El formato de este tipo de consultas es:


SELECT COUNT/SUM/AVG/MAX/MIN (<campo>) AS <nombre> FROM <tabla>
WHERE <condición>;

Se pueden incluir varias funciones de agregado en la misma consulta.


CONSULTA 15: Obtener la nota media de la clase para el primer parcial.

Ejemplo con otros valores

CONSULTA 16: Obtener la máxima y mínima nota media de los 2 parciales.

CONSULTA 17: Obtener la máxima nota del primer parcial de entre todos los
alumnos que no tengan 0 en las practicas.

CONSULTA 18: Obtener el número de alumnos que han aprobado el primer


parcial.
En todas las consultas vistas hasta ahora, las funciones de agregado se aplican
sobre el conjunto total de registros de una tabla (excepto los que no cumplen la
cláusula WHERE, que son descartados), y el resultado de tales consultas es un
único valor.
SQL permite crear grupos de registros sobre los cuales aplicar las funciones de
agregado, de manera que el resultado es un conjunto de tuplas para cada una de
las cuales se ha calculado el valor agregado. Los grupos se componen de varios
registros que contienen el mismo valor para un campo o conjunto de campos. El
formato es:

SELECT <agregado> AS <nombre> FROM <tabla>


WHERE <condición>
GROUP BY <lista de campos>;

De esta forma, para cada valor distinto de la <lista de campos> suministrada, se


calcula la función de agregado correspondiente, sólo con el conjunto de registros
con dicho valor en los campos (los registros que no verifiquen la condición WHERE
no se tienen en cuenta). Así:
CONSULTA 19: Obtener el número de alumnos que hay con el mismo nombre (sin
apellidos) para cada nombre diferente (¿Cuántos Juanes, Diegos, Nelson…hay?)

Ejemplo

ES UN
EJEMPLO
Filtrado de tuplas de salida

En estas consultas puede aparecer una condición WHERE que permite descartar
las tuplas que no deben ser tenidas en cuenta a la hora de calculas las funciones
de agregado. Sin embargo, WHERE no permite descartar tuplas utilizando como
condición el resultado de la función de agregado.
Por ejemplo, supongamos la siguiente consulta: “seleccionar los nombres de
alumnos para los que haya más de 2 alumnos con el mismo nombre (3 Pedros, 4
Juanes,...)”. Intuitivamente podríamos hacer:

SELECT Nombre, COUNT(*) FROM Alumnos WHERE COUNT(*)>2 GROUP BY


Nombre;

Sin embargo, esto no es correcto. La cláusula WHERE no puede contener funciones


de agregado. Para este cometido existe otra cláusula semejante a WHERE, que es
HAVING, que tiene el siguiente formato:

SELECT <agregado> AS <nombre> FROM <tabla>


WHERE <condición>
GROUP BY <lista de campos>
HAVING <condición de agregado>;

Para el ejemplo anterior la instrucción SQL adecuada es:


CONSULTA 21:

En resumen: WHERE selecciona las tuplas que intervienen para calcular las
funciones de agregado y HAVING selecciona las tuplas que se muestran
teniendo en cuenta los resultados de las funciones de agregado.
En todos los casos, la cláusula ORDER BY puede ser incluida. Evidentemente esta
cláusula afectará únicamente al orden en que se muestran las tuplas resultado, y
no al cálculo de las funciones de agregado. Los campos por los cuales puede
efectuarse la ordenación sólo pueden ser aquéllos susceptibles de ser también
mostrados, es decir, que los campos admisibles en la cláusula ORDER BY son los
mismos que sean admisibles en la cláusula SELECT: funciones de agregado y la
combinación de campos que aparezca en GROUP BY.
Recordemos el formato de una instrucción SQL de selección con todas las opciones
vistas hasta ahora:
SELECT <lista de campos> FROM <tabla>
WHERE <condición>
GROUP BY <lista de campos> HAVING <condición de agregado> ORDER BY <lista
de campos>;
Para añadir datos a una tabla sin utilizar otra tabla o consulta como origen de datos,
se puede utilizar la siguiente sintaxis:
INSERT INTO <tabla destino> (<lista campos destino>) VALUES <lista campos
origen>;
Como en el caso anterior, debe existir una correspondencia y compatibilidad exacta
entre la lista de campos de origen y la lista de campos de destino Ejemplos de
consultas de inserción:
Se debe hacer una tabla “Personas” (cada estudiante la hace libre, no
pueden existir dos tablas iguales en la clase), que contenga mínimo 5 tuplas con
los siguientes Atributos:
Apellido1 Apellido2 Nombre Cargo

Y una tabla “Historia” según cuadro abajo.

* Para obtener el año actual se puede utilizar de forma combinada las funciones
Date() que proporciona la fecha actual (día, mes y año) y Year(), que acepta como
parámetro una fecha y devuelve el número de año.
CONSULTA 22: Supongamos una tabla Personas en la que se almacena
información sobre el nombre, apellidos y cargo (en campos Nombre, Apellidos y
Cargo) de todas las personas de la universidad. Añadir a esta tabla todos los
alumnos de la tabla Alumnos.

Supongamos una tabla historia en la que se almacena información sobre el numero


de alumnos matriculados cada año. Esta tabla tiene los campos: Año (tipo fecha) y
Número (Entero Largo). Añadir a esta tabla el número de alumnos actual con la
fecha de este año.
CONSULTA 23: Añadir el alumno “Francisco Pérez Solís”, con NIF 135 a la lista
de alumnos.
EJEMPLO

Consultas de actualización
Las consultas de actualización de datos permiten modificar los datos almacenados
en una tabla. Se trata de modificar los valores de determinados campos en los
registros que cumplan una determinada condición. La sintaxis de este tipo de
consultas es:

UPDATE <tabla>
SET <campo> = <nuevo valor>, <campo> = <nuevo valor>, <campo> =
<nuevo valor> WHERE <condición>;

Veamos:
CONSULTA 24: Aprobar el primer parcial a todos los alumnos que tengan una nota
entre 45 y 50.

CONSULTA 25: Poner un 1 en las practicas a todos los alumnos que no tengan
ninguna nota en prácticas y tengan en el primer parcial por lo menos 50 y en el
segundo parcial por lo menos 40 y una nota media entre ambos mayores que 40.

CONSULTA 26: Redondear las notas quitando los decimales.

CONSULTA 27: Poner un cero en practicas al alumno con NIF=128

REDONDEAR
Consultas de borrado
Las consultas de actualización de datos permiten eliminar tuplas de una tabla de
forma selectiva: los registros que cumplan una determinada condición. La sintaxis
de este tipo de consultas es:
DELETE [<tabla>.*] FROM tabla
WHERE <condición>;
Las consultas de borrado no permiten borrar campos; sólo tuplas completas.
Por eso la parte <tabla>.* es opcional. Para eliminar el valor de los campos debe
utilizarse una consulta de actualización, cambiando el valor de los campos a NULL.
Si no se especifica ninguna condición, se eliminan todas las tuplas.
No se elimina la tabla, ya que la estructura sigue existiendo, aunque no contenga
ningún registro.

Consultas de borrado:
CONSULTA 29: Eliminar a los alumnos que hayan aprobado todo.

CONSULTA 30: Eliminar a los alumnos cuyo apellido se desconozca total o


parcialmente.

Consultas de definición de datos


Las consultas de definición de datos se utilizan para crear tablas, modificar
definiciones de tablas, borrar tablas, crear índices y borrar índices. Ya hemos
estudiado otras consultas de creación de tablas. Sin embargo, este tipo de consultas
permite crear tablas vacías, haciendo una especificación precisa de las
características de la tabla.
Consultas de definición de datos.
En esta parte se crea una tabla “Alumnos Antiguos”.

Con unas 5 tuplas


CONSULTA 31: Crear la tabla de Alumnos. Observar que el DNI no puede ser nulo
y que la clave principal es DNI.
CONSULTA 32: Modificar la tabla Alumnos. Eliminar el campo Practicas.

CONSULTA 33: Modificar la taba de Alumnos. Eliminar el campo Teléfono de tipo


texto.

CONSULTA 34: Modificar la tabla Alumnos. Añadir la restricción de que el DNI es


una clave externa sobre la tabla ExpedientesDisciplinarios en el campo
DNIexpediente.

CONSULTA 35: Modificar la tabla Alumnos. Eliminar la restricción definida en la


anterior consulta.

CONSULTA 36: Borrar la tabla ExpedientesDisciplinarios.

CONSULTA 37: Crear un índice en la tabla Alumnos, sobre el campo DNI.

CONSULTA 38: Eliminar el índice definido para el DNI (el de consulta anterior).
CONSULTA 39: Crear un índice en la tabla Alumnos, sobre los campos
Apellido1 y Apellido2. Permite valores repetidos.

ELIMINAR EL ÍNDICE
Modificación y acceso a los datos de una consulta. Vistas.
La utilización de consultas en bases de datos persigue dos objetivos:
 La obtención de resultados sobre los datos almacenados. Es lo que hemos
visto hasta ahora.
 La generación de vistas.
Las vistas son consultas de selección que se utilizan como si se tratara de tablas.
De forma transparente al usuario, las vistas muestran el contenido de una tabla con
un formato, orden y contenido adecuado a las necesidades del usuario. Por ejemplo,
si no queremos que un usuario tenga acceso a los datos DNI de la tabla de alumnos,
podemos crear una consulta que proporcione todos los datos (excepto el DNI) de
todos los alumnos, y presentarle la consulta como si fuera la propia tabla. De la
misma forma, podemos ocultarle la existencia de determinados alumnos, etc.
Una consulta se puede presentar a casi todos los efectos de la misma forma que
una tabla. Se pueden hacer consultas sobre consultas, añadir, modificar o eliminar
datos sobre la presentación del resultado de una consulta, crear formularios e
informes sobre consultas (en vez de tablas), etc.
Si embargo existe una limitación: determinadas operaciones no se permiten sobre
determinadas consultas empleadas como vistas. Esta limitación está impuesta por
la posibilidad o imposibilidad de que Access inserte de forma automáticamente los
valores a los que lo se tiene acceso mediante la vista. Supongamos una consulta
como:
SELECT * FROM Alumnos WHERE (Edad > 21) ORDER BY NIF;
Esta consulta de selección puede utilizarse como una vista, ya que es trivial
averiguar a qué fila y campo de la tabla de alumnos corresponde cada fila o campo
de la vista: cualquier modificación, inserción o borrado puede transmitirse a la tabla
base. Es importante reseñar que las tuplas que se añadan pueden no verificar la
condición WHERE o la cláusula ORDER BY. Sin embargo, esto no representa una
falta a ninguna regla de integridad y es perfectamente legal. La próxima vez que se
reconsulte la vista, las tuplas que no verifiquen la condición no volverán a aparecer,
pero estarán en la tabla original.
No ocurre lo mismo con una consulta como:
SELECT AVG (Parcial1) AS MediaP1 FROM Alumnos;
Si intentáramos utilizar esta tabla como una vista sobre la tabla Alumnos, ¿cómo se
introducirían los datos en Alumnos al añadir un nuevo registro en esta vista? Lo
mismo ocurre con muchas otras consultas.
Los siguientes tipos de consultas pueden funcionar como vistas:
 Consultas de selección simple, con o sin condición WHERE, que añadan
o filtren campos, con cualquier tipo de orden.
 Consultas de unión utilizando INNER JOIN.
Los siguientes tipos de consultas no pueden funcionar como vistas debido a la
imposibilidad de reconocer la ubicación de los datos en la tabla original a partir de
los de la vista:

Consultas de unión basadas en producto cartesiano (y filtrado con WHERE) que


no utilizan
Consultas con funciones de agregado (utilizando GROUP BY).
Consultas de concatenación de tablas.
Consultas que no sean de selección: inserción, borrado, modificación, definición
de datos, etc.
Total de Tablas: Alumnos, Alumnos2, Personas, Historia,
Alumnos_Antiguos, Las cuales se deben adjuntar en el informe.

MODIFICADA POR EL PROFESOR GERMÁN TORRIJOS C.


MODIFICADA DIEGO SANABRIA C. MONITOR.

Prohibida su copia parcial o total sin autorización del profesor.


Derechos reservados para la “Universidad Distrital Francisco José de
Caldas
Proyecto curricular de Ing. Topográfica.
2023- I

También podría gustarte