23
Lenguaje Estructurado de Lenguaje Estructurado de Consulta Consulta Prof. Heber Gómez Hurtado

Sql

Embed Size (px)

Citation preview

Page 1: Sql

Lenguaje Estructurado de Consulta Lenguaje Estructurado de Consulta

Prof. Heber Gómez Hurtado

Page 2: Sql

2

Agenda

Conceptos Básicos Sentencias SQL

Page 3: Sql

3

Conceptos Básicos

Lenguaje de Consultas Estruturado (SQL)

Lenguaje de trabajo estándard para modelo relacional

ComponentesDDL: Data Definition LanguageDML: Data Manipulation Language (AR y CRT)

Page 4: Sql

4

SQL

DDL - Lenguaje de definición de datos. Definició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

DML - Lenguaje interactivo de manipulación de datos. Consultar datos almacenados. Modificar el contenido de los datos almacenados.

Page 5: Sql

5

SQL

Estructura básica: 3 cláusulasSelect (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 PEj1: todas las sucursales de la relación

sucursal

Page 6: Sql

6

SQL

Select* (incluye todos los atributos de las

tablas que aparecen en el from)

Distinct (eliminan tuplas duplicadas)

All (valor por defecto, aparecen todas las tuplas)

Page 7: Sql

7

SQL

Ej2: nombres de las sucursales en la relación préstamo sin repetición

Operaciones en el select Select nombre, saldo * 3 From cliente

Where Operadores lógicos

Ej3: préstamos hechos en sucursal X y monto superior a 20000$

Between Ej4: préstamos cuyo monto este entre 20000 y 30000$

Page 8: Sql

8

SQL

From: producto cartesiano Ej5: nombre de cliente y # prestamo, de la sucursal X.

Renombre: tanto para relaciones como para atributos Atributos: presentarlo con otro nombre

Select T1.Pac_numero AS Nro_Paciente,from Atenciones AS T1

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.

Page 9: Sql

9

SQL

Operaciones sobre stringsLike, %, _

“Alfa%”: cualquier cadena que empiece con Alfa “%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 domicilio

contenga el string XXX

Page 10: Sql

10

SQL

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 descendente.

Facturas=(Nro,Fecha,Hora) Ej9: presentar las facturas del mes de agosto ordenadas

por fecha desde el 31 al 1 de agosto y por hora de realización.

Page 11: Sql

11

SQL

Operaciones sobre conjuntos Unión: agrupa las tuplas resultantes de dos subconsultas.

Union all conserva duplicados Ej10: clientes con cuentas o prestamos en un banco

Intersección: (intersect) idem anterior. Ej11: clientes con cuentas y préstamos en un banco

Diferencia: (except) Ej12: clientes con cuentas y sin préstamos en un banco

Page 12: Sql

12

SQL

Funciones de agregación:Promedio (avg): aplicable a atributos numéricos,

retorna el promedio de la cuentaMínimo (min): retorna el menor elemento no nulo

dentro de las tuplas para ese atributoMáximo (max): retorna el mayor elemento no nulo

dentro de las tuplas para ese atributoTotal (sum): aplicable a atributos numéricos,

realiza la suma matemáticaCuenta (count): cuenta las tuplas resultantes.

Page 13: Sql

13

SQL

Agrupamientos (group by): Permite agrupar un conjunto de tuplas por algun criterio

Ej13: obtener el saldo promedio de las cuentas de cada sucursal.

Ej14: contar el número de clientes que tiene cada sucursal.

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 La Plata, y

tienen al menos 3 cuentas.

Page 14: Sql

14

SQL

Valores nulos: Ej17: Mostrar aquellos préstamos que tengan el

importe nulo. (no significa 0)

Subconsultas anidadasPertenecia a conjuntos: IN

Ej18: clientes con prestamos y cuentas en el banco, cualquier sucursal (otra forma)

Ej19: clientes que tengan prestamo y cuenta en la sucursal llamada “La Plata”

Page 15: Sql

15

SQL

Comparación de Conjuntos> some ( <, =, >=, <=, <>)

Ej20:presentar las sucursales que tengan activo mayor que alguna otra (otra forma)

> all ( <, =, >=, <=, <>) Ej21: presentar la sucursal que tenga activo superior

a todas (otra forma) Ej22: encontrar la sucursal que tiene el mayor saldo

promedio.

Page 16: Sql

16

SQL

Cláusula Exist: 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 Buenos Aires.

Page 17: Sql

17

SQL

Comprobación de tuplas duplicadas.

Unique: devuelve verdadero si la subconsulta argumento no produce tuplas duplicadas.

Ej25: clientes que tienen una sola cuenta en la sucursal llamada XXX.

Page 18: Sql

18

SQL

Creación de vistasUna 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 <expresion>Ej26: crea una vista con todos los clientes y

consultar de ahí todos los de sucursal XXX

Page 19: Sql

19

SQL

Modificación de la BDBorrado: eliminar una o mas filas de una

tabla: DELETE FROM tab_name

[WHERE condición]; Ej27: borrar las cuentas de una sucursal Ej28: borrar las cuentas con saldo entre

100 y 200.

Page 20: Sql

20

SQL

Inserción: INSERT INTO tab_name (<column_name>,)

VALUES (<valor>,)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

Page 21: Sql

21

SQL

Actualización Ej30: modificar el saldo de las cuenta incrementar

en un 5%.

Unión de relacionesRealizar en 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 propietarioprestamo

Page 22: Sql

22

SQL

Left outer Join: primero se calcula el inner join (idem anterior) y luego cadat tupla t perteneciente a la relación de la izquierda que no encontro par 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 colgadas de ambos lados.

Otras variantes: Natural: evita que el atributo común (por el que se hace la

unión aparezca dos veces)

Page 23: Sql

23

QBE

Query By Example:Sintaxis bidimensional: una consulta se

expresa como una tablaSe expresa la consulta con un “ejemplo”Se basa en el cálculo relacional de

dominiosEjemplos en Access