Programme SQL pour les Étudiants S3 à l'ENCG
1. Concepts Fondamentaux
Les bases de données relationnelles sont organisées sous forme de tables, avec des lignes
(ou enregistrements) et des colonnes (ou champs). Chaque table a une structure définie par
un schéma. Les concepts clés incluent les clés primaires (Primary Key) et étrangères
(Foreign Key).
2. Commandes SQL
Cette section couvre les commandes les plus importantes en SQL.
a) DDL (Data Definition Language)
- `CREATE TABLE` : crée une nouvelle table.
- `ALTER TABLE` : modifie une table existante.
- `DROP TABLE` : supprime une table.
b) DML (Data Manipulation Language)
- `INSERT INTO` : ajoute des données.
- `UPDATE` : met à jour des données.
- `DELETE` : supprime des données.
c) DQL (Data Query Language)
- `SELECT` : récupère des données.
- Clauses importantes : `WHERE`, `GROUP BY`, `ORDER BY`, `HAVING`.
- Fonctions d'agrégation : `COUNT()`, `SUM()`, `AVG()`, `MAX()`, `MIN()`.
d) JOINS
Les JOINS permettent de combiner des tables :
- `INNER JOIN`
- `LEFT JOIN`
- `RIGHT JOIN`
- `FULL OUTER JOIN`
3. Concepts Avancés
Les concepts avancés incluent l'indexation pour accélérer les requêtes, les vues pour
simplifier des requêtes complexes, les triggers pour automatiser des actions lors
d'événements, et les procédures stockées pour encapsuler des ensembles de requêtes.
4. Exercices Pratiques et Corrigés
Exercice 1 : Création et manipulation d’une table
1. Créer une table `Employes` avec les colonnes suivantes :
- `ID` (clé primaire).
- `Nom` (texte, max 50 caractères).
- `Salaire` (décimal, max 10 chiffres).
- `DateEmbauche` (DATE).
2. Insérer les données suivantes :
- (1, 'Alice', 3000.50, '2022-05-01').
- (2, 'Bob', 2500.75, '2023-01-15').
3. Afficher tous les employés embauchés après le 1er janvier 2023.
Correction :
CREATE TABLE Employes (
ID INT PRIMARY KEY,
Nom VARCHAR(50),
Salaire DECIMAL(10, 2),
DateEmbauche DATE
);
INSERT INTO Employes (ID, Nom, Salaire, DateEmbauche)
VALUES
(1, 'Alice', 3000.50, '2022-05-01'),
(2, 'Bob', 2500.75, '2023-01-15');
SELECT * FROM Employes WHERE DateEmbauche > '2023-01-01';
Exercice 2 : Jointure entre deux tables
1. Créer deux tables : `Clients` et `Commandes`.
- `Clients` : `ID`, `Nom`, `Email`.
- `Commandes` : `ID`, `ClientID` (clé étrangère vers `[Link]`), `Montant`.
2. Insérer des données :
- Clients : (1, 'Alice', 'alice@[Link]'), (2, 'Bob', 'bob@[Link]').
- Commandes : (1, 1, 500), (2, 1, 150), (3, 2, 300).
3. Afficher le nom du client et le total de ses commandes.
Correction :
CREATE TABLE Clients (
ID INT PRIMARY KEY,
Nom VARCHAR(50),
Email VARCHAR(100)
);
CREATE TABLE Commandes (
ID INT PRIMARY KEY,
ClientID INT,
Montant DECIMAL(10, 2),
FOREIGN KEY (ClientID) REFERENCES Clients(ID)
);
INSERT INTO Clients (ID, Nom, Email)
VALUES (1, 'Alice', 'alice@[Link]'),
(2, 'Bob', 'bob@[Link]');
INSERT INTO Commandes (ID, ClientID, Montant)
VALUES (1, 1, 500),
(2, 1, 150),
(3, 2, 300);
SELECT [Link], SUM([Link]) AS TotalCommandes
FROM Clients
INNER JOIN Commandes ON [Link] = [Link]
GROUP BY [Link];