logo oujood
🔍

Créer une base de données avec SQL CREATE DATABASE

Syntaxe, options et exemples pratiques pour créer une base de données sur MySQL, PostgreSQL et SQL Server.

Avant de stocker la moindre donnée, il faut un endroit où la ranger. En SQL, cet endroit s'appelle une base de données, et on la crée avec l'instruction CREATE DATABASE. C'est l'une des premières commandes qu'on tape quand on démarre un nouveau projet — boutique en ligne, application mobile ou simple carnet d'adresses.

Une base de données peut contenir des tables (où vivent les données), des vues, des procédures stockées et des fonctions. Mais tout commence par CREATE DATABASE.

Étape 1 — Comprendre la syntaxe de base

CREATE DATABASE prend un seul argument obligatoire : le nom de la base. Ce nom doit être unique sur le serveur, composé uniquement de lettres, de chiffres et de tirets bas (_). Pas d'espaces, pas d'accents, pas de caractères spéciaux, et il ne peut pas commencer par un chiffre.

  📋 Copier le code

CREATE DATABASE nom_base;

Par exemple, pour créer une base dédiée à un site e-commerce :

  📋 Copier le code

CREATE DATABASE ecommerce;

Résultat attendu :

Query OK, 1 row affected (0.01 sec)

La base ecommerce est créée et prête à accueillir des tables. Elle est vide pour l'instant — CREATE DATABASE ne crée pas de tables automatiquement.

Étape 2 — Éviter les erreurs avec IF NOT EXISTS

Si on exécute CREATE DATABASE sur une base qui existe déjà, le serveur renvoie une erreur. Pour l'éviter — notamment dans des scripts d'installation qui tournent plusieurs fois — on utilise IF NOT EXISTS. Si la base existe, la commande ne fait rien et ne bloque pas le script.

  📋 Copier le code

-- MySQL / MariaDB : crée la base uniquement si elle n'existe pas encore
CREATE DATABASE IF NOT EXISTS ecommerce;

-- Sans IF NOT EXISTS : erreur si la base existe déjà
-- ERROR 1007 (HY000): Can't create database 'ecommerce'; database exists

Résultat attendu (base créée) :

Query OK, 1 row affected (0.00 sec)

Résultat attendu (base déjà existante, avec IF NOT EXISTS) :

Query OK, 0 rows affected, 1 warning (0.00 sec)

IF NOT EXISTS est disponible sur MySQL et MariaDB. Sur PostgreSQL, la syntaxe équivalente existe depuis la version 9.3. Sur SQL Server, il n'existe pas — on vérifie l'existence avec une condition avant d'exécuter.

Étape 3 — Choisir l'encodage avec CHARSET et COLLATE

L'encodage (CHARACTER SET) détermine quels caractères peuvent être stockés. La collation (COLLATE) définit les règles de tri et de comparaison — par exemple, si "é" et "e" sont considérés identiques dans une recherche. Pour un site en français, on choisit un encodage qui gère les accents.

  📋 Copier le code

-- MySQL : encodage universel, tri insensible à la casse et aux accents
CREATE DATABASE ecommerce
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

-- utf8mb4 : Unicode complet (emojis inclus), recommandé depuis MySQL 5.5
-- utf8mb4_unicode_ci : ci = case-insensitive, tri correct pour le français

Résultat attendu :

Query OK, 1 row affected (0.01 sec)

Si on omet CHARSET et COLLATE, MySQL utilise ses valeurs par défaut — souvent latin1 sur les anciennes installations, ce qui bloque les caractères arabes, chinois ou les emojis. Toujours préciser l'encodage en production.

Étape 4 — Syntaxe par SGBD : MySQL, PostgreSQL, SQL Server

La commande de base est identique partout, mais les options varient selon le système de gestion de base de données utilisé.

MySQL / MariaDB

  📋 Copier le code

-- MySQL : syntaxe complète avec encodage
CREATE DATABASE IF NOT EXISTS ecommerce
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

PostgreSQL

  📋 Copier le code

-- PostgreSQL : OWNER définit le propriétaire, ENCODING l'encodage
CREATE DATABASE ecommerce
  OWNER = admin
  ENCODING = 'UTF8'
  LC_COLLATE = 'fr_FR.UTF-8'
  LC_CTYPE = 'fr_FR.UTF-8'
  TEMPLATE = template0;

-- TEMPLATE = template0 : obligatoire quand on change l'encodage ou la locale

SQL Server

  📋 Copier le code

-- SQL Server : ON PRIMARY définit le fichier de données, LOG ON le journal
CREATE DATABASE ecommerce
ON PRIMARY (
  NAME = ecommerce_data,
  FILENAME = 'C:\SQLData\ecommerce.mdf',
  SIZE = 100MB,
  MAXSIZE = 1GB,
  FILEGROWTH = 10%
)
LOG ON (
  NAME = ecommerce_log,
  FILENAME = 'C:\SQLData\ecommerce.ldf',
  SIZE = 10MB,
  MAXSIZE = 500MB,
  FILEGROWTH = 5MB
);

-- SIZE : taille initiale allouée
-- MAXSIZE : plafond pour éviter de saturer le disque
-- FILEGROWTH : agrandissement automatique quand la base atteint sa taille

Résultat attendu (SQL Server) :

Commands completed successfully.

Étape 5 — Activer une base avec USE

Une fois la base créée, il faut indiquer au serveur avec laquelle on veut travailler. C'est le rôle de la commande USE. Sans elle, SQL ne sait pas où envoyer les requêtes suivantes.

  📋 Copier le code

-- Sélectionner la base active (MySQL, MariaDB, SQL Server)
USE ecommerce;

-- Toutes les requêtes suivantes s'exécutent dans ecommerce
SELECT * FROM produits;

Résultat attendu :

Database changed

⚠ Sur PostgreSQL, USE n'existe pas. On change de base au moment de la connexion, ou via la commande \c ecommerce dans le client psql.

Récapitulatif : créer et activer une base en un seul script

Ce script rassemble les commandes essentielles dans l'ordre logique d'utilisation. Adaptez le SGBD cible en choisissant le bloc correspondant.

  📋 Copier le code

-- === MySQL / MariaDB ===
CREATE DATABASE IF NOT EXISTS ecommerce
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;
-- Query OK, 1 row affected (0.01 sec)

USE ecommerce;
-- Database changed

-- Vérifier que la base est bien créée
SHOW DATABASES;
-- ecommerce apparaît dans la liste

-- === PostgreSQL ===
CREATE DATABASE ecommerce
  OWNER = admin
  ENCODING = 'UTF8'
  TEMPLATE = template0;
-- CREATE DATABASE

-- Connexion à la base dans psql :
-- \c ecommerce

-- === SQL Server ===
CREATE DATABASE ecommerce;
-- Commands completed successfully.

USE ecommerce;
-- Changed database context to 'ecommerce'.

Commandes de gestion des bases de données

Après la création, SQL propose d'autres instructions pour administrer les bases :

  • ALTER DATABASE : modifie les propriétés d'une base existante (taille, collation, etc.).
  • DROP DATABASE : supprime définitivement une base et tout son contenu — irréversible.
  • BACKUP DATABASE : sauvegarde une base dans un fichier (SQL Server).
  • RESTORE DATABASE : restaure une base à partir d'une sauvegarde.

Ces commandes sont détaillées dans le chapitre suivant.

Par carabde | Mis à jour le 9 juin 2026