0% encontró este documento útil (0 votos)
3 vistas32 páginas

Introducción a SQL y Bases de Datos

El documento proporciona una introducción al lenguaje SQL, describiendo sus componentes principales como DDL y DML, así como la estructura básica de una consulta. Se explican diversos operadores y funciones, incluyendo cómo realizar uniones, subconsultas y operaciones de agregación. Además, se presentan ejemplos prácticos de consultas SQL aplicadas a un contexto médico.

Cargado por

DAD47741
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)
3 vistas32 páginas

Introducción a SQL y Bases de Datos

El documento proporciona una introducción al lenguaje SQL, describiendo sus componentes principales como DDL y DML, así como la estructura básica de una consulta. Se explican diversos operadores y funciones, incluyendo cómo realizar uniones, subconsultas y operaciones de agregación. Además, se presentan ejemplos prácticos de consultas SQL aplicadas a un contexto médico.

Cargado por

DAD47741
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

Bases de Datos

SQL (Structured Query Language)


SQL

Lenguaje de consultas de BD, que está compuesto


por dos submódulos:

 Módulo para definición del modelo de datos,


denominado DDL (Data Definition Languaje).

 Módulo para la operatoria normal de la BD,


denominado DML (Data Manipulation Languaje).

Bases de Datos SQL


SQL
Estructura básica de una consulta SQL:

SELECT lista_de_atributos
FROM lista_de_tablas
WHERE (predicado) /*Opcional*/

lista_de_atributos indica los nombres de los atributos que


serán presentados en el resultado.
lista_de_tablas indica las tablas de la BD necesarias para
resolver la consulta.
predicado indica que condición deben cumplir las tuplas
de las tablas para estar en el resultado final de la consulta.

Bases de Datos SQL


SQL-Analogía con Algebra Relacional
AR representa la base teórica de SQL, por lo tanto las
consultas expresadas en ambos lenguajes son
similares en aspectos semánticos.

SELECT atr1, atr2, atr3


FROM tabla1, tabla2
WHERE (atr4 = ‘valor’)

Equivale a la siguiente consulta en AR:

atr1, atr2, atr3 (atr4 = ‘valor’ (tabla1 x tabla2))

Bases de Datos SQL


SQL-Operadores
*: indica que todos los atributos de las tablas definidas en
el FROM, serán presentados en el resultado de la
consulta.

SELECT *
FROM medico

DISTINCT: elimina tuplas repetidas.

SELECT DISTINCT(idmateria)
FROM inscripciones
WHERE (resultado > 3)

Bases de Datos SQL


SQL-Operadores
BETWEEN: permite verificar si un valor se encuentra en un
rango determinado de valores.

SELECT nombre
FROM carreras
WHERE (duracion_años BETWEEN 4 and 6)

Se incluyen los extremos.

Bases de Datos SQL


SQL-Operadores
 Los atributos utilizados en el SELECT de una consulta
SQL pueden tener asociados operaciones válidas para
sus dominios.

SELECT nombre, precio* 0.9


FROM medicamento
WHERE (nombre= “Aspirina”)

Bases de Datos SQL


SQL-Operadores
Producto Cartesiano (,): para realizar un producto
cartesiano, basta con poner en la cláusula FROM dos o
más tablas separadas por coma.

SELECT [Link] as medico, [Link] as fechaConsulta


FROM medico m, consulta c
WHERE ([Link] = [Link]) AS: Renombre
de atributos.

Se filtran las tuplas con Alias definido para una tabla.


sentido.

Bases de Datos SQL


SQL-Operadores
 UNION: misma interpretación que en AR. No retorna
tuplas duplicadas.

 UNION ALL: misma interpretación que la UNION pero


retorna las tuplas duplicadas.

 EXCEPT: cláusula definida para la diferencia de


conjuntos.

 INTERSECT: cláusula para la operación de intersección

Bases de Datos SQL


SQL-Operadores
LIKE: brinda gran potencia para aquellas consultas que
requieren manejo de Strings. Se puede combinar con:
 %: representa cualquier cadena de caracteres,
inclusive la cadena vacía.
 _ (guión bajo ): sustituye solo el carácter del lugar
donde aparece.

SELECT nombre SELECT nombre


FROM medico FROM medico
WHERE (nombre LIKE “Zap%”) WHERE (especialidad LIKE “traumato _ _ _ _”)

Bases de Datos SQL


SQL-Operadores
ORDER BY: permite ordenar las tuplas resultantes por el
atributo que se le indique. Por defecto ordena de menor a
mayor (operador ASC). Si se desea ordenar de mayor a
menor, se utiliza el operador DESC.

