Réservez les formations disponibles partout en France !

location-dot
location-dot
location-dot
À partir de
location-dot
image OFimage OF
  1. Accueil
  2. Pages guide
  3. Comment créer une base de données en SQL ?

Comment créer une base de données en SQL ?

C’est souvent la toute première question qu’on se pose quand on veut faire parler les données.

Vous travaillez avec des fichiers Excel trop lourds ? Vous gérez manuellement des listes de clients, de produits ou de commandes ? Il est peut-être temps de passer à la vitesse supérieure : structurer vos données avec une vraie base relationnelle.


Pas besoin d’être développeur pour s’y mettre. Avec SQL (Structured Query Language), vous pouvez créer votre propre base de données, depuis zéro, et gérer vos informations comme un pro. C’est simple, clair, et une fois qu’on a compris la logique, on ne revient plus en arrière.


Dans ce tutoriel pas à pas, on vous montre exactement comment faire :

  • Quel outil installer pour démarrer
  • Comment créer votre première base
  • Quelles tables concevoir et comment les relier entre elles
  • Les bonnes pratiques à connaître (et les pièges à éviter)

Un guide conçu pour les débutants, les pros métiers et tous ceux qui veulent gagner en efficacité avec leurs données.

Étape 1 – Comprendre ce qu’est une base relationnelle

Avant de créer une base de données, il est important de bien comprendre comment les informations y sont organisées. Une base relationnelle repose sur un principe simple : chaque type d'information est rangé dans une table dédiée, et ces tables peuvent être reliées entre elles.

Définition claire et utile

Une base de données relationnelle, c’est un ensemble structuré de tables, comme des feuilles Excel intelligentes. Chaque table contient des lignes (les enregistrements) et des colonnes (les champs).


Mais contrairement à un simple fichier tableur, une base relationnelle vous permet de lier les tables entre elles grâce à des identifiants. Ce lien, c’est la relation.


Exemple concret :

Imaginons que vous gérez un petit site e-commerce. Vous pourriez organiser vos données ainsi :

  • Une table clients (nom, email, date d’inscription)
  • Une table commandes (date, client concerné, total)
  • Une table produits (nom, prix, stock)

Ces trois tables sont distinctes, mais connectées. Par exemple, une commande fait toujours référence à un client, sans avoir à recopier toutes ses informations dans chaque ligne.

Grâce aux relations entre les tables, vous évitez les doublons, limitez les erreurs et gagnez en performance. C’est le socle de toute base de données bien pensée.

Ce qu’il vous faut pour démarrer

Pour créer une base SQL et y interagir, il vous faut deux éléments :


Un SGBD (Système de Gestion de Base de Données)


C’est le logiciel qui gère votre base : il enregistre vos tables, exécute les requêtes SQL et maintient l’intégrité des données. Voici les plus utilisés :

  • MySQL
    Populaire, gratuit et facile à prendre en main. Il est utilisé sur un grand nombre de sites web, notamment en environnement WordPress.

  • PostgreSQL
    Plus robuste et puissant, il convient parfaitement aux projets nécessitant des analyses de données poussées ou une grande fiabilité.

  • SQLite
    Ultra léger et autonome, il ne nécessite pas d’installation serveur. Idéal pour les tests locaux ou les petites applications embarquées.

Une interface graphique (facultative, mais recommandée)


Elle facilite l’interaction avec le SGBD sans passer uniquement par des lignes de commande.

  • PhpMyAdmin (souvent inclus avec XAMPP) : idéal pour MySQL/MariaDB
  • DBeaver : compatible avec plusieurs bases (MySQL, PostgreSQL, SQLite…) via une interface unifiée

Conseil pratique 

Installer un outil tout-en-un comme XAMPP (qui embarque Apache, MySQL et PhpMyAdmin) est une excellente porte d’entrée pour les débutants.

Étape 2 – Créer votre première base SQL

Vous avez installé un SGBD comme MySQL, PostgreSQL ou SQLite ? Très bien. On peut maintenant passer à la création de votre première base de données.


