BASES DE DATOS RELACIONALES

Almacena cada entidad/dato en una tabla
| id | usuario | pais | ciudad |
|---|---|---|---|
| 1 | juanLinares | Colombia | Bogotá |
| 2 | rosaRoja1 | Argentina | Buenos Aires |
Una fila representa un item/entidad
Una columna representa una propiedad de ese item
| id | nombre | apellido | fecha_afiliacion | descuento_vip |
|---|---|---|---|---|
| 1 | Juan | Castillo | 2018-06-08 | false |
| 2 | Diana | Quintero | 2017-12-22 | true |
Cada columna tiene un determinado tipo de dato: VARCHAR, BOOLEAN, DATE ...
| id | tipo | tasa |
|---|---|---|
| 101 | Rotativo | 1,3 |
| 102 | Libranza | 0,9 |
| 103 | Libre inversión | 1,5 |
| id | nombre | apellido | fecha_afiliacion |
|---|---|---|---|
| 1 | Juan | Castillo | 2018-06-08 |
| 2 | Diana | Quintero | 2017-12-22 |
Las relacionales reciben su nombre por su énfasis en las relaciones entre tablas
| id_usuario | id_credito |
|---|---|
| 1 | 101 |
| 1 | 103 |
| 2 | 102 |
USUARIOS
CREDITOS
CREDITOS DE CADA USUARIO
| id_usuario | nombre | apellido | fecha_afiliacion | id_credito | tipo | tasa |
|---|---|---|---|---|---|---|
| 1 | Juan | Castillo | 2018-06-08 | 101 | Rotativo | 1,3 |
| 1 | Diana | Quintero | 2018-06-08 | 103 | Libre Inv | 1,5 |
| 2 | Diana | Quintero | 2017-12-22 | 102 | Libranza | 0,9 |
Las relacionales reciben su nombre por su énfasis en las relaciones entre tablas
Cómo se vería la información sin las relaciones, repitiendo la información por usuario?

