PadawansTrainer

Curso de SQL

Curso de SQL
Orientado a MySQL y MariaDB
Curso de manejo de base de datos bajo el estándar SQL, orientado a bases de datos MySQL / MaríaDB.
Sin condicionarse al lenguaje de backend, para que puedas integrarlo en un proyecto en PHP, Java, Python o simplemente administrar bases de datos desde un IDE o el CLI.
Explicado con un ejemplo que va incrementando y aplicando los conceptos explicados, desde las bases teóricas, el modelado de la base de datos y su completa administración.

¿Qué aprenderás?

Si estás arrancando de cero con bases de datos, este curso te lleva de la mano desde el primer "¿qué es una tabla?" hasta escribir consultas complejas como un experto.
Y si ya conocés las bases del lenguaje SQL pero sentís que te manejás solo con lo básico, acá vas a encontrar todo lo que te falta para poder encarar cualquier desarrollo: JOINs bien entendidos, subconsultas, procedimientos almacenados, triggers y todas las herramientas que separan al que "sabe usar MySQL" del que realmente lo domina.

Al terminar el curso vas a poder planificar y diseñar una base de datos desde cero, crear y modelar sus estructuras, y escribir consultas optimizadas para resolver cualquier necesidad administrativa o funcional.
Cada tema se explica con ejemplos prácticos, implementados sobre un proyecto troncal que verás crecer progresivamente, para que puedas ver cómo se integra al ámbito profesional.

En la última unidad vas a meterte con temas de administración de la base de datos como servicio, que te inician en el rol del DBA (Database Administrator), abriendo una puerta más al mercado laboral.

Atención: Este curso aún está en desarrollo y el temario sigue cargándose progresivamente, cuando se sube un nuevo video.
Más contenido disponible próximamente.

Módulo 1 - Fundamentos

Objetivos de curso

De qué se trata este curso de Base de Datos, cómo se integra en el ecosistema backend de la aplicación que esté haciendo.
Cuál es el objetivo que vamos a alcanzar al finalizar el curso.

Qué es una base de datos

Qué es una base de datos.
Qué es un servicio, diferencias con una aplicación.
Cuáles son los elementos que participan en la interacción con la base de datos.
El modelo cliente-servidor.
Bases de datos relacionales y no-relacionales

Qué es un SGBD (y qué es MySQL)

Qué hace un Sistema Gestor de Base de Datos. 
MySQL: para qué se usa, dónde se usa. 
Diferencia ente MariaDB, MySQL, PostgreSQL, SQL Server, Oracle y cuál elegir. 

Instalación del servidor MySQL

Instalar MySQL/MariaDB según el sistema operativo. 
Hosting, instalación de binarios o emuladores "all in one"
Cómo acceder a través del CLI. Las credenciales de conexión, el usuario root.
Comandos básicos desde la terminal para moverse dentro del servidor MySQL.

Interfaces para trabajar con MySQL

Cómo usar el CLI como herramienta del DBA.
Herramientas GUI: HeidiSQL y DBeaver.
PHPMyAdmin como alternativa estilo web app.

Cómo conectarse al servidor de base de datos.
Cómo explorar las bases de datos.
Cómo ejecutar el código SQL que vamos a aprender.

Módulo 2 - Teoría sobre MySQL

Anatomía de una base de datos

La estructura fundamental: base de datos → tabla → fila → columna.
Las bases de datos del sistema: MYSQL e INFORMATION_SCHEMA, qué información administran.

Cómo crear una base de datos (PHPMyAdmin)

Exploramos el PHPMyAdmin como interfaz para crear una base de datos.
Aprendemos qué es el character set y el collation.
Qué conjuntos de caracteres existen y cuáles se usan habiltualmente.
Diferencias entre latin1, utf8 y utf8mb4

Tipos de datos MySQL

Panorámica de los tipos de datos existentes.
Dónde y para qué se usan.
Los tipos de datos principales.

Tipos de datos Numéricos

