Aller au contenu

Gérer une base de données

Créer une base de données

SQL
CREATE DATABASE test_db;

Ceci créer une base de données nommée test_db.

Mais il y a un problème, supposons qu'elle existe, cela va nous créer une erreur. Nous pouvons toute fois y remédier avec un petit ajout :

SQL
CREATE DATABASE IF NOT EXISTS test_db;

Il va alors créer la base de données UNIQUEMENT si aucune base de données à ce nom.

Supprimer une base de données

SQL
DROP DATABASE test_db;

Ceci supprime une base de données nommée test_db.

Mais même cas, si cela n'existe pas, il y aura une erreur et comme pour avant, il y a :

SQL
DROP DATABASE IF EXISTS test_db;

Il va alors supprimer la base de données UNIQUEMENT si il y a une base de données à ce nom.

Créer une table

Supposons que nous avons créer la base de données test_db.

Nous voulons rajouter une table simple qui contient id, email, password, code et created_at. Rien de plus, rien de moins. On va l'appeler Users.

Il faut savoir plusieurs choses dans ce cas, il faut penser aux types des variables (int, varchar, date, datetime, etc...) et il faut toujours une clé primaire par table. La clé primaire est un identifiant unique d'une colonne. Dans notre cas, sa sera id et on va l'auto-incrémenté (augmente à chaque ajout d'une ligne).

Voici la commande pour créer une base de données :

SQL
CREATE TABLE test_db.Users (
    id int(11) auto_increment NOT NULL,
    email varchar(256) NOT NULL,
    password varchar(128) NOT NULL,
    code varchar(10) NULL DEFAULT NULL,
    created_at TIMESTAMP DEFAULT now() NOT NULL,
    CONSTRAINT Users_PK PRIMARY KEY (id),
    CONSTRAINT Users_email_UNIQUE UNIQUE KEY (email),
    CONSTRAINT Users_code_UNIQUE UNIQUE KEY (code)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci;

Il y a quelques particularités que je vais expliqué ici.

Déjà, vous avez remarqué qu'à quasiment toutes les lignes, il y a NULL ou NOT NULL. Il faut générallement en mettre à chaque ligne et cela détermine si la variable peut-être null ou doit avoir un contenu.

À la ligne created_at, vous voyez DEFAULT now(). Cela veut dire que la valeur par défaut de cette variable sera la date d'ajout de la ligne. Il y a aussi DEFAULT NULL, cela veut juste dire que par défaut, la valeur est vide, qu'elle ne contient rien.

Il y a aussi CONSTRAINT Users_PK PRIMARY KEY (id) qui définit la clé primaire.

Il y a aussi CONSTRAINT Users_email_UNIQUE UNIQUE KEY (email) qui définit que cette valeur doit être unique et ne peut pas être en doublon dans la table. À SAVOIR, si une colonne est unique et nullable, null est la seule "valeur" qui peut-être attribué à plusieurs endroits car il signifie qu'il n'y a rien.

ENGINE=InnoDB définit le moteur qui gère la table.

Les lignes ci-dessous définissent la table de caractère utilisé pour cette table. Elle peut varié en fonction des besoins linguistiques.

SQL
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci`

Supprimer une table

Comme pour les bases de données, on peut mettre un IF EXISTS.

SQL
DROP TABLE IF EXISTS test_db.Users;

Cela supprime la table Users ainsi que toutes ces données.