0% encontró este documento útil (0 votos)
26 vistas31 páginas

bd1 6 SQL

El documento aborda el lenguaje SQL, su historia y características, incluyendo su estandarización por ANSI y sus sublenguajes DDL y DML. Se describen operaciones sobre tablas y vistas, así como la recuperación de datos mediante consultas, uniones y funciones de agregación. Además, se presentan ejemplos prácticos de consultas y el uso de cláusulas como GROUP BY y HAVING.

Cargado por

Angel Caffa
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 PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
26 vistas31 páginas

bd1 6 SQL

El documento aborda el lenguaje SQL, su historia y características, incluyendo su estandarización por ANSI y sus sublenguajes DDL y DML. Se describen operaciones sobre tablas y vistas, así como la recuperación de datos mediante consultas, uniones y funciones de agregación. Además, se presentan ejemplos prácticos de consultas y el uso de cláusulas como GROUP BY y HAVING.

Cargado por

Angel Caffa
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 PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 31

BASES DE DATOS 1

Teórico: Structured Query Language


HISTORIA
 Los orígenes del SQL están ligados a los
orígenes de las bases de datos relacionales
 Estandarizado por ANSI en 1986 (SQL-86)

 Hubieron varias revisiones:


o SQL-89
o SQL-92
o SQL-1999
o SQL-2003
o SQL-2006
o SQL-2008
o SQL-2011
CARACTERÍSTICAS
 Opera sobre conjunto de tuplas
 No elimina automáticamente tuplas repetidas

 Lenguaje no procedural

 Su poder de expresión incluye el álgebra

relacional y lo extiende
 Se distinguen dos sublenguajes:
 DDL (Data Definition Language)
 DML (Data Manipulation Language)
DATA DEFINITION LANGUAGE (DDL)
 Permite crear, modificar y eliminar objetos de
la base de datos:

 Tablas
o Una tabla es un conjunto de valores organizados en
filas y columnas. Es la representación de una relación
aunque no son estrictamente equivalentes

 Vistas
o Una vista es una tabla virtual basada en el resultado
de una consulta. Pueden usarse en consultas como si
fueran tablas

 Usuarios
OPERACIONES SOBRE TABLAS
 CREATE TABLE
 Crea una nueva tabla
 Parámetros:
 Nombre de la tabla
 Nombre y tipo de dato de cada columna
 Restricciones de clave primaria y clave foránea sobre
otras tablas

 ALTER TABLE
 Modifica una tabla existente

 DROP TABLE
 Elimina una tabla existente y elimina los datos
almacenados en ella
EJEMPLO
 Sistema de Información relativo a hospitales:

HOSPITALES(codHosp, nomHosp, direccion)


MEDICOS(ciMed, nomMed, especialidad)
PACIENTES(ciPac, nomPac, fchNac, sexo)
EJEMPLO
Creo la tabla hospitales:

CREATE TABLE hospitales(


codHosp integer NOT NULL,
nomHosp character varying(40),
direccion character varying(20)
);

ALTER TABLE hospitales


add constraint hospitales_pkey PRIMARY KEY
(codHosp);
OPERACIONES SOBRE VISTAS
 CREATE VIEW
 Crea una vista
 Ejemplo: Creo una vista sobre la tabla hospitales en la que
no aparezca la dirección:

CREATE VIEW hospitalesSinDir AS


(SELECT codHosp, nomHosp
FROM hospitales
);

 ALTER VIEW
 Modifica una vista

 DROP VIEW
 Elimina una vista
DATA MANIPULATION LANGUAGE
(DML)
 Permite crear, modificar, eliminar y recuperar
datos:

 INSERT
 Agrega tuplas a una tabla
 Ejemplo:

INSERT INTO hospitales VALUES (1, ‘Maciel’, ‘25 de


Mayo 174’);

 UPDATE
 Actualiza tuplas de una tabla
 Ejemplo:

UPDATE hospitales SET direccion = ‘25 de Mayo 172’)


