Introduction aux Bases de Données et MySQL

Origine des systèmes de gestion de base de données

Le stockage persistant des données repose traditionnellement sur des fichiers, limités à une machine physique. Cette approche présente des limitations fondamentales :

# Problème 1 : Centralisation excessive
# Une panne matérielle entraîne l'indisponibilité totale du système. 
# L'échelle verticale atteint rapidement ses limites physiques.
# La distribution des composants sur plusieurs machines devient nécessaire.

# Problème 2 : Intégrité des données
# La répartition des composants nécessite un accès partagé aux données.
# L'accès concurrentiel aux fichiers distants génère des risques d'incohérence.
# Une solution : séparer données et applications avec un serveur dédié.

Concepts fondamentaux

Donnée : Représentation numérique, textuelle ou binaire d'entités. Exemple structuré :

nom, genre, age  # Structure
'Alice', 'F', 28  # Enregistrement

Base de données : Entrepôt structuré de données numériques, optimisé pour :

  • Réduire la redondance
  • Garantir l'indépendance des données
  • Permettre l'extensibilité

SGBD (Système de Gestion de Base de Données) : Logiciel assurant :

  • Organisation et stockage
  • Accès sécurisé et performant
  • Gestion des transactions (ex: MySQL, Oracle, PostgreSQL)

Présentation de MySQL

SGBDR open-source (Oracle Corporation), structuré en architecture client-serveur :

# Types de SGBD :
Relationnels : MySQL, PostgreSQL (structure tabulaire)
Non-relationnels : MongoDB, Redis (modèle clé-valeur)

Principes du langage SQL

Langage structuré pour interagir avec les SGBDR, catégorisé en :

DDL : CREATE, ALTER, DROP (structure)
DML : SELECT, INSERT, UPDATE (manipulation)
DCL : GRANT, REVOKE (contrôle d'accès)

Opérations fondamentales

-- Bases de données
CREATE DATABASE projet1 CHARACTER SET utf8;
SHOW DATABASES;

-- Tables
CREATE TABLE Clients (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nom VARCHAR(30) NOT NULL
);

-- Données
INSERT INTO Clients (nom) VALUES ('Martin');
SELECT * FROM Clients WHERE id = 1;

Manipulation avancée

-- Jointures
SELECT * 
FROM Commandes 
LEFT JOIN Clients ON Commandes.client_id = Clients.id;

-- Agrégations
SELECT ville, AVG(salaire) 
FROM Employes 
GROUP BY ville 
HAVING AVG(salaire) > 3000;

-- Sous-requêtes
SELECT nom 
FROM Produits 
WHERE prix > (SELECT AVG(prix) FROM Produits);

Fonctinos essentielles

-- Chaînes
UPDATE Produits SET reference = CONCAT('REF_', reference);

-- Agrégats
SELECT categorie, MAX(stock) FROM Inventaire GROUP BY categorie;

-- Temporelles
SELECT NOW(), DATE_ADD(NOW(), INTERVAL 7 DAY);

Exemple analytique

-- Analyse de ventes
SELECT 
    p.nom,
    SUM(c.quantite * p.prix) AS chiffre_affaires
FROM Commandes c
JOIN Produits p ON c.produit_id = p.id
GROUP BY p.nom
ORDER BY chiffre_affaires DESC
LIMIT 5;

Étiquettes: MySQL SQL SGBDR ModèleRelationnel RequêtesSQL

Publié le 1 juillet à 21h13