tecnología de la información ing. diego j. arcusin [email protected] bases de datos / sql

47
Tecnología de la Información Ing. Diego J. Arcusin [email protected] BASES DE DATOS / SQL

Upload: camila-covarrubias

Post on 24-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Tecnología de

la Información

Ing. Diego J. Arcusin [email protected]

BASES DE DATOS / SQL

Page 2: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

• Sistemas basados en archivos– Predecesores de los SGBD (sistemas de Gestión

de Bases de Datos)– Colección de programas de aplicación. – Cada programa define y gestiona sus datos.– Problemas significativos:

• Redundancia de datos• Dependencia entre programas y datos.

INTRODUCCION

Page 3: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

• Limitaciones de los Sistemas basados en archivos– Separación y aislamiento de los datos – Duplicación de los datos – Dependencia entre los datos – Formatos de archivos incompatibles– Consultas fijas– Crecimiento de programas de aplicación

INTRODUCCION

Page 4: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Sistemas basados en archivosEjemplo: En un banco que tiene aplicativos

basados en archivos un cliente abre una cuenta y luego solicita un crédito REDUNDANCIA.

INTRODUCCION

Page 5: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Sistemas de gestión de base de datos– BD es una colección de datos relacionados.– SGBD software que gestiona y controla el acceso a

la BD.– Aplicación BD programa que interactúa con BD.

El SGBD interactúa con las aplicaciones y la BD.– Compras en el supermercado– Depósito en el banco– Reserva en un hotel

INTRODUCCION

Page 6: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Un SGBD normalmente:– Permite a los usuarios definir la BD mediante DDL

y manipular la BD mediante DML.– Proporciona acceso controlado a la BD.– Proporciona un catálogo que contiene

descripciones de la BD.

INTRODUCCION

Page 7: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Ventajas SGBD• Control de redundancia de datos• Coherencia y Compartición de datos• Mayor integración de datos • Mayor seguridad • Mejor accesibilidad de datos y capacidad de respuesta.• Productividad mejorada• Mejora de seguridad y recuperación

INTRODUCCION

Page 8: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Desventajas SGBD• Complejidad • Tamaño• Costo de SGBD• Costo de hardware adicional • Costos de conversión de hardware• Prestaciones• Mayor impacto a fallos

INTRODUCCION

Page 9: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

TIPOS DE BASE DE DATOS

1. JERARQUICAS

3. EN RED

5. TRANSACCIONALES

8. RELACIONALES

2. MULTIDIMENSIONALES

4. ORIENTADAS A OBJETOS

6. DOCUMENTALES

7. DEDUCTIVAS

Page 10: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

BASE DE DATOS RELACIONALES

La información puede ser recuperada o almacenada mediante "consultas" que ofrecen una amplia flexibilidad y poder para administrar la información.

El lenguaje más habitual para construir las consultas a bases de datos relacionales es  el SQL

Permiten establecer interconexiones (relaciones) entre los datos (que están guardados en tablas), y a través de dichas conexiones relacionar los datos de ambas tablas, de ahí proviene su nombre:"Modelo Relacional".

Page 11: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

DBMS (DATABASE MANAGEMENT SYSTEM, SISTEMA DE GESTION DE BASE DE DATOS)

Son un tipo de software muy específico, dedicado a servir de interfaz entre las bases de datos y las aplicaciones que la utilizan.

Se compone de un lenguaje de definición de datos, de un lenguaje de manipulación de datos y de un lenguaje de consulta.

Page 12: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

DIAGRAMA ENTIDAD - RELACIÓN

Un diagrama o modelo entidad-relación (a veces denominado por sus siglas, E-R "Entity relationship", o, "DER" Diagrama Entidad Relación) es una herramienta para el modelado de datos de un sistema de información. Estos modelos expresan entidades relevantes para un sistema de información así como sus interrelaciones y propiedades.

Page 13: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

DIAGRAMA ENTIDAD RELACION

