4. Base de Datos
Bases de Datos Relacionales
Manejador de Base de Datos
ORACLE, SQLServer
Postgres, MySQL
Sistema de Gestión de Archivos¿?
Modelos:
Entidad Relación (ER)
ER Extendido
Relacional
Tablas (Entidades o relaciones, propiedades)
Claves: primarias, alternas, foráneas (importancia)
BBDD Conceptos Básicos
5. SQL ANSI 92 (estándar… lenguaje universal)
PL/SQL (Procedure Language / SQL) extensión
SQL + Elementos de Leng. Programación
Ejemplos:
• Postgres: PL/PgSQL
• SQLServer: Transact SQL
Introducción a SQL
11. CREAR / MODIFICAR UNA TABLA
CREATE TABLE PERSONA (
id varchar(10) NOT NULL,
nombre varchar(20) NOT NULL,
apellido varchar(20) NOT NULL,
fecha_nacimiento date
);
12/12/1980PerazaEliecerE-13728304
23/03/1979CamposRodolfoV-14532176
fecha_nacimientoapellidonombreid
DML (Data Definition Language)
12. MODIFICAR / ELIMINAR UNA TABLA
ALTER TABLE PERSONA
ADD CONSTRAINT PK_PERSONA primary key (id);
ALTER TABLE PERSONA
ADD COLUMN ZIPCODE INT;
DROP TABLE PERSONA;
DML (Data Definition Language)
13. INDICES
CREATE INDEX I_APELLIDO
ON PERSONA (APELLIDO ASC);
DROP INDEX PERSONA.I_APELLIDO;
Nota: ¡Las claves primarias son índices!
DML (Data Definition Language)
15. Traducción a Tablas BBDD o modelo relacional
LIBRERIA
rif
direccion
nombre
apellido
nombre
id
titulo
autor
id
f. nac.precio_s monto
fecha
OFRECE
rif
id
LIBRO COMPRA LECTOR
idLector
idLibro
rifprecio_s
Ejemplo del Curso
direccion
16. CONSULTAS (Sentencia SELECT)
SELECT [ALL | DISTINCT ]
<nombre_campo> [{,<nombre_campo>}]
FROM <nombre_tabla>|<nombre_vista>
[{,<nombre_tabla>|<nombre_vista>}]
[WHERE <condicion> [{ AND|OR <condicion>}]]
[GROUP BY <nombre_campo> [{,<nombre_campo >}]]
[HAVING <condicion>[{ AND|OR <condicion>}]]
[ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC]
[{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]
Nota: cuando existe más de una tabla en la sentencia FROM estamos en
presencia de JOIN o ‘CONSULTA COMBINADA’
DML (Data Manipulation Language)
17. CONSULTAS (Sentencia SELECT)
El comodín de la selección * (tips)
Consultas simples generales
Consultas simples específicas (WHERE,AND,OR,NOT)
Valores distintos sin repeticiones (DISTINCT)
Quiero ordenar mis datos (ORDER BY, ASC, DESC)
Las consultas combinadas (INNER JOINs)
Otros combos LEFT, RIGHT y FULL OUTER JOIN, UNION
Agrupaciones y estadísticas (GROUP BY, HAVING)
Será que existe un registro con… (EXISTS)
Cómo coloco rangos de condiciones? (BETWEEN…AND)
Es algo como… (Expresiones regulares, LIKE)
Profundidad de subconsultas (IN)
DML (Data Manipulation Language)
18. CONSULTAS (Sentencia SELECT)
Datos de Librerías
Datos de Lectores
Lectores mayores de 18 años
Autor preferido por Lector
Libro más vendido
Libro más vendido en 1980
DML (Data Manipulation Language)
19. INSERCIONES (Sentencia INSERT)
Inserción Simple
INSERT INTO <nombre_tabla> [(<campo1>[,<campo2>,...])]
VALUES (<valor1>[,<valor2>,...]);
Inserción múltiple
INSERT INTO <nombre_tabla> [(<campo1>[,<campo2>,...])]
SELECT [(<campo1>[,<campo2>,...])]
FROM <nombre_tabla_origen>;
Nota: No necesariamente el SELECT debe ser una consulta simple…
DML (Data Manipulation Language)
20. INSERCIONES (Sentencia INSERT)
Inserción Simple
Vamos a insertar un nuevo libro
Imaginemos el proceso de una compra
Inserción múltiple
Me han solicitado una tabla para autores
Nota: No se va a expresar la mejor manera de modelarlo en el ER, son
ejemplos para queries.
DML (Data Manipulation Language)
21. ACTUALIZACIONES (Sentencia UPDATE)
UPDATE <nombre_tabla>
SET <campo1> = <valor1>
{[,<campo2> = <valor2>,...,<campoN> = <valorN>]}
[ WHERE <condicion>];
Nota: los valores pueden no ser una constante, pueden venir de una consulta
DML (Data Manipulation Language)
22. ACTUALIZACIONES (Sentencia UPDATE)
Actualización Simple
Vamos a cambiarle la dirección a Rodolfo
Actualización múltiple
Todos los libros de García Márquez cuestan
ahora BsF. 100.
Usando subqueries¿?
Con la nueva tabla Autor, surge la necesidad de
cambiar la tabla libro, y colocar el id de autor
en lugar del nombre completo.
Nota: esto último conlleva otras cosas además del update.
DML (Data Manipulation Language)
23. ACTUALIZACIONES (Sentencia UPDATE)
ALTER TABLE LIBRO
alter column autor int not null;
ALTER TABLE LIBRO
add constraint FK_LIBRO_AUTOR foreign key (autor)
references AUTOR (id);
UPDATE LIBRO
SET autor = (SELECT id FROM AUTOR
WHERE AUTOR.id = LIBRO.autor )
DML (Data Manipulation Language)
24. ELIMINACIONES (Sentencia DELETE)
DELETE FROM <nombre_tabla>
[WHERE <condicion>];
TRUNCATE TABLE <nombre_tabla>;
Notas:
• La sentencia TRUNCATE no es transaccional, no se puede deshacer.
• No posee cláusula WHERE
• No todos los manejadores la poseen.
DML (Data Manipulation Language)
25. DML (Data Manipulation Language)
Eliminamos los libros de Pedro Pérez
Si, ése autor ya no escribe más, elimínalo
Quiero hacer borrón y cuenta nueva de los libros,
de dos maneras distintas. (DELETE & TRUNCATE)
ELIMINACIONES (Sentencia DELETE & TRUNCATE)