Créer une base de données, c’est comme créer un dossier vierge prêt à accueillir vos futures tables. Et en SQL, cela se fait avec une commande simple et directe.

La commande à retenir : CREATE DATABASE

Avant de créer vos premières tables, vous devez commencer par définir un espace de travail : une base de données. En SQL, cela se fait très simplement avec la commande CREATE DATABASE, suivie du nom de la base que vous souhaitez créer.


Par exemple :


CREATE DATABASE boutique_en_ligne;


Cette instruction initialise une base vide. Aucune table n’y est encore présente, mais vous disposez désormais d’un espace où structurer toutes vos données. Pour indiquer au système que vous souhaitez travailler dans cette base, vous devez ensuite la sélectionner à l’aide de la commande :


USE boutique_en_ligne;


À partir de ce moment, toutes les commandes que vous taperez s’appliqueront à cette base et à elle seule. Il s’agit d’un réflexe fondamental : si vous oubliez d’exécuter USE, vous risquez de créer vos tables dans la mauvaise base… ou de rencontrer des erreurs.


Voici quelques bonnes pratiques à garder en tête dès la création :

  • Utilisez des noms explicites et évocateurs pour vos bases.
  • Évitez les espaces, accents, majuscules et caractères spéciaux.
  • Privilégiez les underscores (_) pour séparer les mots.
  • Ne nommez pas votre base test ou data : soyez précis.

Où taper cette commande ?

Cela dépend de l’outil que vous utilisez :

  • PhpMyAdmin → allez dans l’onglet SQL, tapez la commande et validez.
  • DBeaver → clic droit sur le serveur > Nouvelle base de données ou utilisez l’éditeur SQL.
  • Terminal ou invite de commande → tapez directement votre code SQL.

Vérifier que la base est bien créée

Une fois votre base de données créée, vous pouvez vérifier qu’elle a bien été enregistrée par le serveur. Pour cela, utilisez la commande suivante :


SHOW DATABASES;


Cette requête affiche la liste complète de toutes les bases de données actuellement disponibles sur votre serveur. Si le nom de votre base apparaît, tout fonctionne correctement et vous pouvez passer à la suite.

Astuce :

Vous pouvez créer plusieurs bases sur un même serveur : une pour vos tests, une autre pour la production, ou encore pour des projets distincts.

Étape 3 – Créer une première table pour stocker vos données

Votre base est désormais prête, mais elle est encore vide. Pour stocker des données, vous devez créer une ou plusieurs tables. Une table représente un type d'information bien défini : par exemple, les clients, les commandes ou les produits.


Chaque table est composée de colonnes (qui décrivent les champs à enregistrer, comme le nom ou l’email) et de lignes (chaque ligne étant un enregistrement unique).


Voici un exemple de création de table SQL pour enregistrer des clients :


CREATE TABLE clients ( id INT PRIMARY KEY, nom VARCHAR(100), email VARCHAR(100), date_inscription DATE );


Cette commande crée une table nommée clients avec quatre colonnes :

  • id : identifiant unique du client. Il est défini comme PRIMARY KEY, ce qui signifie que chaque ligne aura une valeur unique dans cette colonne.
  • nom : nom du client, jusqu’à 100 caractères.
  • email : adresse email du client, également limitée à 100 caractères.
  • date_inscription : date à laquelle le client a été ajouté dans la base, au format AAAA-MM-JJ.

Chaque colonne est associée à un type de données adapté à son contenu : INT pour les nombres entiers, VARCHAR pour le texte court, et DATE pour les dates.

Quelques bonnes pratiques à suivre

  • Ajoutez toujours une PRIMARY KEY pour garantir qu’aucune ligne ne soit dupliquée.
  • Utilisez des noms clairs et explicites pour vos colonnes (évitez les abréviations obscures).
  • Choisissez des types de données cohérents avec la réalité (n’utilisez pas VARCHAR pour stocker des dates).
  • Prévoyez une taille raisonnable pour chaque champ. Inutile d’autoriser 500 caractères pour un prénom.