Representa una “cosa” u "objeto" del mundo real con existencia independiente, es decir, se diferencia unívocamente de cualquier otro objeto o cosa, incluso siendo del mismo tipo, o una misma entidad.

Los atributos son las características que definen o identifican a una entidad.

Describe cierta dependencia entre entidades o permite la asociación de las mismas.

ENTIDAD

ATRIBUTO

RELACION

Page 14: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

RELACIONES

Las relaciones que almacenan datos son llamadas "relaciones base" y su implementación es llamada "tabla".

Otras relaciones no almacenan datos, pero son calculadas al aplicar operaciones relacionales. Estas relaciones son llamadas "relaciones derivadas" y su implementación es llamada "vista" o "consulta".

Page 15: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Unidad básica de una base de datos. Un campo puede ser, por ejemplo, el nombre de una persona.

Tipo de Campo Tamaño de Almacenamiento

TINYINT 1 byte

SMALLINT 2 bytes

MEDIUMINT 3 bytes

INT 4 bytes

INTEGER 4 bytes

BIGINT 8 bytes

FLOAT(X) 4 ú 8 bytes

FLOAT 4 bytes

DOUBLE 8 bytes

DOUBLE PRECISION 8 bytes

REAL 8 bytes

DECIMAL(M,DM+2 bytes sí D > 0, M+1

bytes sí D = 0

NUMERIC(M,D)M+2 bytes if D > 0, M+1

bytes if D = 0

Tipo de campo Tamaño de Almacenamiento

CHAR(n) n bytes

VARCHAR(n) n +1 bytes

TINYBLOB, TINYTEXT

Longitud+1 bytes

BLOB, TEXT Longitud +2 bytes

MEDIUMBLOB, MEDIUMTEXT

Longitud +3 bytes

LONGBLOB, LONGTEXT

Longitud +4 bytes

ENUM('value1','value2',...)

1 ó dos bytes dependiendo del número de valores

SET('value1','value2',...)

1, 2, 3, 4 ó 8 bytes, dependiendo del número de valores

CAMPO

Page 16: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Una tabla en una especie de "archivo" en el cuál definimos una estructura de filas y columnas con la información que deseamos almacenar.

CodigoSeria un código para idetificar al cliente.

Nombre El nombre de nuestro cliente.

Apellidos Apellidos del cliente.

CUIT CUIT del cliente.

DireccionLa dirección del cliente.

Telefono El teléfono del cliente. 

TABLA

Page 17: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Un registro es un conjunto de campos que contienen los datos que pertenecen a una misma repetición de entidad.

Codigo Nombre Apellidos CUIT Direccion Telefono

1Lucas Perez Lopez 000000001Av/ calle 5 910002525

2LuisMartin Perez

000000002 C/ Lope 15 910002524

REGISTRO (FILA)

Page 18: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Cada tabla puede tener uno o más campos cuyos valores identifican de forma única cada registro de dicha tabla, es decir, no pueden existir dos o más registros diferentes cuyos valores en dichos campos sean idénticos.

Pueden existir varias claves únicas en una determinada tabla, y a cada una de éstas suele llamársele candidata a clave primaria.

CLAVE UNICA

Page 19: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Una clave primaria es una clave única elegida entre todas las candidatas que define unívocamente a todos los demás atributos de la tabla, para especificar los datos que serán relacionados con las demás tablas.

Sólo puede existir una clave primaria por tabla y ningún campo de dicha clave puede contener valores NULL.

CLAVE PRIMARIA

Page 20: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Una clave foránea es una referencia a una clave en otra tabla.

Por ejemplo, el código de departamento puede ser una clave foránea en la tabla de empleados, obviamente se permite que haya varios empleados en un mismo departamento, pero existirá sólo un departamento.

CLAVE FORANEA

Page 21: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Los índices pueden ser creados con cualquier combinación de campos de una tabla. Las consultas que filtran registros por medio de estos campos, pueden encontrar los registros de forma no secuencial usando la clave índice.

Los índices generalmente no se consideran parte de la base de datos, pues son un detalle agregado. Sin embargo, los índices son desarrolladas por el mismo grupo de programadores que las otras partes de la base de datos.

INDICES

Page 22: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

¿Qué es SQL?

• Lenguaje de consulta estructurado (SQL: Structured Query Languague) .

• Es un lenguaje de base de datos normalizado.

• Utilizado para consultar, modificar o eliminar datos en una Base de Datos.

Page 23: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Componentes

• Comandos• Claúsulas• Operadores• Funciones

Page 24: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Comandos

• Existen 2 tipos:– DLL (definición de datos): Permiten crear y definir nuevas

bases de datos, campos e índices.• CREATE• DROP• ALTER

– DML (manipulación de datos): Permiten generar consultas para ordenar, filtrar y extraer datos.• SELECT• INSERT• UPDATE• DELETE

Page 25: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

CREATE TABLE

Esta sentencia se usa para crear tablas en una Base de datos. La syntaxis es:

CREATE TABLE table_name(column_name1 data_type atributte,column_name2 data_type atributte,column_name3 data_type atributte,....);

CREATE TABLE inasistencia(id int NOT NULL AUTO_INCREMENT,id_alumno int NOT NULL,id_causa int NOT NULL,fecha date NOT NULL,descripcion varchar(255),PRIMARY KEY (id));

Page 26: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

INSERT INTO

Esta sentencia se usa insertar registros en las tablas de una Base de datos. La syntaxis es:

INSERT INTO table_name (column1, column2, column3,...)VALUES (value1, value2, value3,...);

INSERT INTO Persons (P_Id, LastName, FirstName)VALUES (5, 'Tjessem', 'Jakob');

Page 27: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

SELECT

Esta sentencia se usa para seleccionar datos de las tablas, el resultado lo muestra en una tabla temporal. La syntaxis es:

SELECT column_name(s)FROM table_name;

SELECT LastName,FirstName FROM Persons;

LastName FirstNameHansen OlaSvendson TovePettersen Kari

SELECT * FROM Persons;

el * selecciona todos los campos de la tabla

Page 28: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Cláusulas

• FROM• WHERE• GROUP BY• HAVING• ORDER BY

Page 29: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Operadores

• Lógicos: –AND–OR–NOT

• Comparación: <, >, <>, <=, >=

Page 30: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Funciones

• COUNT• SUM• MAX• MIN• AVG

Page 31: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Consulta básica

SELECT A

FROM B

Donde A son los datos que requiero (columnas) y B es de donde obtengo esos datos.

Page 32: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Ejemplo

SELECT nombre, apellidos, edad

FROM estudiantes

Page 33: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

WHERE

• A veces NO se necesitan obtener datos tan generales, y es cuando se aplican filtros, con la clausula WHERE.

SELECT A

FROM B

WHERE C

Donde C, es una o más condiciones.

Page 34: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Ejemplo

SELECT nombres, apellidos, edad

FROM estudiantes

WHERE edad > 21

Page 35: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Alias

• Los alias son un nombre de asignación que se le dan a los recursos, en este caso las tablas.

• Luego se pueden llamar a sus atributos desde ese alias, continuados con un punto (“.”) .

Page 36: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Ejemplo

SELECT c.nombres, f.nombres

FROM campus c, funcionarios f

WHERE c.id_campus = f.id_campus

Page 37: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Alias 2

• Es posible dar un alias (nombre) al titulo de las columnas de una tabla, que no es el mismo que posee en la Base de Datos.

• Ejemplo sin Alias:

Select l.titulo, l.agno

From libros l

TITULO AGNO

Matemáticas 2007

Lenguaje y Comunicaciones 1998

Cs. Biológicas 2003

Page 38: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

Ejemplo con Alias

TITULO AÑO

Matemáticas 2007

Lenguaje y Comunicaciones 1998

Cs. Biológicas 2003

Select l.titulo, l.agno As AÑOFrom libros l

Page 39: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

GROUP BY

La cláusula GROUP BY se usa para generar valores de agregado para cada fila del conjunto de resultados. Cuando se usan sin una cláusula GROUP BY, las funciones de agregado sólo devuelven un valor de agregado para una instrucción SELECT.

Ejemplo:

SELECT nombre_columna1, nombre_columna2FROM nombre_tablaGROUP BY nombre_columna1

Page 40: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

GROUP BY: Ejemplo

nombre_tienda ventas fecha

Valdivia 1500 05-jan-2010

Temuco 250 07-jan-2010

Valdivia 300 08-jan-2010

Osorno 700 08-jan-2010

tienda_info

CONSULTASELECT nombre_tienda, SUM(ventas)FROM tienda_infoGROUP BY nombre_tienda

RESULTADOValdivia 1800Temuco 250Osorno 700

Page 41: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

HAVING

Especifica una condición de búsqueda para un grupo o agregado. HAVING sólo se puede utilizar con la instrucción SELECT. Normalmente, HAVING se utiliza en una cláusula GROUP BY. Cuando no se utiliza GROUP BY, HAVING se comporta como una cláusula WHERE.

Ejemplo:

SELECT nombre_columna1, SUM(nombre_columna2)FROM nombre_tabla[ GROUP BY nombre_columna1 ]HAVING (condición de función aritmética)

Page 42: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

HAVING: Ejemplo

nombre_tienda ventas fecha

Valdivia 1500 05-jan-2010

Temuco 250 07-jan-2010

Valdivia 300 08-jan-2010

Osorno 700 08-jan-2010

tienda_info

CONSULTASELECT nombre_tienda, SUM(ventas)FROM tienda_infoGROUP BY nombre_tiendaHAVING SUM(ventas) > 1500

RESULTADOValdivia 1800

Page 43: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

ORDER BY

Especifica el orden utilizado en las columnas devueltas en una instrucción SELECT. La cláusula ORDER BY no es válida en vistas, funciones insertadas, tablas derivadas ni subconsultas.

Ejemplo:

SELECT nombre_columna1, nombre_columna2FROM nombre_tabla[ WHERE condicion]ORDER BY nombre_columna1 [ASC, DESC]

Page 44: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

ORDER BY: Ejemplo

nombre_tienda ventas fecha

Valdivia 1500 05-jan-2010

Temuco 250 07-jan-2010

Valdivia 300 08-jan-2010

Osorno 700 08-jan-2010

tienda_info

CONSULTASELECT nombre_tienda, ventas, fechaFROM tienda_infoORDER BY ventas DESC

RESULTADOValdivia 1500 05-jan-2010Osorno 700 08-jan-2010Valdivia 300 08-jan-2010Temuco 250 07-jan-2010

Page 45: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

OPERADORES LOGICOS(AND-OR)

C1 C2 C1 AND C2

V V V

V F F

F V F

F F F

C1 C2 C1 OR C2

V V V

V F V

F V V

F F F

Page 46: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

OPERADORES LOGICOS: Ejemplo AND

nombre_tienda ventas fecha

Valdivia 1500 05-jan-2010

Temuco 250 07-jan-2010

Valdivia 300 08-jan-2010

Osorno 700 08-jan-2010

tienda_info

CONSULTASELECT *FROM tienda_infoWHERE ventas > 500AND nombre_tienda = ‘Valdivia’

RESULTADOValdivia 1500 05-jan-2010

Page 47: Tecnología de la Información Ing. Diego J. Arcusin info@digikol.com.ar BASES DE DATOS / SQL

OPERADORES LOGICOS: Ejemplo OR

nombre_tienda ventas fecha

Valdivia 1500 05-jan-2010

Temuco 250 07-jan-2010

Valdivia 300 08-jan-2010

Osorno 700 08-jan-2010

tienda_info

CONSULTASELECT *FROM tienda_infoWHERE ventas > 500OR nombre_tienda = ‘Valdivia’

RESULTADOValdivia 1500 05-jan-2010Valdivia 300 08-jan-2010Osorno 700 08-jan-2010