![](https://s3.amazonaws.com/media-p.slid.es/uploads/385983/images/5456979/my-sql-logo.png)
![](https://media.giphy.com/media/RM4wYXmnt3zaM/giphy.gif)
![](https://media.giphy.com/media/VwTPbIxJyN1w4/giphy.gif)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/385983/images/5456996/why-dolphin.png)
Bases de Datos
En resumen...
![](https://i.imgflip.com/1pp3kh.jpg)
Una Base de Datos es una colección de información, que persiste en el tiempo y podemos consultar
Ejemplos de Bases de Datos
- Un cuaderno
- Una agenda
- Una biblioteca
- Una planilla de cálculo
- Local Storage?
Una Base de Datos nos permite almacenar la información de forma organizada, estructurada, ordenada y segura, de tal modo que sea fácil de acceder, gestionar y actualizar
Tipos de Bases de Datos
Hay muchos...
![](https://s3.amazonaws.com/media-p.slid.es/uploads/385983/images/5457172/dbs-types.png)
Pero ahora sólo nos interesan...
![](https://s3.amazonaws.com/media-p.slid.es/uploads/385983/images/5457199/relational-dbs.png)
Gestor de Base de Datos
(Database Management System ó DBMS)
Son aplicaciones que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada
Adivinen qué...
También hay muchos...
![](https://s3.amazonaws.com/media-p.slid.es/uploads/385983/images/5457305/rdbms.png)
Pero sólo nos interesan los RDBMS, como MySQL
![](https://memegenerator.net/img/instances/55764135/its-a-relational-database-i-know-this.jpg)
Entonces, ¿qué es una Base de Datos relacional?
Una Base de Datos relacional almacena la información en tablas, que se relacionan entre sí
![](https://media.giphy.com/media/3oKIPfv7sjANPRdW1i/giphy.gif)
Algo así como un Excel, pero más pro
![](https://s3.amazonaws.com/media-p.slid.es/uploads/385983/images/5457401/table.png)
Ejemplo de tabla en HD
Las tablas tienen claves primarias (PK, Primary Key) que identifican unívocamente a cada elemento (fila) y claves foráneas (FK, Foreign Key) que las relacionan con otras tablas
Una Base de Datos Relacional está compuesta por 1 o más tablas: es el bloque fundamental
Cuando definimos las tablas que componen nuestra DB, estamos imponiendo reglas sobre los datos que almacenamos
El DBMS (en nuestro caso, MySQL), se va a encargar de hacer cumplir esas reglas (ej: no podemos ingresar datos no numéricos en una columna que definimos de tipo INT)
Volviendo a nuestra API de Espotifai
id | name |
---|---|
1 | The Voidz |
2 | Name The Band |
3 | Wild Freedom |
4 | Medusa Box |
5 | Sin Rencores |
artists
PK
id | name | artist_id | year |
---|---|---|---|
1 | Virtue | 1 | 2018 |
2 | Tyranny | 1 | 2014 |
3 | Summer Lush | 2 | 2016 |
4 | Just Add Sugar | 2 | 2012 |
5 | Set the Night on Fire | 3 | 2017 |
6 | Nothing Behind All Of These Masks | 4 | 2017 |
7 | Pay For It | 4 | 2015 |
8 | Juego Sucio | 5 | 2014 |
albums
PK
FK
Claves sintéticas
(ó subrogadas) vs naturales
Tipos de Datos
id | name | artist_id | year |
---|---|---|---|
1 | Virtue | 1 | 2018 |
2 | Tyranny | 1 | 2014 |
3 | Summer Lush | 2 | 2016 |
4 | Just Add Sugar | 2 | 2012 |
5 | Set the Night on Fire | 3 | 2017 |
6 | Nothing Behind All Of These Masks | 4 | 2017 |
7 | Pay For It | 4 | 2015 |
8 | Juego Sucio | 5 | 2014 |
albums
INT
VARCHAR(100)
INT
INT
ABRO PARÉNTESIS
(
¿Qué lenguajes vimos hasta ahora?
HTML
CSS
JavaScript
CIERRO PARÉNTESIS
)
Necesitamos otro tipo de lenguajes para comunicarnos con una Base de Datos
A través de estos lenguajes, podemos consultar y hacer operaciones en una Base de Datos
Por eso se conocen como Lenguajes de Consulta
Para Bases de Datos Relacionales, vamos a utilizar un lenguaje en particular...
SQL
Structured Query Language
ese-cu-ele?
sicuel?
es-quiu-el?
🤔
eze-qui-el?
![](https://i.redd.it/rms5mdk77lp11.jpg)
(Yo le voy a decir sicuel)
A diferencia de JavaScript, SQL es un lenguaje declarativo
Consultas a la Base de Datos
Para realizar consultas, utilizamos las queries
Entonces... ¿qué les parece si practicamos un poco?
![](https://media.giphy.com/media/xT5LMO3YmRaaL7s3Is/giphy.gif)
Tutorial: SQLBolt
Estructura de una consulta
SELECT [column1, column2, etc]
FROM [table]
WHERE [condition1, condition2, etc]
ORDER BY [column_name, ASC/DESC]
LIMIT [from, size]
![](https://i.imgflip.com/2mlbfb.jpg)
Ejercicios
![](https://media.giphy.com/media/Px2Zu55ofxfO0/giphy.gif)
SELECT
Text
SELECT
<nombreColumna>
FROM
<nombreTabla>
¿Y si quiero traer todas las columnas de una tabla, tengo que listar una por una?
No.
Text
SELECT
*
FROM
<nombreTabla>
WHERE
Nos permite filtrar
Text
SELECT
column1, column2, ...
FROM
table_name
WHERE
condition;
Ejercicio #1
Ejercicio #2
INSERT
Text
INSERT INTO
table_name (column1, column2, column3, ...)
VALUES
(value1, value2, value3, ...);
Ejercicio #3
ORDER BY
Text
SELECT
column1, column2, ...
FROM
table_name
ORDER BY
column1, column2, ... ASC|DESC;
Ejercicio #4
Ejercicio #5
Ejercicio #6
SELECT DISTINCT
Text
SELECT DISTINCT
column1, column2, ...
FROM
table_name;
Ejercicio #7
SUM
Text
SELECT SUM(numeric_column_name)
FROM
table_name
WHERE
condition;
Ejercicio #8
![](https://media.giphy.com/media/3oKIPuvcQ6CcIy716w/giphy.gif)
Intro a DBs (MySQL), Parte 1
By Nicolás Quiroz
Intro a DBs (MySQL), Parte 1
- 231