WHERE codHosp = 1;
DML
 DELETE
 Borra tuplas de una tabla
 Ejemplo:

DELETE hospitales WHERE nomHosp = ‘Maciel’;

 SELECT
 Recupera datos
 Ejemplo:

SELECT direccion
FROM hospitales
WHERE nomHosp = ‘Maciel’;
RECUPERACIÓN DE DATOS
 Sintaxis:

SELECT A1, …, An
FROM R1, …, Rm
WHERE C;

donde:
 A1, …, An son nombres de atributos. También se puede
utilizar (*)
 R1, …, Rm son nombres de tablas
 C es una condición booleana
CLÁUSULA ORDER BY
 La cláusula ORDER BY permite ordenar el
resultado ascendentemente o descendentemente
(ASC ó DESC)

 Ejemplo: Devolver los códigos de los hospitales


ordenados ascendentemente

SELECT codHosp
FROM hospitales
ORDER BY codHosp ASC;
CLÁUSULA DISTINCT
 La
cláusula DISTINCT permite filtrar tuplas
repetidas

 Ejemplo:Devolver las especialidades, sin repetir,


de los médicos

SELECT DISTINCT especialidad


FROM medicos;
OPERADOR JOIN
 JOIN es un operador que se utiliza para
combinar datos de dos o más tablas basados
en una relación entre determinadas
columnas en estas tablas

 En el JOIN sólo se incluyen en el resultado


tuplas que coincidan en valor en los campos
del JOIN
EJEMPLO
PERSONAS(ci, nombre, apellido, fchNac, lugarNac)
TECNOLOGOS(ci, fchTitulo)

 Obtener los nombres y apellidos de los


Tecnólogos:

SELECT nombre, apellido


FROM (personas JOIN tecnologos ON
personas.ci = tecnologos.ci);
OTROS TIPOS DE JOIN
 NATURAL JOIN: Elimina columnas con
nombres repetidos

 LEFT JOIN: Agrega para cada tupla de T1 que


no satisface la condición de JOIN con ninguna
de T2, una fila con nulos en las columnas de T2

 RIGHT JOIN: Análogo a LEFT JOIN pero se


incluyen todos los de T2

 FULL JOIN: Equivalente a la unión de LEFT


JOIN y RIGHT JOIN
ALIAS
 Ejemplo: Devolver las parejas de cédulas de
identidad de las personas que tienen igual
nombre pero distinto apellido

SELECT p1.ci, p2.ci


FROM personas p1, personas p2
WHERE p1.nombre = p2.nombre and p1.apellido
<> p2.apellido;
RENOMBRAR ATRIBUTOS
 Ejemplo:

PRODUCTOS (nroProd, nombre, peso)


FABRICANTES ( nroFab, nombre, departamento)
VENTAS ( nroFab, nroProd, precio)

Dar los nombres de fabricantes y los nombres de los


productos que venden

SELECT fabricantes.nombre as nomFab,


productos.nombre as nomProd
FROM ventas, fabricantes, productos
WHERE ventas.nroFab = fabricantes.nroFab
and ventas.nroProd = productos.nroProd;
UNIÓN (UNION)
 Ejemplo: Devolver la cédula de identidad de las personas que
nacieron en el año 2000 o que nacieron en Salto

SELECT ci
FROM personas
WHERE
personas.fchNac >= to_date('01/01/2000','dd/mm/yyyy') and
personas.fchNac <= to_date('31/12/2000','dd/mm/yyyy')

UNION

SELECT ci
FROM personas
WHERE personas.lugarNac = ‘Salto’;

 La UNION elimina tuplas repetidas


DIFERENCIA (NOT IN)
 Ejemplo: Devolver las cédulas de identidad
de las personas que no se recibieron de
Tecnólogo

SELECT ci
FROM personas
WHERE ci NOT IN (SELECT ci FROM
tecnologos);
FUNCIONES Y OPERADORES
ARITMÉTICOS
 En las cláusulas SELECT y WHERE se pueden
