---
tags:
- SQL
---
*florian quand je lui demande de l'aide*
# SQL pour les tung tung tung sahur (22/01/26)
## Modèle MVC
> Le modèle MVC est une façon de concevoir un projet logiciel, en gros on sépare celui-ci en trois grandes parties distinctes séparant la logique de la vue et rend le travail plus facile.
Modèle MVC en prenant celui de grabber par exemple :
- Model = Base De Donnée (ex: EMPLOYEES, COMPUTERS)
- View = Tableau de bord, Site
- Controller = Cerveau qui dirige les deux parties Model et View (ex: app.py)
## TUTO : COMMENT CR2ER UNE BDD SQL FACILEMENT EN 2 MINUTES (SUPER FACILE)
### Structure d'une Base De Données
*celle de grabber pour l'exemple*
```
BDD (Etape 1) - grabberman
├── TABLES (Etape 2) - COMPUTERS
│ ├── Colonne (Etape 3) - PcId, entier/clé primaire
│ │ └── Donnée (Etape 4)
│ ├── Colonne (Etape 3) - Hostname, chaîne de charactère
│ └── Colonne (Etape 3) - MacAddress, chaîne de charactère
└── TABLES (Etape 2) - EMPLOYEES
├── Colonne (Etape 3) - UserId, entier/clé primaire
├── Colonne (Etape 3) - Username, chaîne de charactère
└── Colonne (Etape 3) - PcId, clé secondaire
```
### Etape 1 : Créer une BDD
`sqlite3 grabberman.db` <- Commande qui crée une DB qu'on appellera ici "grabberman"
### Etape 2 : Créer une table
```sql
CREATE TABLE "COMPUTERS"
(
PcId INTEGER PRIMARY KEY AUTOINCREMENT,
Hostname VARCHAR(50) NOT NULL,
MacAddress VARCHAR(50)
);
```
!!! note
Ici on crée une table dans laquelle on stockera des données (des PC que l'on grab par exemple)
### Etape 3 : Ajouter des données dans une table
`INSERT into COMPUTERS (Hostname, MacAddress) VALUES ('mypc', '1B:12:F0:FL:94');`
!!! note
Pour ajouter une donnée dans une tableau, on **INSERE** dans le **TABLEAU** donné les **VALEURS** dans les **Colonnes**
### Etape 4 : Créer un autre tableau avec une clé liée (foreign key)
```sql
CREATE TABLE "EMPLOYEES"
(
UserId INTEGER PRIMARY KEY AUTOINCREMENT,
Username VARCHAR(50) NOT NULL,
FOREIGN KEY (PcId) REFERENCES COMPUTERS(PcId)
);
```
!!! note
On recommence comme à l'étape 2, en ajoutant une clé étrangère **foreign key**, qui lie une clé extérieure, **PcId** ici, dans notre second Tableau