Aller au contenu

MariaDB : bases et tables

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.

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).

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)
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
SHOW TABLES;
DESCRIBE clients;
SHOW CREATE TABLE clients\G
SHOW TABLE STATUS LIKE 'clients'\G
SELECT table_name, ROUND((data_length+index_length)/1024/1024,2) AS mo
FROM information_schema.tables WHERE table_schema = 'boutique';
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;
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;
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.