Ajouter des contraintes pour fiabiliser la table

Voici une version améliorée de notre table clients, avec quelques contraintes supplémentaires :


CREATE TABLE clients ( id INT PRIMARY KEY AUTO_INCREMENT, nom VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE, date_inscription DATE DEFAULT CURRENT_DATE );


Ce que cela ajoute :

  • AUTO_INCREMENT : l’identifiant id est généré automatiquement à chaque nouvel ajout.
  • NOT NULL : la colonne nom ne peut pas rester vide.
  • UNIQUE : deux clients ne peuvent pas avoir le même email.
  • DEFAULT CURRENT_DATE : si aucune date n’est précisée, la date du jour est utilisée par défaut.

Vérifier la création de la table

Pour vous assurer que votre table a bien été créée, vous pouvez exécuter : SHOW TABLES;


Et pour voir la structure de la table en détail : DESCRIBE clients;


Si tout s’affiche correctement, vous êtes prêt à ajouter vos premières données dans une structure solide et bien typée.

Étape 4 – Relier vos tables avec des clés étrangères (FOREIGN KEY)

Une base relationnelle prend tout son sens lorsque plusieurs tables interagissent entre elles. Pour cela, on utilise une clé étrangère (FOREIGN KEY), qui crée un lien logique entre deux tables. Cela vous permet d’organiser vos données sans les dupliquer et de garantir leur cohérence.

Rappel : la clé primaire

Avant de parler de clé étrangère, rappelons qu’une clé primaire (PRIMARY KEY) est un identifiant unique pour chaque ligne d’une table. Elle garantit qu’il n’y a ni doublons, ni valeurs vides.

Par exemple, dans une table clients, la colonne id peut servir de clé primaire. Chaque client aura ainsi un identifiant unique (1, 2, 3…).

La clé étrangère en action

Une clé étrangère, elle, sert à créer un lien avec une autre table. Elle pointe vers une clé primaire existante dans une autre table.


Prenons un exemple : vous avez une table commandes dans laquelle chaque commande est associée à un client. Plutôt que de recopier son nom ou son email, on ajoute une colonne client_id qui fait référence à clients.id.


Voici comment créer cette table liée :

CREATE TABLE commandes (
  id_commande INT PRIMARY KEY AUTO_INCREMENT,
  date_commande DATE NOT NULL,
  client_id INT,
  FOREIGN KEY (client_id) REFERENCES clients(id)
);

Ce que fait chaque ligne

Chaque instruction de cette commande SQL a un rôle précis dans la création de la table commandes. Voici comment les décrypter ligne par ligne.

  • client_id : champ dans la table commandes qui contient l’identifiant du client concerné
  • FOREIGN KEY (client_id) : indique que cette colonne est une clé étrangère
  • REFERENCES clients(id) : établit le lien vers la clé primaire de la table clients

Pourquoi c’est important ?

Définir des relations solides entre vos tables n’est pas un simple détail technique : c’est ce qui garantit la fiabilité, la cohérence et l’exploitation fluide de vos données sur le long terme.

  • Évite les incohérences : on ne peut pas créer une commande pour un client qui n’existe pas.
  • Facilite les requêtes complexes (jointures) entre plusieurs tables.
  • Assure l’intégrité des données sur le long terme.

Bonnes pratiques pour définir une clé étrangère

Pour éviter les erreurs et assurer la robustesse de votre base, certaines règles sont à respecter lors de la création de clés étrangères.

  • Créez la clé étrangère au moment de la création de la table (ou juste après si nécessaire).
  • Assurez-vous que la table de destination existe déjà.
  • Le type de données doit être identique des deux côtés (ex. : INT pour id et client_id).
  • Nommez clairement les colonnes : client_id, produit_id

Supprimer en cascade (optionnel)