INT, TINYINT, SMALLINT, BIGINT: cuándo usar cada uno.
DECIMAL vs FLOAT vs DOUBLE.
Qué es la precisión del punto flotante

Tipos de datos String

Los tipos de datos CHAR vs VARCHAR: diferencia real de almacenamiento
Qué son BINARY y VARBINARY.
TEXT vs BLOB y sus variantes.

Tipos de datos para Fechas

Los tipos de datos DATE, TIME e YEAR.
El tipo de dato DATETIME y su diferencia con TIMESTAMP

Tipos de datos Booleanos

El problema de los tipos de datos booleanos.
Los tipos BOOL y BOOLEAN.
Cómo se interpreta el BIT en MySQL / MariaDB.

Tipos de datos complejos

Los tipos de datos para pre-definir opciones: SET y ENUM:
Qué necesidades resuelven, cuándo convienen usarlos, diferencias entre ambos y sus limitaciones.

El tipo de dato JSON. Cuándo se incoporó su soporte nativo en MySQL.
Qué herramientas ofrece y cuándo tiene sentido usarlo en una base de datos relacional.

Anchura y atributos de columnas

Qué es la anchura del tipo de dato y qué representa según el tipo al que se lo defina.

Otos atributos que modifican el comportamiento de una columna.
Valores obligatorios y únicos.
Valores por defecto.
Atributos solo para números:

Atributos clave

Qué es una clave primaria (Primary Key), por qué toda tabla suele tener una.
Las claves primarias como números de serie.
Qué son las claves externas (Foreign Keys)

Módulo 3 - Modelado de Bases de Datos

Qué es el modelado de bases de datos
DER: Diagramar entidades y atributos
DER: Establecer las relaciones
DER: Grado y Cardinalidad de las relaciones
DER: Otras reglas de los diagramas
DER: Redundancias y Normalización
DER: Uso del MySQL Workbench para diagramar

Módulo 4 - El lenguaje de consultas SQL

Crear y eliminar bases de datos
Crear tablas
El Motor de almacenamiento
Claves primarias y únicas
Claves externas y sus posibles eventos
El constraint de tipo CHECK
Tablas de relación (N:N o Grado 3)
Modificar tablas y columnas
Insertar registros por VALUES
Insertar registros por SET
Eliminar registros
La cláusula WHERE
Conectivos lógicos
Actualizar registros
Insertar o actualizar registros (upsert)
Selección simple de registros
Seleccionar registros por valores nulos
Filtrar por rango de valores
Limitar la cantidad de registros obtenidos
Criterio de ordenamiento de registros
Unión de tablas por WHERE
Unión de tablas: solucionar ambigüedades
Unión de tablas por JOIN
Los JOIN de tipo LEFT y RIGHT
Unión de tablas con múltiples JOIN
Manipular los resultados nulos del JOIN
Unión de resultados por UNION

Módulo 5 - SQL Avanzado

Funciones para manipular cadenas de texto
Creación y búsqueda de substrings
Buscar registros por LIKE y FULLTEXT
Procesar fechas con DATE_FORMAT
Funciones para estipular o modificar fechas
Funciones matemáticas de MySQL
Funciones de agregado
Agrupación en las función de agregado
Filtrar los resultados de una función de agregado
Concatenación de filas por GROUP_CONCAT
Guardar archivos en el servidor SQL
Funciones para columnas de tipo JSON
Subconsultas
Tablas derivadas usando WITH
Estructura IF
Estructura CASE... WHEN
Implementación de Vistas
Transacciones: COMMIT y ROLLBACK
Funciones definidas por el usuario
Variables en MySQL
Procedimientos almacenados
Triggers
Expresiones regulares

Módulo 6 - Administración básica del servicio MySQL

Administración de usuarios MySQL
Gestión de permisos: GRANT, REVOKE
Manejo de índices
Backups con mysqldump
Restauración desde archivos .sql
Exportar datos en CSV
El archivo de configuración my.cnf