---
# System prepended metadata

title: SQL
tags: [SQL]

---

# SQL

Nous avons installé sur notre machine mariadb, qui est un système de gestion de bases de données relationnel(SGDBR). Pour communiquer avec la base de données, nous utiliserons le langage SQL sous forme de requêtes.

### Le typage de données

* bigint -> Entier sur 8 octets, pouvant être utilisé pour les ids.
* boolean -> Renverra true ou false.
* date -> Année, mois, jour.
* integer -> Entier sur 4 octets.
* json -> Renvoi du json.
* text -> Pour du texte et sans limite de caractères.
* varchar(50) -> Une string de 50 caractère. Varchar peut supporter 255 caractères maximum.

### Se connecter à mariaDB en ligne de commande

```mariadb -u simplon -p 1234```
-u : username
-p : password

### Créer une base de données
```
CREATE DATABASE `test` IF NOT EXISTS `test`;

/* Créé la base de données `test` si elle n'existe pas déjà. */
```

### Afficher toutes les bases de données
```
SHOW DATABASES;
```

Nous utilisons également l'extension VScode **MySQL** il nous suffira de refresh la base de données à partir de cette extension pour la voir apparaître aussi dans notre editeur de code.

### Selectionner une base de données spécifique 
```
USE `test`;

/* La base de données est sélectionnée. */
```

### Créer une table
```
CREATE TABLE user (
user_id INTEGER PRIMARY KEY AUTO_INCREMENT, 
first_name VARCHAR(50) NOT NULL, 
last_name VARCHAR(50) NOT NULL, 
email VARCHAR(100) NOT NULL UNIQUE KEY, 
password VARCHAR(255) NOT NULL,
active BOOLEAN DEFAULT NULL
);

/* Créer une table `user`. */
```

### Insérer des données à l'intérieur d'une table
```
INSERT INTO user (first_name, last_name, email, password) 
VALUES 
(Jean, Demel, jdemel@mail.fr, 1234),
(Pierre, Leboss, pleboss@mail.fr, bloup);

/* Deux utilisateurs ont été ajouté à la base de données. */
```

### Modifier une table existante

Ajouter une colonne à la table,
```
ALTER TABLE user ADD adress VARCHAR(100);

/* Ajoute une colonne addresse à la table `user`. */
```

### Modifier des données

```
UPDATE `user` SET age = 38 WHERE `id` = 1; 

/* Modifie l'age de l'utilisateur ayant l'id 1. */
```

### Récupérer les données d'une table

```
SELECT `name` FROM `user` WHERE `id` = 2;

/* Récupère le nom de l'utilisateur ayant l'id 2. */
```

### Supprime une table

```
DROP table `user`;

/* Supprime la table `user`. */
```

### Supprime des données

```
DELETE FROM `user` WHERE `id` = 2;

/* Supprime l'utilisateur ayant l'id 2. */
```

Il est possible d'ajouter, de modifier, de selectionner et de supprimer autant de colonnes et de données souhaitées via de nombreuses requêtes. 
[Vous les trouverez toutes ici.](https://sql.sh/)


###### tags: `SQL`