aplicar funciones y operadores aritméticos
sobre atributos:

 Funciones:round (n), abs (n), etc


 Operadores aritméticos: (+, *, /)
FUNCIONES DE AGREGACIÓN
 Las funciones de agregación extienden el
álgebra relacional

 Se aplican sobre conjuntos de tuplas, no


sobre tuplas individuales

 Permiten sumar, obtener el máximo, contar


tuplas, etc
CONSULTAS ANIDADAS
 Las consultas anidadas son consultas dentro de la cláusula WHERE
de otra consulta

 Sintaxis:

SELECT A1, …, An
FROM R1, …, Rm
WHERE Aj, …, Ak <op_comp>
(SELECT B1, …, Bk
FROM S1, …, Sm
WHERE C);

donde <op-comp> puede ser:


IN
= ANY
> ANY
= ALL
> ALL
FUNCIÓN EXISTS
 La función EXISTS sirve para chequear si el
resultado de una consulta no es vacío

 Ejemplo: Dar los nombres de los fabricantes que


sólo venden el producto número 15.

SELECT nombre
FROM fabricantes f1, ventas v1
WHERE f1.nroFab = v1.nroFab and v1.nroProd = 15
AND NOT EXISTS (SELECT * FROM ventas v2
WHERE v2.nroFab = f1.nroFab

and v2.nroProd <> 15);


CLÁUSULA GROUP BY
 La cláusula GROUP BY sirve para agrupar
tuplas

 El agrupamiento se realiza después de


aplicar el WHERE, es decir, sobre las tuplas
que cumplen la condición

 En el SELECT sólo puede haber atributos


presentes en la cláusula GROUP BY,
funciones de agregación sobre atributos y/o
expresiones aritméticas
EJEMPLO
 ACTIVIDADES (ci-est, cod-as, cod-car, tipo-act,
fecha, aprobo, nota)

 En esta relación:
 Se guardan todas las actividades que realizan los
estudiantes en la facultad
 Estas actividades pueden ser de distintos tipos
(examen (‘E’) o realización de curso (‘RC’))
 El atributo aprobo tiene valor ‘S’ o ‘N’. Si este
atributo tiene valor ‘S’ asumimos que la
asignatura esta aprobada totalmente, no importa
el tipo de actividad que sea
 El atributo fecha corresponde a la fecha en la
que se realizó la actividad
EJEMPLO
 Dar una lista que contenga código de
asignatura, código de carrera y cantidad de
aprobados a partir del 01/12/2001

SELECT cod-as, cod-car, COUNT(*)


FROM actividades
WHERE
fecha > to_date(‘01/12/2001’,’dd/mm/yyyy’)
and
aprobo = ‘S’
GROUP BY cod-as, cod-car;
CLÁUSULA HAVING
 La cláusula HAVING sirve para especificar
condiciones sobre grupos

 Ejemplo: Dar el número de fabricante y los


promedios de precios a los cuales vendió,
pero para los fabricantes con más de 3
ventas

SELECT nroFab, avg(precio)


FROM VENTAS
GROUP BY nroFab
HAVING count(*) > 3;
SUB-CONSULTAS EN EL FROM
 Utilizar sub-consultas en el FROM es
equivalente al uso de vistas

 Ejemplo: Dar el máximo del promedio de


ventas de cada fabricante

SELECT MAX (promedio)


FROM (SELECT AVG (precio) as promedio
FROM ventas
GROUP BY nroFab) as promedios
CAMBIOS DE FORMATO
 Por defecto existen funciones que permiten
manipular los tipos de datos

 Los manejadores también disponen de


funciones específicas

 Concatenación de string: Se utiliza el


operador | |

 Mayúsculas y minúsculas: upper(<atributo>),


lower(<atributo>)
MATERIAL DE CONSULTA
Tutorial de SQL
 http://www.w3schools.com/sql/default.asp

Tutorial interactivo de SQL


 http://sqlzoo.net/

Documentación PostgreSQL
 http://www.postgresql.org/docs/

También podría gustarte