### 🛠Gestion des bases de données
#### Créer une base de données
```sql
CREATE DATABASE nomDB;
```
Crée une nouvelle base de données **nomDB**.
> [!Astuce]
> Utilise `IF NOT EXISTS` pour éviter une erreur si la base existe déjà :
>
> ```sql
> CREATE DATABASE IF NOT EXISTS nomDB;
> ```
>
#### Lister les bases de données disponibles
```sql
SHOW DATABASES;
```
Affiche la liste des bases de données disponibles sur le serveur.
#### Sélectionner une base de données
```sql
USE nomDB;
```
Change la base de données active pour exécuter les commandes suivantes à l’intérieur de `nomDB`.
---
### đź“‹ Gestion des tables
#### Créer une table dans une base de données
```sql
CREATE TABLE logins (
id INT,
username VARCHAR(100),
password VARCHAR(100),
date_of_joining DATETIME
);
```
Crée une table `logins` avec plusieurs colonnes :
- `id` → un entier
- `username` et `password` → chaînes de 100 caractères
- `date_of_joining` → une date et heure
> [!Astuce]
> Ajouter `PRIMARY KEY(id)` permet d'avoir un identifiant unique.
#### Lister les tables d’une base de données
```sql
SHOW TABLES;
```
Affiche toutes les tables présentes dans la base de données sélectionnée.
#### Afficher la structure d’une table
```sql
DESCRIBE $nomTable;
```
Affiche les colonnes d’une table, leur type, clé primaire, valeurs par défaut, etc.
---
### ✏️ Manipulation des données
#### Insérer un enregistrement complet dans une table
```sql
INSERT INTO table_name VALUES (column1_value, column2_value, column3_value, ...);
```
Ajoute un nouvel enregistrement en renseignant **toutes les colonnes** de la table.
#### Insérer un enregistrement avec certaines colonnes uniquement
```sql
INSERT INTO table_name(column2, column3, ...) VALUES (column2_value, column3_value, ...);
```
Ajoute un enregistrement en ne remplissant que certaines colonnes, les autres prennent leur valeur par défaut.
#### Insérer plusieurs enregistrements en une seule requête
```sql
INSERT INTO logins(username, password) VALUES ('john', 'john123!'), ('tom', 'tom123!');
```
Ajoute **plusieurs** utilisateurs d’un coup, ce qui est plus performant.
---
### 📊 Requêtes de sélection
#### Afficher tous les enregistrements d’une table
```sql
SELECT * FROM $nomTable;
```
Retourne **toutes** les lignes et colonnes d’une table.
#### Afficher uniquement certaines colonnes d’une table
```sql
SELECT column1, column2 FROM table_name;
```
Ne retourne que les colonnes spécifiées.
---
### đź”§ Modification de la structure des tables
#### Ajouter une nouvelle colonne
```sql
ALTER TABLE $nomTable ADD $nomColonne INT;
```
Ajoute une colonne de type **INT** Ă une table existante.
#### Renommer une colonne
```sql
ALTER TABLE $nomTable RENAME COLUMN $ancienNom TO $nouveauNom;
```
Modifie le nom d'une colonne existante.
#### Modifier le type d’une colonne
```sql
ALTER TABLE $nomTable MODIFY $nomColonne DATE;
```
Change le type d’une colonne existante.
#### Supprimer une colonne
```sql
ALTER TABLE $nomTable DROP $nomColonne;
```
Supprime une colonne définitivement.
---
### 🔄 Mise à jour des enregistrements
#### Modifier les valeurs d’une colonne pour certains enregistrements
```sql
UPDATE logins SET password = 'change_password' WHERE id > 1;
```
Modifie la colonne `password` de **tous les utilisateurs dont `id` est supérieur à 1**.
---
### ❌ Suppression de données
### Supprimer un enregistrement spécifique
```sql
DELETE FROM logins WHERE id = 3;
```
Supprime l’utilisateur dont `id` est `3`.
#### Supprimer tous les enregistrements d’une table (sans supprimer la table elle-même)
```sql
DELETE FROM logins;
```
> [!Attention]
> Cette commande **supprime toutes les données** de la table `logins`, mais conserve la table.
#### Supprimer une table entière
```sql
DROP TABLE logins;
```
Supprime définitivement la table et **toutes ses données**.