TL;DR
Quoi : La base de données relationnelle open-source la plus populaire au monde.
Pourquoi : Fiable, rapide, largement supportée, idéale pour les applications web.
Quick Start
Installation :
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
Connexion :
mysql -u root -p
Créer une base et une table :
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
| Commande | Description |
|---|---|
SHOW DATABASES; | Lister les bases de données |
USE dbname; | Sélectionner une base |
SHOW TABLES; | Lister les tables |
DESCRIBE table; | Afficher la structure |
SELECT * FROM table; | Requêter toutes les lignes |
INSERT INTO table (...) VALUES (...); | Insérer une ligne |
UPDATE table SET ... WHERE ...; | Mettre à jour des lignes |
DELETE FROM table WHERE ...; | Supprimer des lignes |
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 - Documentation officielle
- MySQL Tutorial - Apprendre MySQL
- MySQL Workbench - Outil GUI
- PlanetScale - MySQL serverless