NO ES EFICIENTE
Lenguaje de consulta
SQL
Crear tablas
Actualizar los datos
Consultar la información que nos interesa
Agregar datos
PRACTIQUEMOS
/** Lista de carreras, estudiantes actuales y facultad a la que pertenecen:
Ingenieria de Sistemas (324) Ingenieria
Arquitectura (180) Arquitectura
Ciencias politicas (145) Ciencias sociales
Ingenieria Electrónica (100) Ingenieria
**/
CREATE TABLE carreras (nombre TEXT, cantidad INTEGER , facultad TEXT);
CREATE TABLE carreras (id INTEGER PRIMARY KEY, nombre TEXT, cantidad INTEGER , facultad TEXT);Necesitamos algo que nos ayude a identificar las columnas y que no varíe con el tiempo.
/** Lista de carreras, estudiantes actuales y facultad a la que pertenecen:
Ingenieria de Sistemas (324) Ingenieria
Arquitectura (180) Arquitectura
Ciencias politicas (145) Ciencias sociales
Ingenieria Electrónica (100) Ingenieria
**/
INSERT INTO carreras VALUES (1, 'Ingenieria de Sistemas' , 324, 'Ingenieria');Ahora podemos agregar datos a esa tabla que tenemos
Inserte las otras carreras
Qué sucede si usamos el mismo id para dos carreras?
Una vez tenemos datos, podemos proceder a consultarlos.
SELECT nombre FROM carreras;De cuál tabla queremos consultar
Qué información queremos ver.
Si queremos ver todos los atributos usamos un asterisco
*
Consultemos el nombre y cantidad de estudiantes de las carreras.
SELECT * FROM carreras WHERE nombre = 'Arquitectura';Condición o condiciones por la que queremos filtrar
CLAUSULA WHERE
Cómo consultaríamos las carreras con más de 150 estudiantes?
Cómo consultaríamos las carreras con más de 150 estudiantes y menos de 200?
CLAUSULA WHERE
En la claúsula WHERE puede ir cualquier función que soporta SQL (excepto las de agregación o resumen).
Operadores lógicos.
Operadores de comparación.
Operadores matemáticos y funciones relacionadas.
Operadores de cadena.
Operadores de fecha.
AND , OR , NOT
> , < , >= , <> , BETWEEN, IS NULL
concat, upper, substr
Ejecute las siguientes consultas:
SELECT nombre || ' - ' || cantidad as informacion FROM carreras;SELECT nombre FROM carreras WHERE cantidad BETWEEN 150 AND 200;SELECT UPPER(nombre) FROM carreras;SELECT SUBSTR(nombre, 2, 5) FROM carreras;ORDER BY
Organizar los resultados puede ser util.
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;Organice ascendentemente las carreras por sus cantidad de estudiantes.
FUNCIONES DE AGREGACION
Permiten efectuar operaciones sobre un conjunto de resultados devolviendo un único valor agregado para todos.
- COUNT
- MIN
- MAX
- SUM
- AVG
SELECT COUNT(*) FROM carreras;SELECT MAX(cantidad) FROM carreras;Cúal es el promedio de estudiantes?
GROUP BY
SELECT facultad, SUM(cantidad) FROM carreras GROUP BY facultad;A menudo se usa con las funciones de agregación. Permite agrupar por una o varias columnas.
| id | nombre | cantidad | facultad |
|---|---|---|---|
| 1 | Ingenieria de Sistemas | 324 | Ingenieria |
| 2 | Arquitectura | 180 | Arquitectura |
| 3 | Ciencias politicas | 145 | Ciencias sociales |
| 4 | Ingenieria Electrónica | 100 | Ingenieria |
JOINS
Permiten efectuar operaciones sobre un conjunto de resultados devolviendo un único valor agregado para todos.
Creemos la tabla cursos:
CREATE TABLE cursos (id INTEGER PRIMARY KEY, nombre TEXT, cupos INTEGER, carrera TEXT);Crucemos las dos tablas que tenemos:
SELECT * FROM carreras, cursos;Qué ocurre?
Podemos cruzar información de diferentes tablas:
SELECT * FROM carreras, cursos
WHERE carreras.nombre = cursos.carrera;LLAVES FORANEAS
Ayudan a relacionar dos tablas, usando la llave primaria de alguna.
Prevee datos inválidos, dado que debe corresponder a un valor de las llaves primarias de la tabla a la que apunta.
| id | nombre | cantidad | facultad |
|---|---|---|---|
| 1 | Ingenieria de Sistemas | 324 | Ingenieria |
| 2 | Arquitectura | 180 | Arquitectura |
| 3 | Ciencias politicas | 145 | Ciencias sociales |
| 4 | Ingenieria Electrónica | 100 | Ingenieria |
| id | nombre | cupos | id_carrera |
|---|---|---|---|
| 1 | Programación 1 | 50 | 1 |
| 2 | Programación 1 | 50 | 4 |
| 3 | Urbanismo 1 | 40 | 2 |
| 4 | Construcciones y seguridad | 30 | 2 |
CREATE TABLE cursos (
id int NOT NULL,
nombre text NOT NULL,
cupos int,
id_carrera int,
PRIMARY KEY (id),
FOREIGN KEY (id_carrera) REFERENCES carreras(id)
);ALTER TABLE Cursos
ADD FOREIGN KEY (id_carrera)
REFERENCES carrera(id);Resumiendo características
- Uso de llaves (keys): Cada fila en una tabla es identificada por una llave única (primary key).
- Se restringen los tipos de los datos.
- Evitar la redundancia de datos.
- SQL: Lenguaje de consulta estructurada.
- Integridad de los datos a través de restricciones : llaves primarias, foráneas, unique ...
- Transacciones como un todo o nada.
deck
By nychi713
deck
- 523