05. Premier Pas En SQL

Le SQL (Structured Query Language) est un langage de programmation spécialement conçu pour la gestion et la manipulation des bases de données relationnelles. Il a été créé dans les années 70 par IBM pour répondre à la nécessité croissante de gérer efficacement les bases de données. Pour avoir un historique complet de la genèse du SQL, il y a cet épisode avec l'un des créateur du langage SQL.




La Requête

Une requête SQL est une instruction qui permet d'interagir avec une base de données relationnelle. On parle également de query en anglais.

Exemple de Requête SQL

Une requête SQL s'écrit sous la forme suivante:

/* Requête qui compte le nombre de commande par mois */
SELECT productID, category, 
       subcategory, brand
FROM product

Affiche les colonnes productID, category, subcategory et brand de la table product.

SELECT: Spécifie les colonnes à récupérer dans la table interrogée.
FROM: Indique la table d'où proviennent les données.

Les requêtes permettent de formuler des questions pour la prise de décisions.

Par exemple: Quels ont été les 5 produits les plus vendus au cours de l'année dernière? Ont-ils conservé leur position par rapport à il y a 2 ans? Comment ont-ils performé en termes de chiffre d'affaires total? L'utilisation du langage SQL sera essentielle pour répondre à ce type de questions.

Les Clauses

Les requêtes sont composées d'un ensemble de mots-clefs appelés des clauses. Ces dernières permettent de structurer le langage, elles ont un rôle spécifique dans la formulation d'une requête. Elles sont affichées en vert. Pour le moment nous en avons vu les 2 clauses essentielles à l'écriture d'une requête,SELECT et FROM.

Par la suite, nous verrons qu'il existe plus de clauses. Plus les besoins en terme d'information seront compliqués, plus il faudra utiliser des clauses différentes pour y répondre.

Base de Données

Dans cette page et les prochaines, nous allons illustrer les exemples avec des données provenant d'une entreprise de vente en gros. Cette entreprise achète des produits en grandes quantités directement auprès des fabricants puis les revend en lots aux détaillants de la grande distribution. Nous allons utiliser 5 tables:
• Une concernant les clients : customer
• Une concernant les commandes des clients (date, volumes, coûts, ventes) sur l'année 2021, 2022 et 2024 : perform21, perform22, perform23.
• Une sur les caractéristiques des produits mis en vente : product.

Afin d'avoir un aperçu des tables, les 3 premières lignes de chacune des tables sont affichées ci-dessous. Pour avoir plus de détails sur le rôle des colonnes tu peux aller dans le chapitre 0. C - Contexte, Labels et Explications.

La table la table customer située dans controlGest.

CustomerID CustomerName KeyAccount StrategicCustomer
1 ALDI Thomas No
2 DIVERS Paul No
3 DTC WEBSALES Marie Yes
Customer ID : Identifiant unique du client.
Customer Name : Nom du client.
Key Account : Indication si le client est un compte clé.
Strategic Customer : Indication si le client est stratégique.


perform21 située dans controlGest.

CustomerID ProductID VolKilo (COPA) NOS (COPA) COGS (COPA) GP (COPA) Date
1 1 2977 127,652 -51,445 76,207 08/2021
1 1 17997 570,425 -133,486 436,940 09/2021
1 1 1401 93,514 -17,357 76,156 10/2021
CustomerID : Identifiant unique du client.
ProductID : Identifiant unique du produit.
VolKilo (COPA) : Volume en kilogrammes.
NOS (COPA) : Montant des biens à la vente (contribue au chiffre d'affaire).
COGS (COPA) : Montant des biens à l'achat (coût).
GP (COPA) : Marge brute.
Date : Date complète associée à la période calendaire.


product située dans controlGest.

ProductID Category SubCategory Brand Variety Designation
1 Capsules Capsules Brand 1 Forza Produit 1 Capsules Forza
2 Capsules Capsules Brand 1 Splendente Produit 2 Capsules Splendente
3 Capsules Capsules Brand 1 Forza Produit 3 Capsules Forza
ProductID : Identifiant unique du produit.
Category : Catégorie à laquelle le produit appartient.
SubCategory : Sous-catégorie du produit.
Brand : Marque associée au produit.
Variety : Variété du produit.
Designation : Désignation spécifique du produit.

Première Requête

A présent, essayons de comprendre plus en détail la requête suivante:

/* Requête qui compte le nombre de commande par mois */
SELECT productID, category, 
       subcategory, brand
FROM product

Cette première requête demande simplement à la base de données d'afficher l'identifiant, la catégorie, la sous-catégorie et la marque de tous les produits de la table product. Elle est composée de 2 clauses.

SELECT

La clause SELECT est employée pour déterminer les colonnes à inclure dans les résultats. Dans cet exemple, nous souhaitons obtenir les colonnes productID, category, subcategory et brand. Chaque colonne désignée est séparée par une virgule ",".

Remarque : En SQL, les colonnes sont aussi appelées des champs et les lignes des enregistrements.

FROM

La clause FROM indique la table à partir de laquelle nous voulons récupérer les données. Ici, c'est la table product.
Attention : Selon le système de gestion de base de données utilisé, il y aura peut-être besoin d'écrire la table entre guillemets.

Commentaire

Les commentaires ajoutent des annotations dans une requête sans affecter son exécution. Ils améliorent la lisibilité et la maintenance du code SQL en expliquant la logique de conception, le but de la requête ou d'autres informations jugées pertinentes.
Ils n'ont aucun impact sur l'exécution du code. Si une partie du code est mise en commentaire, elle ne sera plus exécutée. Il existe 2 types de commentaires en SQL :

Commentaires sur une ligne
Les commentaires sur une ligne commencent par "- -" (double tiret). Tout ce qui suit "- -" sur la même ligne est considéré comme un commentaire et ne sera pas exécuté.

-- Ceci est un commentaire sur une ligne 
SELECT productID, category, 
       subcategory, brand
FROM product

Commentaires sur plusieurs lignes
Les commentaires sur plusieurs lignes sont encadrés par "/*" et "*/". Tout ce qui se trouve entre ces délimiteurs est considéré comme un commentaire et ne sera pas exécuté.

/* Ceci est un commentaire  
   sur plusieurs lignes */
SELECT productID, category, 
       subcategory, brand
FROM product

Il est recommandé d'inclure des commentaires de manière judicieuse afin de faciliter la compréhension du code et pour documenter les intentions et les choix de conception.

Convention
Lors de l'écriture d'une requête SQL, il est recommandé de respecter certaines conventions pour améliorer la lisibilité. Les clauses principales, telles que SELECT et FROM que nous avons vu jusqu'à maintenant doivent être écrites en majuscules et commencer sur une novelle ligne. Les autres éléments, comme les noms de colonnes, les tables ou les conditions, sont généralement écrits en minuscules. Cette structuration facilite la lecture et la compréhension du code, surtout dans des requêtes complexes.

Question 5.1

Utilise la table customer située dans le dossier controlGest pour afficher les colonnes customerID, customerName et strategicCustomer.

SQL Console

Category Num Sales Usd
ABC 123 $26.4M
No Results