Qu'est-ce que SQL ?
SQL, également connu sous le nom de Structured Query Language (langage de requête structuré), est un outil puissant permettant de rechercher de grandes quantités de données dans les bases de données et de renvoyer des informations spécifiques à des fins d'analyse. Apprendre SQL est un enjeu de tableau pour tous ceux qui cherchent à percer dans les données, qu'il s'agisse de rôles d'analystes d'affaires, d'analystes de données, de scientifiques de données ou d'ingénieurs de données.
Dans ce tutoriel, vous découvrirez 25 des commandes SQL les plus courantes, qui suffiront à la plupart de vos tâches liées aux bases de données.
Commandes SQL avec exemples
Exemple de tableau
Tout au long de ce tutoriel, nous utiliserons les tableaux films
et soundtracks.
films |
|||||
movie_name |
directeur |
revenus |
date |
genre |
langue |
Avengers : L'âge d'Ultron |
J. Whedon |
1400000000 |
2015 |
Action |
Anglais |
Amelie |
Jean-Pierre Jeunet |
174000000 |
2002 |
Drame |
Français |
bandes sonores |
||
bande sonore |
compositeur |
date |
Inception : Musique du film |
Hans Zimmer |
2010 |
Le Fabuleux Destin D’Amelie Poulain |
Yann Tiersen |
2001 |
1. SELECT
L'instruction SELECT
est utilisée pour spécifier quelles colonnes d'un tableau de base de données doivent être incluses dans le résultat.
Cet exemple ne sélectionne que les colonnes movie_name
et director
; les autres colonnes ne sont pas renvoyées.
SELECT movie_name, director
FROM films;
Pour sélectionner toutes les colonnes d'un tableau, vous pouvez lancer SELECT *
(prononcer "star"). Cet exemple sélectionne toutes les colonnes du tableau films
tableau.
SELECT *
FROM films;
2. LIMIT
Limiter le nombre de tableaux renvoyés par un tableau est une astuce utile pour accélérer le temps d'interrogation. Pour limiter le nombre de lignes, vous pouvez utiliser la commande LIMIT
. Cet exemple sélectionne toutes les colonnes du tableau films
puis limite les résultats aux dix premières lignes.
SELECT *
FROM films
LIMIT 10;
3. AS
Pour renommer une colonne ou un tableau lors du retour des résultats, vous pouvez utiliser la commande AS
pour définir un alias pour vos sorties. Cet exemple sélectionne la colonne movie_name
et lui donne l'alias movie_title
.
SELECT movie_name AS movie_title
FROM films;
4. SELECT DISTINCT
Les ensembles de données contiennent souvent des lignes ou des valeurs en double dans une colonne. La combinaison de SELECT
avec DISTINCT
supprime les doublons. Cet exemple renvoie les valeurs uniques de la colonne director
.
SELECT DISTINCT director
FROM films;
5. COUNT
COUNT()
renvoie le nombre de tableaux dans le tableau ou le groupe. Cet exemple renvoie le nombre de tableaux dans le tableau films
, puis renomme le résultat en number_of_films
.
SELECT COUNT(*) AS number_of_films
FROM films;
Commencez à apprendre SQL gratuitement
Data Manipulation in SQL
6. MIN
MIN()
renvoie la valeur minimale d'une colonne numérique. Pour les colonnes de texte, MIN()
renvoie la première valeur par ordre alphabétique. Cet exemple renvoie le film dont les recettes sont les plus faibles.
SELECT MIN(revenue) AS minimum_revenue,
FROM films;
7. MAX
MAX()
renvoie la valeur maximale d'une colonne numérique. Pour les colonnes de texte, MAX()
renvoie la dernière valeur par ordre alphabétique. Cet exemple renvoie le film qui a généré le plus de recettes.
SELECT MAX(revenue) AS maximum_revenue,
FROM films;
8. SUM
SUM()
renvoie le total des valeurs numériques. Cet exemple renvoie les recettes totales de tous les films répertoriés dans le tableau films
.
SELECT SUM(revenue) AS total_revenue
FROM films;
9. AVERAGE
MOYENNE calcule la moyenne arithmétique d'une colonne. Cet exemple renvoie la recette moyenne de tous les films répertoriés dans le tableau films
.
SELECT AVERAGE(revenue) AS average_earned
FROM films;
10. WHERE
La clause WHERE
filtre les lignes qui répondent à une certaine condition. Par exemple, ci-dessous, nous filtrons les films qui ont rapporté plus de 500 millions de dollars
SELECT revenue
FROM films
WHERE revenue > 500000000;
D'autres opérateurs conditionnels peuvent être utilisés, tels que <
, >
, =>
, <=
, == (equals)
, != (not equals)
pour le filtrage.
11. HAVING
La clause HAVING est similaire à la clause WHERE, mais elle ne peut être utilisée qu'avec des fonctions d'agrégation, contrairement à WHERE. Par exemple, dans la requête ci-dessous, nous choisissons tous les genres de films qui ont au moins 50 films dans leur catégorie :
SELECT movie_name, director, date, COUNT(genre)
FROM films
GROUP BY genre
HAVING COUNT(genre) >= 50;
Voici un autre exemple qui regroupe les films par classe d'âge et ne retient que ceux dont les recettes moyennes sont supérieures à 100 millions d'euros :
SELECT movie_name, director, date, revenue
FROM films
GROUP BY age_rating
HAVING AVERAGE(genre) >= 100;
12. AND
AND
est utilisé pour filtrer les lignes qui répondent à plus d'une condition. Dans l'exemple ci-dessous, nous filtrerons les films anglais qui ont rapporté plus de 500 millions de dollars.
SELECT *
FROM films
WHERE revenue > 500000000 AND
language == "English";
13. OR
OR
est un autre opérateur conditionnel qui vous permet de subdiviser les lignes si l'une des conditions séparées par OR
est vraie. Cet exemple renvoie les films anglais qui ont rapporté moins de 100 millions de dollars ou les films français qui ont rapporté plus de 500 millions de dollars.
SELECT *
FROM films
WHERE (revenue < 100000000 AND language == "English") OR
(revenue > 500000000 AND language == “French”);
14. BETWEEN
BETWEEN
vous permet de subdiviser les lignes dans un certain intervalle, ce qui rend les clauses WHERE
plus simples et plus faciles à lire. Dans l'exemple ci-dessus, nous choisissons tous les films sortis entre 2020 et 2022.
SELECT *
FROM films
WHERE date BETWEEN 2020 AND 2022;
15. IN
L'opérateur IN est une abréviation pour plusieurs déclarations OR
. Cet exemple renvoie tous les films sortis au cours de l'une ou l'autre de ces années - 1998, 1966, 2001 et 2012.
SELECT movie_name, date, revenue
FROM films
WHERE date IN (1998, 1966, 2001, 2012);
16. LIKE
L'opérateur LIKE
vous permet de rechercher des motifs dans une colonne de texte à l'aide de chaînes spéciales appelées caractères génériques. Les caractères génériques vous permettent de trouver des chaînes de texte correspondant à un modèle spécifique. Par exemple, l'utilisation du caractère générique “A% W%”
dans la colonne des directeurs permettra de trouver tous les directeurs dont le prénom commence par A et le nom de famille par W.
SELECT *
FROM films
WHERE director LIKE "A% W%";
17. GROUP BY
GROUP BY
vous permet de regrouper des lignes en fonction des valeurs des colonnes. GROUP BY
est généralement utilisé avec des fonctions d'agrégation telles que COUNT
, MIN
, MAX
, AVERAGE
, et bien d'autres. Dans l'exemple ci-dessous, nous trouvons le revenu moyen de chaque genre de film.
SELECT AVERAGE(revenue), movie_name, director, date
FROM films
GROUP BY genre;
Nous aurions pu utiliser MIN
, MAX
, ou COUNT(revenue)
pour trouver les recettes les plus faibles, les recettes les plus élevées ou le nombre de films dans chaque genre. Notez que l'instruction GROUP BY
n'affecte pratiquement pas la requête si elle n'est pas utilisée avec une fonction d'agrégation.
18. ORDER BY
ORDER BY
vous permet d'ordonner les lignes en fonction de la valeur d'une colonne. Vous pouvez ordonner par ordre croissant (par défaut) ou par ordre décroissant en ajoutant ASC
ou DESC
. Cet exemple classe les recettes par ordre croissant.
SELECT *
FROM films
ORDER BY revenue ASC;
19. UPDATE
UPDATE
est utilisé pour modifier les valeurs de cellules individuelles dans un tableau existant. Il est utilisé avec le mot-clé SET
. Cet exemple met à jour le directeur “J. Whedon”
, en “Joss Whedon”
.
UPDATE films
SET director = "Joss Whedon"
WHERE director = "J. Whedon"
La clause WHERE
est cruciale pour la rédaction des déclarations UPDATE
. Sans elle, la requête ci-dessus aurait fait de tous les films réalisés par Joss Whedon.
20. ALTER TABLE
Vous pouvez utiliser l'instruction ALTER TABLE
pour modifier les propriétés du tableau et de ses colonnes (et non les valeurs réelles des cellules). Par exemple, modifier le nom des colonnes, ajouter de nouvelles colonnes, les supprimer ou modifier leur type de données. Les exemples ci-dessous illustrent la suppression de la colonne date
et l'ajout de la colonne age_rating
.
ALTER TABLE films
DROP COLUMN date;
ALTER TABLE films
ADD COLUMN age_rating;
21. CREATE TABLE
CREATE TABLE
crée un nouveau tableau dans une base de données. Ci-dessous, nous créons un tableau "bibliothèques" avec quatre tableaux - un tableau d'entiers appeléid
, un tableau de caractères appelé name
, un tableau de caractères appelé version
, et un tableau d'entiers appelé num_downloads
.
CREATE TABLE libraries (
lib_id int,
name varchar(100),
version varchar(100),
num_downloads int
)
22. INSERT INTO
INSERT INTO
peut être utilisée pour ajouter de nouveaux tableaux à un tableau. Dans cet exemple, nous ajoutons le film “Doctor Strange”
au tableau films
tableau.
INSERT INTO films (movie_name, director, revenue, date, genre, language)
VALUES ("Doctor Strange 2", “Sam Raimi”, 409000000, 2022, “Action”, “English”)
23. INNER JOIN
La commande INNER JOIN
sélectionne les lignes dont les valeurs correspondent dans les deux tableaux. Par exemple, dans la requête ci-dessous, nous sommes les tableaux des films et des bandes sonores sur une colonne commune date
qui renvoie les films et les bandes sonores qui sont sortis les mêmes années.
SELECT *
FROM films
INNER JOIN soundtracks
ON films.date = soundtracks.date
LIMIT 10;
24. LEFT JOIN
Une adresse LEFT JOIN
conserve tous les enregistrements originaux dans le tableau de gauche et renvoie des valeurs manquantes pour toutes les colonnes du tableau de droite pour lesquelles le champ de jointure n'a pas trouvé de correspondance.
SELECT *
FROM films
LEFT JOIN soundtracks
ON films.date = soundtracks.date
LIMIT 10;
25. RIGHT JOIN
Une adresse RIGHT JOIN
conserve tous les enregistrements originaux dans le tableau de droite et renvoie des valeurs manquantes pour toutes les colonnes du tableau de gauche pour lesquelles le champ de jointure n'a pas trouvé de correspondance.
SELECT *
FROM films
LEFT JOIN soundtracks
ON films.date = soundtracks.date
LIMIT 10;
Aide-mémoire des commandes SQL
Pour en savoir plus sur SQL, consultez les ressources suivantes :