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
| Comando | Descripció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
- MySQL Documentation - Documentación oficial
- MySQL Tutorial - Aprender MySQL
- MySQL Workbench - Herramienta GUI
- PlanetScale - MySQL serverless