Bases de datos Unidad 5 – SQL Mónica María Rojas Rincón
[email protected] Oficina: P19-103
Lenguaje de Consultas Estruturado (SQL)
2
Lenguaje de trabajo estándard para modelo relacional Desarrollado por IBM a principios de los 70‟s 70‟s ( Sequel) Componentes
DDL: Data Definition Language
DML: Data Manipulation Language (AR y CRT)
SQL
DDL - Lenguaje de definición de datos.
DML - Lenguaje de manipulación de datos.
3
Definición y modificación de esquemas, relaciones, indices y vistas (una vista es una tabla virtual, ya que sus filas no se almacenan físicamente, sino que son producto de una consulta) Autorizaciones al acceso a datos Definición de reglas de integridad. Control de Concurrencia
Consultar datos almacenados. Modificar el contenido de los datos almacenados.
DML Consultas
4
Consultas
Estructura básica: 3 cláusulas
5
Select (equivale a ) From (equivale a x) Where (equivale a )
a1,...,an ( p (r1
x ... X rm ) ) equivale a
Select a1,..., an From r1,..., rm Where P Ej1: todas las sucursales de la relación sucursal
6
Vamos a trabajar sobre el siguiente modelo:
SELECT
* (incluye todos los atributos de las tablas que
aparecen en el from)
7
Distinct (eliminan tuplas duplicadas)
All (valor por defecto, aparecen todas las tuplas)
SELECT
Ej2: nombres de las sucursales en las que hay préstamos sin
repetición
Operaciones en el select
Select nombre, saldo * 3 From cliente
Where
Operadores lógicos Ej3: préstamos hechos en sucursal 10 y saldo superior a $20000 Between Ej4: préstamos cuyo monto este entre $20000 y 30000
8
SELECT
From: producto cartesiano
Ej5: nombre de cliente y # prestamo, de la sucursal 10.
Renombre: tanto para relaciones como para atributos
Atributos: presentarlo con otro nombre Select T.ced_cliente AS cedula_cliente, from prestamos AS T
Relaciones: un producto cartesiano contra si mismo Ej 6: nombre de las sucursales que poseen activo mayor que al menos una sucursal situada en Buenos Aires.
9
Like, %, _ “Alf%”: cualquier cadena que empiece con Alf “%casa%”: cualquier cadena que tenga casa en su interior “_ _ _”: cualquier cadena con tres caracteres “_ _ _%”: cualquier cadena con al menos tres caracteres. Ej7: nombre del clientes cuya ciudad contenga la cadena „ma‟
10
Ordenamiento de las tuplas resultado
Order By atributo: especifica el atributo por el cual las tuplas serán
ordenadas
Ej8: presentar todos los clientes ordenados por nombre.
Desc, asc: por defecto ascendente, se puede especificar orden
descendente.
Ej9: presentar los préstamos de la sucursal 10 ordenadas por número de
préstamo en orden descendente.
11
Operaciones sobre conjuntos
Unión: agrupa las tuplas resultantes de dos subconsultas. Union all
conserva duplicados
Ej10: clientes con cuentas o préstamos en el banco
Intersección: (intersect) los elementos comunes entre dos conjuntos de
tuplas
Ej11: clientes con cuentas y préstamos en un banco
Diferencia: (except) elementos que están en un conjunto pero no en el
otro
12
Ej12: clientes con cuentas y sin préstamos en un banco
Realizar en la cláusula From productos naturales
Inner Join: producto natural entre atributos que se indican, quedando el
atributo en común repetido Ej31: producto entre préstamo y cli_pres Left outer Join: primero se calcula el inner join (idem anterior) y luego cada
tupla t perteneciente a la relación de la izquierda que no encontro aparece en el resultado con valores nulos en los atributos del segundo lado. Right outer Join: idem anterior pero aparecen las tuplas t de la relación de la derecha Full outer join: aparecen las tuplas de ambos lados, incluyendo los que no coinciden de ambos lados.
Otras variantes:
Natural: evita que el atributo común (por el que se hace la unión aparezca dos
veces) 13
Promedio (avg): aplicable a atributos numéricos, retorna el promedio de la
cuenta
Mínimo (min): retorna el menor elemento no nulo dentro de las tuplas para
ese atributo
Máximo (max): retorna el mayor elemento no nulo dentro de las tuplas
para ese atributo Total (sum): aplicable a atributos numéricos, realiza la suma matemática Cuenta (count): cuenta las tuplas resultantes.
14
Permite agrupar un conjunto de tuplas por algun criterio
Having: permite aplicar condiciones a los grupos Ej15: presentar las sucursales y su saldo promedio siempre y cuando superen $20000 Ej16: saldo promedio de cada cliente que vive en Envigado, y tienen al menos 3 cuentas.
15
Ej13: obtener el saldo promedio de las cuentas de cada sucursal. Ej14: contar el número de clientes que tiene cada sucursal.
Valores nulos
Atributos con valores NULL (no significa 0) Select * from CLIENTE Where ciudad IS NULL
16
Ej17: Mostrar aquellos préstamos que tengan el saldo en nulo
Pertenecia a conjuntos: IN Ej18: clientes con prestamos y cuentas en el banco, cualquier sucursal (otra forma) Ej19: clientes que tengan préstamo y cuenta en la sucursal llamada
“Poblado”
17
> some ( <, =, >=, <=, <>) Ej20: sucursales que tengan activo mayor que al menos una de Bogotá
> all ( <, =, >=, <=, <>) Ej21: presentar la sucursal que tenga activo superior a todas (otra
18
forma) Ej22: encontrar la sucursal que tiene el mayor activo promedio.
Devuelve verdadero si la subconsulta argumento no es vacía.
Ej23: obtener los clientes que tienen tanto una cuenta
como un préstamo en el banco.
Ej24: obtener los clientes que tienen cuentas en todas las
sucursales de la ciudad de Envigado.
19
Unique: devuelve verdadero si la subconsulta argumento
no produce tuplas duplicadas.
Ej25: clientes que tienen una sola cuenta en la sucursal
llamada Poblado.
20
Una vista es un objeto que no contiene datos por si mismo. Es una clase de tabla cuyo contenido es tomado de otras tablas por medio de la ejecución de una consulta. Create View nombre as
Ej26: crea una vista con todos los clientes y consultar de ahí todos los de
sucursal XXX
21
DML Modificación de la información de la BD
22
eliminar una o mas filas de una tabla:
23
DELETE FROM tab_name [WHERE condición]; Ej27: borrar las cuentas de una sucursal Ej28: borrar las cuentas con saldo entre 100 y 200.
INSERT INTO tab_name (,) VALUES (,)
Existen dos maneras básicas de insertar. Insertar la fila completa Insertar sólo algunas columnas de una fila En el segundo caso se debe necesariamente especificar los nombres de las columnas que se van a completar. Ej29: agregar una cuenta
24
UPDATE tab_name SET =
[WHERE condición];
25
Ej30: modificar el saldo de las cuenta incrementar en un 5%.
Aumentar un 5% el saldo de las cuentas que tienen un saldo mayor que el promedio
Refencias Basado en:
26
Abraham Silberschatz, et. Al. Fundamentos de Bases de Datos. Cuarta Edición. 2004. Pág. 87-105