MariaDB : bases et tables
Bases de données
Section intitulée « Bases de données »CREATE DATABASE boutique CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;SHOW DATABASES;USE boutique;SHOW CREATE DATABASE boutique;DROP DATABASE IF EXISTS essai;utf8mb4 couvre tous les caractères Unicode (émojis compris) : à utiliser par défaut.
Créer une table
Section intitulée « Créer une table »CREATE TABLE clients ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nom VARCHAR(100) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, actif BOOLEAN NOT NULL DEFAULT TRUE, cree_le TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP) ENGINE=InnoDB;
CREATE TABLE commandes ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, client_id INT UNSIGNED NOT NULL, total DECIMAL(10,2) NOT NULL, statut ENUM('nouvelle','payee','expediee') NOT NULL DEFAULT 'nouvelle', passee_le DATETIME NOT NULL, CONSTRAINT fk_commandes_client FOREIGN KEY (client_id) REFERENCES clients(id) ON DELETE RESTRICT ON UPDATE CASCADE) ENGINE=InnoDB;Le moteur par défaut est InnoDB (transactions, clés étrangères).
Types courants
Section intitulée « Types courants »| Type | Usage |
|---|---|
INT, BIGINT, SMALLINT, TINYINT |
Entiers (UNSIGNED : positifs seulement) |
DECIMAL(10,2) |
Montants (précis, jamais FLOAT) |
VARCHAR(n), TEXT |
Texte |
BOOLEAN |
Booléen (alias de TINYINT(1)) |
DATE, DATETIME, TIMESTAMP |
Dates et heures |
ENUM(...) |
Liste fermée de valeurs |
JSON |
Document JSON (alias de LONGTEXT avec contrôle de validité) |
UUID |
Identifiant universel (type natif depuis la 10.7) |
Contraintes
Section intitulée « Contraintes »| Contrainte | Rôle |
|---|---|
PRIMARY KEY |
Identifiant unique de la ligne |
UNIQUE |
Valeur unique dans la table |
NOT NULL |
Valeur obligatoire |
DEFAULT |
Valeur par défaut |
FOREIGN KEY … REFERENCES |
Lien vers une autre table |
CHECK (condition) |
Condition sur les valeurs |
Inspecter
Section intitulée « Inspecter »SHOW TABLES;DESCRIBE clients;SHOW CREATE TABLE clients\GSHOW TABLE STATUS LIKE 'clients'\GSELECT table_name, ROUND((data_length+index_length)/1024/1024,2) AS mo FROM information_schema.tables WHERE table_schema = 'boutique';Modifier une table
Section intitulée « Modifier une table »ALTER TABLE clients ADD COLUMN telephone VARCHAR(20) NULL AFTER email;ALTER TABLE clients MODIFY COLUMN nom VARCHAR(150) NOT NULL;ALTER TABLE clients CHANGE COLUMN telephone tel VARCHAR(30) NULL;ALTER TABLE clients DROP COLUMN tel;ALTER TABLE clients ADD CONSTRAINT chk_email CHECK (email LIKE '%@%');RENAME TABLE clients TO utilisateurs;Supprimer
Section intitulée « Supprimer »TRUNCATE TABLE journaux; -- vide la table (rapide, sans retour arrière)DROP TABLE IF EXISTS essai;DROP et TRUNCATE sont irréversibles hors sauvegarde.
CREATE VIEW clients_actifs AS SELECT id, nom, email FROM clients WHERE actif = TRUE;SELECT * FROM clients_actifs;DROP VIEW clients_actifs;Dépannage
Section intitulée « Dépannage »| Symptôme | Piste |
|---|---|
ERROR 1215 Cannot add foreign key constraint |
Types ou signes différents entre les deux colonnes, ou index manquant sur la colonne référencée |
ERROR 1451 Cannot delete or update a parent row |
Des lignes enfants dépendent de cette ligne |
ERROR 1062 Duplicate entry |
Violation d’une contrainte UNIQUE ou PRIMARY KEY |
ERROR 1366 Incorrect string value |
Jeu de caractères non utf8mb4 |
Ubuntu 24.04 et 26.04 : différences à connaître
Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »Ces instructions fonctionnent à l’identique sur MariaDB 10.11 et 11.8.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Types de données
- Suite : Requêtes