SELECT DISTINCT matricula, nombre, especialidad


FROM medico m, consultas c
WHERE ([Link] =50) AND ([Link]= c. matricula) ORDER BY
matricula DESC

Dentro de la cláusula ORDER BY es posible indicar más de un


criterio de ordenación. El segundo criterio se aplica en caso de
empate en el primero y así sucesivamente.

Bases de Datos SQL


SQL-Operadores
IS NULL (su negación IS NOT NULL): verifica si un
atributo contiene el valor de NULL, valor que se almacena
por defecto si el usuario no define otro.

SELECT nombre
FROM medicamentos
WHERE (precio IS NULL)

Bases de Datos SQL


SQL-Funciones de agregación
Funciones de Agregación: operan sobre un conjunto de
tuplas de entrada y producen un único valor de salida.

 AVG: promedio del atributo indicado para todas las tuplas del
conjunto.
 COUNT: cantidad de tuplas involucradas en el conjunto de
entrada.
 MAX: valor más grande dentro del conjunto de tuplas para el
atributo indicado.
 MIN: valor más pequeño dentro del conjunto de tuplas para el
atributo indicado.
 SUM: suma del valor del atributo indicado para todas las tuplas
del conjunto.

Bases de Datos SQL


SQL-Funciones de agrupamiento
GROUP BY: agrupa las tuplas de una consulta por
algún criterio con el objetivo de aplicar alguna función
de agregación.

SELECT nombre, AVG(precio_total) as promedio


FROM medico m, consulta c
WHERE ([Link]= [Link])
GROUP BY matricula, nombre

Bases de Datos SQL


SQL-Subconsulta
Subconsulta: consiste en ubicar una consulta SQL
dentro de otra. SQL define operadores de
comparación para subconsultas:
 = (igualdad): cuando una subconsulta retorna un único
resultado, es posible compararlo contra un valor simple.
 IN (pertenencia): comprueba si un elemento es parte o
no de un conjunto. Negación (NOT IN).
 =SOME: igual a alguno.
 >ALL: mayor que todos.
 <=SOME: menor o igual que alguno

Bases de Datos SQL


SQL-Subconsulta
SELECT DISTINCT m .nombre, [Link]
FROM medicamento m, consulta c, medicacionConsulta
mc
WHERE ([Link]= [Link]) and
([Link]=[Link])
and [Link] =SOME(SELECT matricula FROM
medico WHERE especialidad like ‘Gastr%’)

Bases de Datos SQL


SQL-Cláusula Exist
 EXIST: se utiliza para comprobar si una
subconsulta generó o no alguna tupla como
respuesta. El resultado de la cláusula EXIST es
verdadero si la subconsulta tiene al menos una
tupla, y falso en caso contrario. Negación (NOT
EXIST)

Bases de Datos SQL


SQL-Cláusula Exist

SELECT m .nombre
FROM medicamento m
WHERE EXIST (SELECT * FROM medicacionConsulta
mc WHERE [Link]=[Link])

Condición de la consulta
principal

Bases de Datos SQL


SQL-Producto Natural
INNER JOIN: producto natural clásico, reúne las tuplas
de las relaciones que tienen sentido. El producto natural
se realiza en la cláusula FROM indicando la tablas
involucradas en dicho producto, y luego de la sentencia
ON la condición que debe cumplirse.

SELECT [Link], [Link], c.precio_total


FROM medico m
INNER JOIN consulta c ON ([Link]= [Link])

Bases de Datos SQL


SQL-Producto Natural
LEFT JOIN: contiene todos los registros de la tabla de
la izquierda, aún cuando no exista un registro
correspondiente en la tabla de la derecha, para uno de
la izquierda. Retorna un valor nulo (NULL) en caso de
no correspondencia.

RIGHT JOIN: es la inversa del LEFT JOIN.

SELECT [Link], [Link], c.precio_total


FROM medico m
LEFT JOIN consulta c ON ([Link]= [Link])

Bases de Datos SQL


SQL-ABM
INSERT INTO: agrega tuplas a una tabla.

DELETE FROM: borra una tupla o un conjunto de tuplas


de una tabla.

UPDATE … SET: modifica el contenido de uno o varios


atributos de una tabla.

Bases de Datos SQL


SQL-EJEMPLOS
Modelo Físico

Médico (matricula, nombre, especialidad) // médicos


Medicamento (codMed, nombre, stock, precio) //
medicamentos
MedicacionConsulta(codConsulta, codMed,
cantidad, precio) //medicamentos recetados.
Consulta (codConsulta, matricula, precio_total, fecha)
//consultas realizadas.