Certains systèmes vous permettent d’automatiser la suppression des enregistrements liés. Par exemple, si vous supprimez un client, toutes ses commandes peuvent être supprimées automatiquement :


FOREIGN KEY (client_id) REFERENCES clients(id) ON DELETE CASCADE


Cette option est puissante mais à utiliser avec prudence, car elle peut entraîner la perte de données liées sans confirmation.

Vous avez maintenant deux tables qui dialoguent entre elles. Vous êtes prêt à insérer vos premières données… et à observer les relations en action.

Étape 5 – Insérer vos premières données et tester votre base

Votre base de données est en place, vos tables sont prêtes et correctement reliées. Il est temps maintenant de leur donner vie en y ajoutant vos premières données. En SQL, on utilise pour cela la commande INSERT INTO.

Ajouter un client

Voici un exemple de requête pour insérer un nouveau client dans la table clients :


INSERT INTO clients (nom, email, date_inscription)
VALUES ('Léa Martin', 'lea.martin@email.com', '2025-05-15');


Vous indiquez ici les colonnes concernées, puis les valeurs correspondantes, dans le même ordre. Si votre colonne id est configurée en AUTO_INCREMENT, vous n’avez pas besoin de la renseigner : elle se générera automatiquement.

Insérer plusieurs lignes d’un coup

Vous pouvez également insérer plusieurs enregistrements en une seule commande. Cela vous fait gagner du temps et réduit le risque d’erreur :


INSERT INTO clients (nom, email, date_inscription)
VALUES
('Thomas Durand', 'tdurand@email.com', '2025-05-12'),
('Julie Petit', 'julie.petit@email.com', '2025-05-13'),
('Karim Benali', 'k.benali@email.com', '2025-05-14');

Ajouter une commande liée à un client

Une fois vos clients enregistrés, vous pouvez ajouter des commandes dans la table commandes. N’oubliez pas : la colonne client_id doit faire référence à un client existant dans la table clients.


INSERT INTO commandes (date_commande, client_id)
VALUES ('2025-05-16', 1);


Si vous tentez d’insérer un client_id qui n’existe pas, le SGBD refusera l’enregistrement. C’est le rôle de la clé étrangère : garantir que les données restent cohérentes.

Vérifier que les données sont bien enregistrées

Pour consulter ce que contient une table, utilisez la commande SELECT. Par exemple, pour voir tous les clients :


SELECT * FROM clients;

Et pour afficher uniquement les commandes passées par le client numéro 1 :

SELECT * FROM commandes WHERE client_id = 1;

Bonnes pratiques pour insérer proprement

