- Description
- Curriculum
- FAQ
- Examens
bonjour à tous ! Vous avez soif d’apprendre le SQL de manière approfondie ? Vous êtes exactement là où il faut être !
SQL, c’est LE langage incontournable dans le monde de la data. Que vous soyez déjà un expert ou un pur débutant, maîtriser SQL, c’est ouvrir la porte à d’innombrables opportunités professionnelles.
Je suis Sébastien, consultant en Data Analytics depuis 8 ans. J’ai formé des milliers d’étudiants sur des outils comme Excel, Power BI, Python et bien sûr, la data science.
Dans ce cours de 17 heures, je vous emmène dans un voyage passionnant :
-
D’abord, les bases du SQL et la compréhension des bases de données.
-
Ensuite, l’art de l’analyse de données avec des requêtes.
-
La création d’une base de données à partir de zéro.
-
Une exploration des fonctions SQL.
-
Et pour les plus avancés, nous plongerons dans des sujets comme les vues, les sous-requêtes, et bien plus encore.
Mais attendez, ce n’est pas tout ! Nous allons aussi voir comment :
-
Intégrer SQL avec Python.
-
Explorer des bases de données avec Big Query.
-
Créer des rapports époustouflants avec SQL et Power BI.
-
Et pour les curieux, nous explorerons DUCKDB, une tendance montante.
Ici, pas de théorie ennuyeuse ! Vous allez travailler sur des cas concrets, suivre mes manipulations en temps réel, relever des défis avec des exercices et tester vos connaissances avec des QCM.
Alors, prêts à booster vos compétences en SQL ? Rejoignez moi dès maintenant pour les premières sessions de ce cours !
-
1Qu'est-ce que le SQL ?
-
2L'histoire du SQL
-
3Le SQL et le marché de l'emploi
Sources :
https://www.linkedin.com/business/talent/blog/talent-strategy/linkedin-most-in-demand-hard-and-soft-skills
https://survey.stackoverflow.co/2023/#most-popular-technologies-language-prof
-
4Différences entre le SQL et le NoSQL
-
5Quiz Introduction au SQL
-
6SQL Server, MySQL, PostgreSQL...quelles sont les différences ?
-
7IMPORTANT ! Gestion des erreurs à l'installation
-
8Présentation de la base de données AdventureWorks
-
9Installation de l'environnement de travail
Lien vers PostgreSQL : https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
Ou le lien direct : https://www.postgresql.org/download/
-
10Présentation de PG Admin
-
11Quiz
-
12La requête SELECT
-
13Entrainement à la requête SELECT
-
14SELECT DISTINCT
-
15Exercices SELECT et SELECT DISTINCT
-
16Les filtres WHERE
-
17Les filtres WHERE - Démonstration
-
18Exercices filtre WHERE
-
19Les filtres combinés
-
20Les filtres combinés démonstration
-
21Exercices filtres combinés
-
22Les filtres avancés
-
23Exercices filtres avancés
-
24Les filtres LIKE et ILIKE
-
25Exercices filtres LIKE
-
26Quiz filtres
Souvenez vous de l'ensemble des règles sur les filtres ?
-
27ORDER BY et LIMIT
-
28Exercices SORT BY et LIMIT
-
29GROUP BY, HAVING et les Alias
-
30GROUP BY démonstration
-
31Exercices GROUP BY
-
32Les expressions conditionnelles
-
33Les expressions conditionnelles - démonstration
-
34Quiz LIMIT, GROUP BY, CASE
Avez-vous tout retenu des dernières sessions ? c'est le moment de réviser !
-
35Qu'est-ce qu'une jointure ?
-
36INNER JOIN
-
37Exercices INNER JOIN
-
38LEFT /RIGHT JOIN et OUTER JOIN
-
39LEFT/RIGHT JOIN et OUTER JOIN - démonstration
-
40LEFT/RIGHT JOIN et OUTER JOIN - Exercice
-
41SELF JOIN
-
42Quiz sur les jointures
Avez-vous tout retenu des dernières sessions ? c'est le moment de réviser !
-
43Disclaimer
-
44Clés primaires et clés étrangères
-
45Les formes normales et la normalisation
-
46Quiz clé primaires/étrangères et normalisation
-
47Les typologies de bases de données relationnelles
-
48Quiz les typologies de bases de données relationnelles
-
49Les types de données possibles
-
50Quiz les types de données possibles
-
51Créer une base de données
-
52Créer une table de données
-
53Ajouter des contraintes - partie 1
-
54Exercices sur la création de base de données
-
55Les contraintes - Partie 2
Pour vous aider en cas de difficultés, voici le code SQL final de la session suivante. Vous pouvez également vous entrainer, en l'écrivant avec moi.
CREATE TABLE commandes (
ligne_id SERIAL PRIMARY KEY,
Commande_id INTEGER NOT NULL,
client_id INTEGER NOT NULL,
produit_id INTEGER NOT NULL,
quantite INT NOT NULL,
prix_total DECIMAL(10,2) NOT NULL,
FOREIGN KEY (client_id) REFERENCES clients(client_id),
FOREIGN KEY (produit_id) REFERENCES produit(produit_id)
);
-
56Insertion de données
Pour vous aider en cas de difficultés, voici le code SQL final de la session suivante. Vous pouvez également vous entrainer, en l'écrivant avec moi.
INSERT INTO produit (produit_id, nom_produit, categorie, prix) VALUES
(501, 'Ordinateur Portable', 'Electronique', 899.99),
(502, 'Chaise de Bureau', 'Mobilier', 120.50),
(503, 'Stylo à Bille', 'Fournitures de bureau', 1.20),
(504, 'Cafetière', 'Electroménager', 45.00),
(505, 'Téléphone', 'Electronique', 650.75);
INSERT INTO clients (email_client, client_id, carte_fidelite, nom_client)
VALUES
('jean.dupont@email.com’, 101, TRUE, 'Jean Dupont'), ('marie.martin@email.com’, 102, FALSE, 'Marie Martin'), ('paul.lefevre@email.com’, 103, TRUE, 'Paul Lefevre’),
(‘sophie.durand@email.com’, 104, TRUE, ‘Sophie Durand’),
(‘luc.bernard@email.com’, 105, TRUE, ‘Luc Bernard');
-
57Exercice insertion de données
-
58Modifier une base de données
-
59Modifier les valeurs d'une table
-
60Supprimer les éléments d'une base de données
-
61Démonstration - modification et suppression dans une base de données
-
62Exercice - modification et suppression dans une base de données
-
63Quiz création de base de données
Avez-vous tout retenu des dernières sessions ? c'est le moment de réviser !
-
64Qu'est-ce qu'une fonction ?
-
65Les fonctions texte
-
66Les expressions régulières (Regex)
-
67Exercices string / Regex
-
68Les fonctions numériques
-
69Exercices fonction numérique
-
70Les fonctions de dates
-
71Exercice - Les fonctions de dates
-
72Les fonctions JSON
Pour vous aider en cas de difficultés, voici le code SQL final de la session suivante. Vous pouvez également vous entrainer, en l'écrivant avec moi.
CREATE TABLE detail_commande (
id SERIAL PRIMARY KEY,
commande_id INTEGER NOT NULL,
details JSONB NOT NULL );
INSERT INTO detail_commande (commande_id, details)
VALUES
(1, '{"produit": "Vélo", "quantite": 2, "prix_unitaire": 250.50}’),
(2, '{"produit": "Casque", "quantite": 1, "prix_unitaire": 50.00}’),
(3, '{"produit": "Gants", "quantite": 3, "prix_unitaire": 15.20}’),
(4, '{"produit": "Sonnette", "quantite": 1, "prix_unitaire": 8.75}’),
(5, '{"produit": "Lumière", "quantite": 2, "prix_unitaire": 12.90}');
-
73Les sous-requêtes
-
74Les sous-requêtes corrélées
Pour vous aider en cas de difficultés, voici le code SQL final de la session suivante. Vous pouvez également vous entrainer, en l'écrivant avec moi.
Exemple 1
SELECT C.CustomerID, C.PersonID
FROM Sales.Customer AS C
WHERE EXISTS ( SELECT 1
FROM Sales.SalesOrderHeader AS S
WHERE S.CustomerID = C.CustomerID AND S.TotalDue >= 1000
);
Exemple 2
SELECT P.ProductID, P.Name, P.ListPrice, PS.Name AS SubcategoryName FROM Production.Product AS P
JOIN Production.ProductSubcategory AS PS
ON P.ProductSubcategoryID = PS.ProductSubcategoryID
WHERE P.ListPrice > ( SELECT AVG(P2.ListPrice)
FROM Production.Product AS P2 WHERE P2.ProductSubcategoryID = P.ProductSubcategoryID
);
Exemple 3
SELECT C.CustomerID, C.personID, Sales.salesorderID, Sales.totaldue
FROM Sales.Customer AS C
INNER JOIN Sales.Salesorderheader AS Sales
ON C.CustomerID = Sales.CustomerID
WHERE EXISTS ( SELECT 1
FROM Sales.Salesorderheader AS O
WHERE O.CustomerID = C.CustomerID
AND O.TotalDue > ( SELECT AVG(O2.TotalDue)
FROM Sales.Salesorderheader AS O2
WHERE O2.CustomerID = C.CustomerID )
);
-
75Les sous-requêtes - Exercice
-
76les vues
Pour vous aider en cas de difficultés, voici le code SQL final de la session suivante. Vous pouvez également vous entrainer, en l'écrivant avec moi.
Exemple 1
CREATE VIEW v_Products_High_Revenue AS
SELECT S.ProductID, SUM(S.OrderQty * S.UnitPrice) AS TotalRevenue
FROM Sales.SalesOrderDetail AS S
GROUP BY S.ProductID
HAVING SUM(S.OrderQty * S.UnitPrice) > (
SELECT AVG(OrderQty * UnitPrice) * COUNT(DISTINCT ProductID) FROM Sales.SalesOrderDetail )
ORDER BY TotalRevenue DESC;
Exemple 2
CREATE VIEW v_SalespersonDetails AS
SELECT businessentityID, territoryID, rowguid, modifieddate
FROM sales.salesperson;
-
77les vues - exercice
-
78optimisation par indexation
-
79Les procédures stockées
ALTER TABLE produit ADD COLUMN stock INT;
UPDATE produit SET stock = 100;
CREATE OR REPLACE PROCEDURE AjouterCommandeEtMettreAJourStock(
p_Commande_id INT,
p_client_id INT,
p_produit_id INT,
p_quantite INT,
p_prix_total NUMERIC
)
LANGUAGE plpgsql
AS $$
BEGIN
-- Ajouter la commande
INSERT INTO commandes (Commande_id, client_id, produit_id, quantite, prix_total)
VALUES (p_Commande_id, p_client_id, p_produit_id, p_quantite, p_prix_total);
-- Mettre à jour le stock
UPDATE produit SET stock = stock - p_quantite
WHERE produit_id = p_produit_id;
END;
$$;
-
80Les triggers
Pour vous aider en cas de difficultés, voici le code SQL final de la session suivante. Vous pouvez également vous entrainer, en l'écrivant avec moi.
CREATE OR REPLACE FUNCTION mise_a_jour_stock() RETURNS TRIGGER AS $$
BEGIN
-- Soustraire la quantité commandée du stock du produit
UPDATE produit
SET stock = stock - NEW.quantite
WHERE produit_id = NEW.produit_id;
RETURN NEW; -- Important pour les déclencheurs
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trigger_mise_a_jour_stock
AFTER INSERT ON commandes
FOR EACH ROW EXECUTE FUNCTION mise_a_jour_stock();
INSERT INTO commandes (Commande_id, client_id, produit_id, quantite, prix_total) VALUES (2005, 102, 505, 3, 1952.25);
-
81Les procedures et triggers - Exercices
-
82Gestion des droits d'accès
-
83Les transactions ACID
-
84Quiz fonctionnalités avancées
-
85Introduction au Python
-
86Prise en main d'un Notebook Python
Lien vers Google Collab : https://colab.research.google.com/
Lien vers Kaggle : https://www.kaggle.com/datasets/kaggle/sf-salaries
-
87Execution de requêtes SQL dans un environnement Python
-
88Data vizualisation avec Python
-
89Manipulation de données avec Pandas