Bases de Datos SQL


SQL-EJEMPLOS
Mostrar el nombre de todos los medicamentos
usados en consultas con fecha enero 2016.

SELECT DISTINCT [Link]


FROM medicamento m INNER JOIN medicacionConsulta mc ON
([Link]= [Link])
INNER JOIN consulta c ON ([Link]= [Link])
WHERE YEAR ([Link])=2016 and MONTH([Link])=1

Bases de Datos SQL


SQL-EJEMPLOS

Mostrar codConsulta, la fecha y el monto total de


aquellas consultas correspondiente al médico
‘Orlando Garcia’ ordenadas por fecha y luego por
monto total.
SELECT codConsulta, fecha, precio_total
FROM medico m
INNER JOIN consulta c ON ([Link]= [Link])
WHERE ([Link]= ‘Orlando Garcia’)
ORDER BY fecha, precio_total

Bases de Datos SQL


SQL-EJEMPLOS

Presentar el monto total de las consultas


correspondientes a los primeros 15 días del mes
de febrero del 2016

SELECT SUM (precio_total) as monto total


FROM consulta c
WHERE (fecha BETWEEN "2016-01-01" and "2016-01-15")

Bases de Datos SQL


SQL-EJEMPLOS

Informar codConsulta, fecha y precio total de


aquellas consultas que incluyan medicamentos
con costo superior a $30000.

SELECT DISTINCT codConsulta, fecha,precio_total


FROM medicamento m INNER JOIN medicacionConsulta mc ON ([Link]=
[Link])
INNER JOIN consulta c ON ([Link]= [Link])
WHERE precio >30000

Bases de Datos SQL


SQL-EJEMPLOS

Informar para cada médico: la matricula, el


nombre y el monto total de las consultas
realizadas.

SELECT matricula, nombre, SUM(precio_total) as monto total


FROM medico m LEFTJOIN consulta c ON ([Link]= [Link])
GROUP BY matricula, nombre

Otra solución es: usar inner join en vez de left join y luego unir con la
selección de médicos que no tuvieron consultas y total 0

Bases de Datos SQL


SQL-EJEMPLOS

Informar para cada médico: la matricula, el


nombre, de aquellos médicos que el valor total de
sus consultas supere $1000000.
Condiciones de agrupamiento
SELECT matricula, nombre
FROM medico m INNER JOIN consulta c ON ([Link]= [Link])
GROUP BY matricula, nombre
HAVING SUM(precio_total) > 1000000

Porque se usa inner join??

Bases de Datos SQL


SQL-EJEMPLOS

Informar aquellos médicos que recetaron


‘paracetamol’ pero no recetaron en la misma
consulta ‘amoxilina’.
SELECT matricula, [Link]
FROM medicamento m INNER JOIN medicacionConsulta mc ON ([Link]=
[Link]) INNER JOIN consulta c ON ([Link]= [Link])
INNER JOIN medico med ([Link]= [Link])
WHERE [Link]=‘Paracetamol’ and NOT EXIST (
SELECT nombre
FROM medicamento m1 INNER JOIN medicacionConsulta mc1 ON
([Link]= [Link]) WHERE nombre=‘Amoxilina’ and
[Link]=[Link]
)

Bases de Datos SQL


SQL-EJEMPLOS

Informar para cada médico la cantidad de


consultas en las que intervino.

SELECT matricula, nombre, COUNT(codConsulta) as cantidadConsultas


FROM medico med
LEFT JOIN consulta c ON ([Link]= [Link])
GROUP BY matricula, nombre

Bases de Datos SQL


SQL-EJEMPLOS

Informar información de los médico que recetaron


‘paracetamol’ e ‘ibuprofeno’ en sus consultas
SELECT DISTINCT matricula, [Link]
FROM medicamento m INNER JOIN medicacionConsulta mc ON ([Link]=
[Link]) INNER JOIN consulta c ON ([Link]= [Link])
INNER JOIN medico med ([Link]= [Link])
WHERE [Link]=‘Paracetamol’

INTERSECT

SELECT DISTINCT matricula, [Link]


FROM medicamento m INNER JOIN medicacionConsulta mc ON ([Link]=
[Link]) INNER JOIN consulta c ON ([Link]= [Link])
INNER JOIN medico med ([Link]= [Link])
WHERE [Link]=‘Ibuprofeno’

Bases de Datos SQL


SQL

¿Preguntas?

Bases de Datos SQL

También podría gustarte