Quelques réflexes simples pour éviter les erreurs dès les premières lignes insérées dans votre base.

  • Respectez bien l’ordre des colonnes et des valeurs dans la requête.
  • Utilisez des apostrophes simples (') pour les textes, jamais de guillemets doubles.
  • Formatez les dates correctement : AAAA-MM-JJ.
  • Insérez toujours d’abord les données de la table principale (ex. : clients) avant celles de la table liée (ex. : commandes).

Vous avez maintenant une base qui vit : des données claires, bien structurées, prêtes à être interrogées. Et c’est ce que vous allez découvrir à l’étape suivante avec les fameuses jointures SQL.

Étape 6 – Interroger plusieurs tables avec les jointures (JOIN)

Jusqu’ici, vous avez manipulé des tables séparément. Mais la vraie puissance du SQL relationnel se révèle lorsque vous croisez plusieurs tables pour obtenir des informations combinées. C’est le rôle des jointures, ou JOIN.

Pourquoi utiliser une jointure ?

Imaginez que vous souhaitiez afficher la date de chaque commande, accompagnée du nom du client qui l’a passée. Vous avez l’information sur la commande dans la table commandes, et le nom du client dans la table clients. Grâce à la jointure, vous pouvez réunir ces deux tables dans une seule requête.

La jointure classique : INNER JOIN

Voici une requête simple pour afficher toutes les commandes avec les noms des clients associés :


SELECT clients.nom, commandes.date_commande
FROM commandes
INNER JOIN clients ON commandes.client_id = clients.id;


Cette requête sélectionne les lignes où les identifiants client concordent dans les deux tables. Autrement dit, elle ne renvoie que les commandes pour lesquelles un client correspondant existe.

Décryptage ligne par ligne

Chaque élément de cette requête a un rôle précis. Voici comment la comprendre ligne par ligne :

  • SELECT : liste les colonnes que vous souhaitez afficher.
  • FROM commandes : définit la table principale.
  • INNER JOIN clients : relie la table clients à commandes.
  • ON commandes.client_id = clients.id : condition de jointure entre la clé étrangère et la clé primaire.

Autres types de jointures utiles

Il existe plusieurs types de jointures selon le résultat attendu :

  • LEFT JOIN : affiche toutes les lignes de la table de gauche (même si aucune correspondance dans la table de droite).
  • RIGHT JOIN : l’inverse du LEFT JOIN (moins utilisé).
  • FULL JOIN : affiche toutes les lignes, qu’il y ait ou non correspondance (peu supporté par certains SGBD).

Exemple plus complet avec filtre et tri

La requête suivante affiche les commandes passées en 2025, avec le nom et l’email du client, triées de la plus récente à la plus ancienne :


SELECT clients.nom, clients.email, commandes.date_commande
FROM commandes
INNER JOIN clients ON commandes.client_id = clients.id
WHERE commandes.date_commande >= '2025-01-01'
ORDER BY commandes.date_commande DESC;

Bonnes pratiques pour réussir vos jointures

Pour garder des requêtes lisibles, efficaces et fiables, voici quelques conseils à appliquer dès vos premières jointures :

  • Utilisez des alias si les noms de colonnes se répètent (ex. : clients.nom AS nom_client).
  • Commencez par les INNER JOIN, plus simples à maîtriser.
  • Filtrez vos résultats avec WHERE pour éviter de traiter un volume trop important.
  • Ne sélectionnez que les colonnes nécessaires (évitez le * sauf pour tester).

Vous êtes désormais capable d’extraire des données croisées à partir de plusieurs tables. C’est ce qui transforme une base de données en véritable outil d’analyse.

Vous venez de poser les bases d’un vrai projet SQL

Créer une base de données en SQL, ce n’est pas juste apprendre une syntaxe : c’est comprendre comment structurer l’information, relier des données entre elles, et poser les fondations solides d’un projet digital, analytique ou métier.


En suivant ce tutoriel pas à pas, vous avez appris à :

  • Créer une base avec CREATE DATABASE
  • Structurer vos tables avec les bons types de données et contraintes
  • Établir des relations fiables entre vos tables avec FOREIGN KEY
  • Insérer des données avec INSERT INTO
  • Lire et croiser vos données avec SELECT et les jointures SQL

Ce que vous venez d’apprendre est directement applicable à des contextes très variés : création de site web, application métier, automatisation de reporting, gestion de stock, CRM… Et ce n’est qu’un début.


Pour aller plus loin, vous pouvez approfondir l'écriture de requêtes complexes, les vues, les index, la sécurité, ou encore l'optimisation des performances. Ces compétences sont particulièrement recherchées dans les métiers du web, de la data et du développement.

À savoir : Sur oùFormer, vous pouvez comparer et réserver des formations SQL adaptées à tous les niveaux : en ligne ou en présentiel, avec ou sans certification, pour monter en compétence concrètement, à votre rythme.

Apprendre SQL, c’est gagner en autonomie, en rigueur et en capacité d’analyse. Et avec une base aussi solide que celle que vous venez de poser, vous êtes prêt à faire parler vos données.

logo ouformer
Réalisation :Definima
Utilisation des cookies

Nous utilisons des cookies pour vous fournir l'ensemble de nos services, notamment la recherche et les alertes. En acceptant, vous consentez à notre utilisation de ces cookies.

Refuser
Accepter