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 productAffiche les colonnes productID, category, subcategory et brand de la table product.
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 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 |
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 |
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 productCette 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.
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.
FROMLa 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.
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 productCommentaires 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 productIl 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 |