MySQL

Base de datos relacional open-source popular - transacciones ACID, replicacion, ampliamente soportada

TL;DR

Qué: La base de datos relacional de código abierto más popular del mundo.

Por qué: Confiable, rápida, ampliamente soportada, ideal para aplicaciones web.

Quick Start

Instalación:

macOS:

brew install mysql
brew services start mysql

Linux (Ubuntu):

sudo apt install mysql-server
sudo systemctl start mysql

Docker:

docker run --name mysql -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 -d mysql:8

Conectar:

mysql -u root -p

Crear base de datos y tabla:

CREATE DATABASE myapp;
USE myapp;

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  email VARCHAR(100) UNIQUE,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Cheatsheet

ComandoDescripción
SHOW DATABASES;Listar bases de datos
USE dbname;Seleccionar base de datos
SHOW TABLES;Listar tablas
DESCRIBE table;Mostrar estructura de tabla
SELECT * FROM table;Consultar todas las filas
INSERT INTO table (...) VALUES (...);Insertar fila
UPDATE table SET ... WHERE ...;Actualizar filas
DELETE FROM table WHERE ...;Eliminar filas

Gotchas

Basic CRUD

-- Insert
INSERT INTO users (name, email) VALUES ('John', '[email protected]');

-- Select
SELECT * FROM users WHERE email LIKE '%@example.com';
SELECT name, email FROM users ORDER BY created_at DESC LIMIT 10;

-- Update
UPDATE users SET name = 'Jane' WHERE id = 1;

-- Delete
DELETE FROM users WHERE id = 1;

Joins

SELECT users.name, orders.total
FROM users
INNER JOIN orders ON users.id = orders.user_id
WHERE orders.total > 100;

Indexes

-- Create index for faster queries
CREATE INDEX idx_email ON users(email);

-- Show indexes
SHOW INDEX FROM users;

User management

CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON myapp.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;

Next Steps