Download Ejemplo - DigiKol

Document related concepts

SQL wikipedia , lookup

Lenguaje de manipulación de datos wikipedia , lookup

Modelo de base de datos wikipedia , lookup

Vista (base de datos) wikipedia , lookup

Optimización de consultas wikipedia , lookup

Transcript
BASES DE DATOS / SQL
Tecnología de
la Información
Ing. Diego J. Arcusin
[email protected]
INTRODUCCION
• 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
• 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
Sistemas basados en archivos
Ejemplo: En un banco que tiene aplicativos
basados en archivos un cliente abre una cuenta
y luego solicita un crédito  REDUNDANCIA.
INTRODUCCION
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
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
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
Desventajas SGBD
•
Complejidad
•
Tamaño
•
Costo de SGBD
•
Costo de hardware adicional
•
Costos de conversión de hardware
•
Prestaciones
•
Mayor impacto a fallos
TIPOS DE BASE DE DATOS
1. JERARQUICAS
3. EN RED
2. MULTIDIMENSIONALES
4. ORIENTADAS A OBJETOS
6. DOCUMENTALES
5. TRANSACCIONALES
7. DEDUCTIVAS
8. RELACIONALES
BASE DE DATOS RELACIONALES
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".
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
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.
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.
DIAGRAMA ENTIDAD RELACION
ENTIDAD
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.
ATRIBUTO
Los atributos son las características
que definen o identifican a una
entidad.
RELACION
Describe cierta dependencia entre
entidades o permite la asociación de
las mismas.
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".
CAMPO
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
Tipo de campo
Tamaño de Almacenamiento
TINYINT
1 byte
CHAR(n)
n bytes
SMALLINT
2 bytes
VARCHAR(n)
n +1 bytes
MEDIUMINT
3 bytes
INT
4 bytes
TINYBLOB,
TINYTEXT
Longitud+1 bytes
INTEGER
4 bytes
BLOB, TEXT
Longitud +2 bytes
BIGINT
8 bytes
FLOAT(X)
4 ú 8 bytes
Longitud +3 bytes
FLOAT
4 bytes
MEDIUMBLOB,
MEDIUMTEXT
DOUBLE
8 bytes
DOUBLE PRECISION
8 bytes
LONGBLOB,
LONGTEXT
Longitud +4 bytes
REAL
8 bytes
DECIMAL(M,D
M+2 bytes sí D > 0, M+1
bytes sí D = 0
ENUM('value1','val 1 ó dos bytes dependiendo del número de
ue2',...)
valores
NUMERIC(M,D)
M+2 bytes if D > 0, M+1
bytes if D = 0
SET('value1','value
2',...)
1, 2, 3, 4 ó 8 bytes, dependiendo del
número de valores
TABLA
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.
Codigo
Seria un código para idetificar al
cliente.
Nombre
El nombre de nuestro cliente.
Apellidos Apellidos del cliente.
CUIT
CUIT del cliente.
Direccion La dirección del cliente.
Telefono
El teléfono del cliente.
REGISTRO (FILA)
Un registro es un conjunto de campos que
contienen los datos que pertenecen a una
misma repetición de entidad.
Codigo
Nombre
1Lucas
2Luis
Apellidos
Perez Lopez
Martin Perez
CUIT
Direccion
000000001Av/ calle 5
000000002 C/ Lope 15
Telefono
910002525
910002524
CLAVE UNICA
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 PRIMARIA
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 FORANEA
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.
INDICES
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.
¿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.
Componentes
•
•
•
•
Comandos
Claúsulas
Operadores
Funciones
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
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)
);
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');
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
Hansen
Svendson
Pettersen
FirstName
Ola
Tove
Kari
SELECT * FROM Persons;
el * selecciona todos los
campos de la tabla
Cláusulas
•
•
•
•
•
FROM
WHERE
GROUP BY
HAVING
ORDER BY
Operadores
• Lógicos:
– AND
– OR
– NOT
• Comparación: <, >, <>, <=, >=
Funciones
•
•
•
•
•
COUNT
SUM
MAX
MIN
AVG
Consulta básica
SELECT A
FROM B
Donde A son los datos que
requiero (columnas) y B es de
donde obtengo esos datos.
Ejemplo
SELECT nombre, apellidos, edad
FROM estudiantes
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.
Ejemplo
SELECT nombres, apellidos, edad
FROM estudiantes
WHERE edad > 21
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 (“.”) .
Ejemplo
SELECT c.nombres, f.nombres
FROM campus c, funcionarios f
WHERE c.id_campus = f.id_campus
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
Ejemplo con Alias
Select l.titulo, l.agno As AÑO
From libros l
TITULO
AÑO
Matemáticas
2007
Lenguaje y Comunicaciones
1998
Cs. Biológicas
2003
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_columna2
FROM nombre_tabla
GROUP BY nombre_columna1
GROUP BY: Ejemplo
tienda_info
nombre_tienda
ventas
fecha
Valdivia
1500
05-jan-2010
Temuco
250
07-jan-2010
Valdivia
300
08-jan-2010
Osorno
700
08-jan-2010
CONSULTA
SELECT nombre_tienda, SUM(ventas)
FROM tienda_info
GROUP BY nombre_tienda
RESULTADO
Valdivia
Temuco
Osorno
1800
250
700
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)
HAVING: Ejemplo
tienda_info
nombre_tienda
ventas
fecha
Valdivia
1500
05-jan-2010
Temuco
250
07-jan-2010
Valdivia
300
08-jan-2010
Osorno
700
08-jan-2010
CONSULTA
SELECT nombre_tienda, SUM(ventas)
FROM tienda_info
GROUP BY nombre_tienda
HAVING SUM(ventas) > 1500
RESULTADO
Valdivia
1800
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_columna2
FROM nombre_tabla
[ WHERE condicion]
ORDER BY nombre_columna1 [ASC, DESC]
ORDER BY: Ejemplo
tienda_info
nombre_tienda
ventas
fecha
Valdivia
1500
05-jan-2010
Temuco
250
07-jan-2010
Valdivia
300
08-jan-2010
Osorno
700
08-jan-2010
RESULTADO
CONSULTA
SELECT nombre_tienda, ventas, fecha
FROM tienda_info
ORDER BY ventas DESC
Valdivia
Osorno
Valdivia
Temuco
1500
700
300
250
05-jan-2010
08-jan-2010
08-jan-2010
07-jan-2010
OPERADORES LOGICOS
(AND-OR)
C1
C2 C1 AND C2
C1
C2
C1 OR C2
V
V
V
V
V
V
V
F
F
V
F
V
F
V
F
F
V
V
F
F
F
F
F
F
OPERADORES LOGICOS:
Ejemplo AND
tienda_info
nombre_tienda
ventas
fecha
Valdivia
1500
05-jan-2010
Temuco
250
07-jan-2010
Valdivia
300
08-jan-2010
Osorno
700
08-jan-2010
CONSULTA
SELECT *
FROM tienda_info
WHERE ventas > 500
AND nombre_tienda = ‘Valdivia’
RESULTADO
Valdivia
1500
05-jan-2010
OPERADORES LOGICOS:
Ejemplo OR
tienda_info
nombre_tienda
ventas
fecha
Valdivia
1500
05-jan-2010
Temuco
250
07-jan-2010
Valdivia
300
08-jan-2010
Osorno
700
08-jan-2010
CONSULTA
SELECT *
FROM tienda_info
WHERE ventas > 500
OR nombre_tienda = ‘Valdivia’
RESULTADO
Valdivia
Valdivia
Osorno
1500
300
700
05-jan-2010
08-jan-2010
08-jan-2010