Commandes SQL
Le Structured Query Language, représenté par l’abréviation SQL, compte parmi les langages de programmation les plus connus. Il fait office d’interface universelle permettant le travail avec des données relationnelles ou des systèmes de gestion de base de données relationnelle (SGBDR). Ce langage est caractérisé par un nombre déconcertant de commandes SQL. Nous allons vous présenter les plus importantes, ainsi que leurs modèles sous-jacents.
- Domaine .eu ou .fr + éditeur de site gratuit pendant 6 mois
- 1 certificat SSL Wildcard par contrat
- Boîte email de 2 Go
Consultez notre article d’introduction à SQL à l’aide d’exemples pour découvrir la programmation avec SQL.
Commandes SQL : qu’est-ce que c’est ?
Les commandes SQL permettent d’ordonner à un système de gestion de base de données (SGBD) d’exécuter certaines tâches. Il peut notamment s’agir de définir des tables et leur structure, d’insérer, de modifier ou de supprimer des données et d’effectuer des requêtes.
Différentes normes ISO ou ANSI encadrent la portée des commandes SQL. De plus, il existe plusieurs dialectes spécifiques à l’implémentation. De cette manière, les implémentations des principaux fournisseurs tels que PostgreSQL, MySQL, Oracle DBMS et Microsoft SQL Server disposent toutes de leur propre variante pour ce langage. Certains fournisseurs possèdent leurs propres commandes ; la plupart du temps, leurs différences concernent surtout les fonctions liées au traitement des chaînes de caractères et d’autres données.
En réalité, SQL est composé de plusieurs sous-langages, chacun d’eux portant sur un domaine différent et bénéficiant de ses propres commandes. Découvrez avec nous les principaux types de commandes SQL.
Quels sont les différents types de commandes SQL ?
De façon approximative, il est possible de répartir les commandes SQL les plus importantes en cinq sous-langages. Voici, pour chaque sous-langage, un aperçu de son domaine d’utilisation et de ses commandes :
Sous-langage SQL | Commandes | Exemples |
---|---|---|
Data Definition Language (DDL) | Commandes de définition du schéma de la base de données : création, modification et suppression de tables de la base de données ; définition des clés primaires, des clés étrangères et des contraintes | CREATE TABLE, DROP TABLE |
Data Manipulation Language (DML) | Commandes de manipulation des données : modification, insertion et suppression d’ensembles de données | INSERT, UPDATE |
Data Query Language (DQL) | Commandes d’interrogation et de préparation des données | SELECT |
Data Control Language (DCL) | Commandes de gestion des autorisations | GRANT, REVOKE |
Transaction Control Language (TCL) | Commandes de contrôle des transactions | COMMIT, ROLLBACK |
Quelles sont les bases de la syntaxe des commandes SQL ?
SQL est un langage déclaratif, ce qui le distingue de la plupart des autres langages de programmation populaires. En d’autres termes, il décrit le résultat à atteindre sans pour autant préciser les étapes exactes qu’il convient de suivre pour arriver à cet objectif. Cette particularité donne un langage avec des commandes qui sont souvent plus longues, mais qui nécessite généralement moins de lignes de code que les langages impératifs, plus conventionnels.
À titre d’exemple, intéressons-nous à la commande SQL « DROP TABLE IF EXISTS ». Comme vous l’avez sans doute compris, cette commande unique permet de supprimer une table si celle-ci existe déjà :
DROP TABLE IF EXISTS SomeTable;
Pour créer un exemple de code aux fonctions similaires avec Python, il est nécessaire d’appeler plusieurs d’entre elles, avec une ramification sur deux lignes différentes :
if db.has_table(some_table):
db.drop_table(some_table)
Comme vous avez pu le constater, une seule commande SQL peut contenir plusieurs mots-clés. Ainsi; les différentes commandes se ressemblent sur le plan visuel. Prenons par exemple les deux commandes SQL « CREATE TABLE » et « CREATE OR REPLACE VIEW » ; si, de prime abord, elles semblent toutes deux être des expressions d’une commande « CREATE » sous-jacente, il n’en est rien. Ces commandes se ressemblent, mais elles sont totalement indépendantes l’une de l’autre.
Comme c’est également le cas d’autres langages, certaines commandes SQL peuvent prendre en charge des paramètres. La plupart du temps, il s’agit de noms de bases de données, de tables ou de colonnes. Ici, nous pouvons par exemple interroger les colonnes « Name » (nom) et « Age » (âge) de la table « People » (personnes) :
SELECT Name, Age FROM People;
Les commandes SQL telles que SELECT et CREATE TABLE s’écrivent généralement en majuscules. En réalité, SQL ne fait toutefois aucune distinction entre les majuscules et les minuscules. Il ne s’agit donc là que d’une convention très répandue.
En réalité, les commandes SQL correspondent plutôt à des instructions. Il existe d’autres constructions syntaxiques qui, dans une certaine mesure, agissent également comme des commandes. Voici une présentation des principaux éléments syntaxiques du langage SQL :
Terme | Équivalent anglais | Explication | Exemple |
---|---|---|---|
Instruction | Statement | Ordonne au système de gestion de base de données relationnelle d’effectuer une action et se termine par un point-virgule | CREATE TABLE People; |
Clause | Clause | Modifie une instruction et ne peut apparaître qu’à l’intérieur de celle-ci | WHERE, HAVING |
Expression | Expression | Renvoie une valeur lors de l’évaluation | 6 * 7 |
Identificateur | Identifier | Représente le nom d’un objet de la base de données, d’une variable ou d’une procédure et peut être qualifié ou non | dbname.tablename / tablename |
Prédicat | Predicate | Renvoie, en tant qu’expression, une valeur TRUE, FALSE ou UNKNOWN | Age < 42 |
Requête | Query | Renvoie, en tant qu’instruction spéciale, l’ensemble de données trouvé comme résultat | SELECT Name FROM People WHERE Age < 42; |
Fonction | Function | Traite une ou plusieurs valeurs, généralement pour en créer une nouvelle | UPPER('text') -- Renvoie ’TEXT’ |
Commentaire | Comment | Permet de commenter le code SQL, mais n’est pas pris en compte par le système de gestion de base de données relationnelle | -- Commentaire jusqu’à la fin de la ligne / /* Commentaire sur plusieurs lignes, le cas échéant */ |
Présentation des principales commandes SQL
Une base de données structure ses données de manière hiérarchique à l’aide de différentes couches de mémoire, qui vont du serveur de la base de données jusqu’à la valeur enregistrée dans un champ. Étant donné que SQL est en mesure de contrôler tous les aspects d’un système de gestion de base de données relationnelle (SGBDR), des commandes SQL existent pour chacune des couches susmentionnées. Voici un aperçu de la hiérarchie des différents objets d’un système de gestion de base de données relationnelle :
Objet de système de gestion de base de données relationnelle | Contenu |
---|---|
Serveur | Bases de données |
Base de données | Tables |
Table | Ensembles de données |
Ensemble de données | Champs |
Champ | Valeur d’un type donné |
En plus des principaux objets des systèmes de gestion de base de données relationnelle présentés ci-dessus, il est également possible d’utiliser d’autres objets tels que les vues (Views) et les procédures stockées (Stored Procedures). Des commandes SQL propres à chacun de ces objets existent également. Découvrons à présent les commandes relatives aux cinq sous-langages principaux de SQL :
- Data Definition Language (DDL) : langage de définition des données
- Data Manipulation Language (DML) : langage de manipulation des données
- Data Query Language (DQL) : langage d’interrogation des données
- Data Control Language (DCL) : langage de contrôle des données
- Transaction Control Language (TCL) : langage de contrôle des transactions
Commandes SQL pour la définition de données
Avec ces commandes SQL, vous pouvez définir des structures de données. Toutes ces commandes agissent sur des objets agrégés, comme les bases de données, les tables ou encore les index. Un objet agrégé peut stocker plusieurs ensembles de données ; un ensemble de données va quant à lui contenir plusieurs champs, chacun de ces champs étant associé à une colonne. La colonne permet de définir le type de données contenu par le champ (un nombre, une chaîne de caractères, une valeur booléenne…). Il est de plus possible de spécifier des restrictions pour les valeurs de ces colonnes : « doit être unique », « ne peut pas être nulle », etc.
Commandes SQL pour la définition de bases de données
Les bases de données sont toujours au sommet des systèmes de gestion de base de données relationnelle (SGBDR). Des commandes SQL permettent de créer ou encore de supprimer celles-ci :
Commande SQL | Explication | Exemple |
---|---|---|
CREATE DATABASE | Créer une nouvelle base de données | CREATE DATABASE Store; |
DROP DATABASE | Supprimer entièrement la base de données | DROP DATABASE Store; |
USE | Sélectionner la base de données pour les commandes à venir | USE Store; |
Commandes SQL pour la définition de tables
Pour créer une base de données, il faut d’abord définir son schéma. Celui-ci est essentiel si vous voulez utiliser efficacement votre base de données. Il nécessite une conception des plus méticuleuses et une représentation des différentes tables et de leurs associations. En règle générale, le schéma d’une base de données se développe à partir de diagrammes entité-association ou de diagrammes UML spécifiques.
Le schéma de la base de données prend donc la forme d’une description abstraite, tandis que sa structure se crée en utilisant les commandes SQL correspondantes. La définition des tables s’effectue avec leurs colonnes et leurs types, et les éventuels liens entre celles-ci sont matérialisés par des Foreign Keys (c’est-à-dire des « clés étrangères »). Vous avez toujours la possibilité de modifier cette structure par la suite, à l’aide d’autres commandes SQL. Découvrez avec nous les principales commandes que vous pouvez utiliser :
Commande SQL | Explication | Exemple |
---|---|---|
CREATE TABLE | Créer une nouvelle table dans la base de données ; vous pouvez définir le nom des colonnes et leurs types en plus du nom de la table | CREATE TABLE Customers ( CustomerID INT UNSIGNED NOT NULL AUTO_INCREMENT, CustomerName VARCHAR(255) NOT NULL, Country VARCHAR(60) NOT NULL, PRIMARY KEY (CustomerID) ); |
ALTER TABLE | Modifier une table existante ; vous pouvez insérer ou supprimer des colonnes, mais aussi en modifier le type ou le nom | ALTER TABLE Customers ADD Email VARCHAR(50); |
TRUNCATE TABLE | Supprimer toutes les données d’une table ; vous pouvez toutefois en conserver la structure | TRUNCATE TABLE Customers; |
DROP TABLE | Supprimer entièrement une table ; si celle-ci n’existe pas, une erreur est signalée au moment de l’exécution | DROP TABLE Customers; |
DROP TABLE IF EXISTS | Supprimer une table, à la condition que celle-ci existe | DROP TABLE IF EXISTS Customers; |
ALTER COLUMN | Modifier le type de données d’une colonne existante | ALTER TABLE Customers ALTER COLUMN Email VARCHAR(255); |
DROP COLUMN | Supprimer entièrement une colonne de la table concernée | ALTER TABLE customers DROP COLUMN Email; |
CREATE INDEX | Créer un index avec un nom pour une ou plusieurs colonnes d’une table existante | CREATE INDEX IdxEmail ON Customers (Email); |
DROP INDEX | Supprimer un index existant | ALTER TABLE Customers DROP INDEX IdxEmail; |
L’une des propriétés importantes des systèmes de gestion de base de données (SGBD) consiste à garantir la cohérence des données. Vous pouvez donc décider que les champs de certaines colonnes ne doivent pas être vides ou que les valeurs contenues par ceux-ci doivent rester dans les limites autorisées. Il s’agit là de Constraints (contraintes). De la même manière, les Foreign Keys (ou clés étrangères) permettent d’exiger l’établissement de liens corrects entre plusieurs tables.
Il suffit d’utiliser une série de clauses dans les instructions relatives à la définition des données pour spécifier les contraintes applicables aux différentes colonnes. Voici quelques-unes de ces contraintes (sans exemple) :
Commande SQL | Explication |
---|---|
NOT NULL | La valeur du champ concerné ne peut pas être nulle |
UNIQUE | La valeur du champ concerné ne peut pas apparaître deux fois dans la même colonne |
DEFAULT | Une valeur par défaut est définie pour le champ ; elle s’applique si aucune valeur n’est indiquée pour le champ concerné au moment de la création de l’ensemble de données |
CHECK | La valeur du champ doit remplir une condition |
PRIMARY KEY | Le champ contient la clé primaire (implique les commandes « UNIQUE » et « NOT NULL ») |
FOREIGN KEY | La valeur du champ doit être une clé primaire issue d’une autre table |
Commandes SQL pour la manipulation de données
Si les tables de votre base de données sont déjà définies, vous devez vous occuper des opérations sur les différents ensembles de données. En utilisant les commandes SQL appropriées, vous pouvez insérer, modifier et supprimer des ensembles de données. Dans ce contexte, il est également question des opérations CRUD de base (Create, Read, Update, Delete, soit « Créer, lire, mettre à jour et supprimer »), qui se retrouvent également dans les bases de données NoSQL :
Commande SQL | Explication | Exemple |
---|---|---|
INSERT INTO | Insérer un ensemble de données dans une table | INSERT INTO Customers (CustomerName) VALUES('Tester'); |
UPDATE | Modifier les champs d’un ou de plusieurs ensembles de données | UPDATE Customers SET Email = 'test@example.com' WHERE CustomerName = 'Tester'; |
DELETE FROM | Supprimer des ensembles de données d’une table | DELETE FROM Customers WHERE CustomerName = 'Tester'; |
Attention : les clauses ou les fonctions « WHERE », « SET » et « VALUES » que vous voyez dans les exemples ci-dessus peuvent également apparaître dans d’autres situations. Elles portent toujours le même nom, mais les règles encadrant leur utilisation peuvent toutefois légèrement différer. Nous vous conseillons donc de faire preuve de prudence lorsque vous utilisez les commandes SQL « UPDATE » et « DELETE FROM » sans la clause « WHERE ». Si vous le faites, sachez que tous les ensembles de données contenus dans la table concernée seront modifiés ou supprimés.
Commandes SQL pour l’interrogation des données
La commande « SELECT » est peut-être la plus connue parmi toutes celles que compte le langage SQL. Elle vous permet en effet d’interroger les données d’une base de données. En règle générale, cela n’a pas pour effet de modifier la base de données. Il n’est donc pas rare que la commande « SELECT » soit mise à la disposition des analystes. Découvrons ensemble les principaux composants de la commande SQL « SELECT » :
Commande SQL | Explication | Exemple |
---|---|---|
SELECT | Interroger les données de la base de données concernée | SELECT CustomerName FROM Customers; |
WHERE | Limiter la requête aux enregistrements de données répondant à un prédicat donné | SELECT Email FROM Customers WHERE CustomerName = 'Tester'; |
AS | Définir un alias pour une table ou une ligne dans une requête | SELECT CustomerID AS ID, CustomerName AS Customer FROM Customers; |
HAVING | Limiter la requête aux ensembles de données pertinents en utilisant la fonction d’agrégation | SELECT COUNT(CustomerID), Country FROM Customers HAVING COUNT(CustomerID) >= 1; |
La commande SQL « SELECT » est la seule qui permet d’interroger des données, mais ses possibilités d’utilisation sont nombreuses. Il existe en effet une série de clauses pouvant vous aider à filtrer, trier et regrouper les données générées ; découvrez-les ci-après.
Commandes SQL pour l’amélioration des requêtes
La commande SQL « SELECT » renvoie invariablement un Result Set, ou « jeu de résultats ». D’un point de vue conceptuel, un jeu de résultats peut être représenté comme une table avec des colonnes contenant des valeurs. D’un point de vue pratique, il est souvent nécessaire de filtrer ces résultats, de les trier ou encore de limiter le nombre d’ensembles de données générés. Pour chaque cas d’utilisation, il existe une clause que vous pouvez utiliser dans le cadre de votre commande SQL « SELECT » :
Commande SQL | Explication | Exemple |
---|---|---|
DISTINCT | Supprimer tout doublon du jeu de résultats | SELECT DISTINCT Country FROM Customers; |
LIMIT | Limiter le jeu aux résultats les plus élevés | SELECT * FROM Customers LIMIT 5; |
GROUP BY | Regrouper les résultats en un jeu sur la base d’une caractéristique commune | SELECT CustomerName, Country FROM Customers GROUP BY Country; |
ORDER BY | Trier le jeu de résultats sur la base d’une caractéristique | SELECT CustomerName, Email FROM Customers SORT BY CustomerName; |
ASC | Utiliser la fonction de tri dans l’ordre croissant (ascending) | SELECT DISTINCT Country FROM Customers SORT BY Country ASC; |
DESC | Utiliser la fonction de tri dans l’ordre décroissant (descending) | SELECT DISTINCT Country FROM Customers SORT BY Country DESC; |
Commandes SQL pour l’association de requêtes
En plus d’améliorer votre jeu de résultats, vous pouvez également combiner des requêtes sur plusieurs tables. À titre de rappel, une commande SQL « SELECT » renvoie un jeu de résultats. Certaines commandes SQL peuvent donc, conformément aux règles de la théorie des ensembles relationnels, vous permettre de fusionner deux jeux de résultats.
Pour vous expliquer dans le détail le fonctionnement des commandes SQL permettant d’associer des requêtes, nous devrions faire appel à des exemples plus complexes, avec la définition de plusieurs tables. Ici, nous avons donc choisi de ne vous présenter aucun exemple de code. Découvrons ensemble les principales opérations que vous pouvez utiliser dans ce contexte :
Commande SQL | Explication |
---|---|
UNION | Associer deux jeux de résultats, dont les colonnes doivent être du même type et dans le même ordre ; leurs lignes sont ainsi fusionnées |
INNER JOIN | Filtrer deux jeux de résultats sur la base d’un critère commun |
LEFT JOIN | Associer le jeu de résultats de la requête de gauche aux résultats correspondants de la requête de droite ; si les champs ne correspondent pas, leur valeur devient nulle |
RIGHT JOIN | Associer le jeu de résultats de la requête de droite aux résultats correspondants de la requête de gauche ; si les champs ne correspondent pas, leur valeur devient nulle |
FULL OUTER JOIN | Combiner les commandes « LEFT JOIN » et « RIGHT JOIN » |
Commandes SQL pour la sauvegarde et la répétition de requêtes
Comme nous avons pu le voir, les requêtes SQL peuvent s’avérer assez complexes dans certaines circonstances. Dans les faits, il est souvent judicieux de répéter ces requêtes. En principe, il est possible de sauvegarder les commandes SQL concernées sous forme de code, puis de s’en servir en cas de besoin. Cette méthode n’est toutefois pas très efficace. Fort heureusement, des commandes SQL spéciales permettent de sauvegarder des requêtes complexes directement dans le système de gestion de base de données concerné, et ce, en tant qu’entités.
Pour commencer, intéressons-nous aux vues (Views en anglais). Une vue de la base de données correspond approximativement à une requête enregistrée. À titre de rappel, une requête renvoie un jeu de résultats présenté sous la forme d’une table. Au lieu d’ignorer ce jeu, nous choisissons de l’enregistrer en tant que vue. Le terme de « table virtuelle » est donc également utilisé pour désigner une vue. De manière générale, il n’est possible d’accéder à une vue qu’en mode lecture. Quelques commandes SQL peuvent vous permettre de travailler avec les vues :
Commande SQL | Explication | Exemple |
---|---|---|
CREATE VIEW | Créer une nouvelle vue | CREATE VIEW GermanCustomers AS SELECT CustomerName, Email FROM Customers WHERE Country = "DE"; |
ALTER VIEW | Modifier une vue existante | ALTER VIEW GermanCustomers AS SELECT * FROM Customers WHERE Country = "DE"; |
CREATE OR REPLACE VIEW | Créer une nouvelle vue ou, le cas échéant, remplacer une vue existante | CREATE OR REPLACE VIEW GermanCustomers AS SELECT * FROM Customers WHERE Country = "DE"; |
SHOW CREATE VIEW | Afficher la commande SQL utilisée pour créer la vue en question | SHOW CREATE VIEW GermanCustomers; |
DROP VIEW | Supprimer une vue existante | DROP VIEW GermanCustomers; |
En plus des vues de la base de données, vous pouvez tirer parti des « procédures stockées » (Stored Procedures en anglais). Les procédures stockées vous permettent de répéter certaines requêtes et sont donc plus complexes que les vues. Elles peuvent prendre en charge des paramètres, et ainsi assembler des requêtes de façon dynamique. Une procédure stockée peut en outre vous permettre de bénéficier d’un accès en écriture aux données sous-jacentes. Nous vous présentons ci-dessous les commandes SQL correspondantes, mais nous ne disposons pas d’assez de place pour vous proposer des exemples :
Commande SQL | Explication |
---|---|
CREATE PROCEDURE | Créer une nouvelle procédure |
ALTER PROCEDURE | Modifier une procédure existante |
CREATE OR REPLACE PROCEDURE | Créer une nouvelle procédure ou, le cas échéant, remplacer une procédure existante |
DROP PROCEDURE | Supprimer une procédure existante |
CALL | Exécuter une procédure stockée |
En utilisant une procédure stockée, vous déplacez le code du client vers le serveur. Une fois cette séparation effectuée, vous bénéficiez d’une plus grande sécurité et de meilleures performances. Si la « logique métier » contenue dans une procédure stockée se trouve en dehors du système de contrôle de version, cela peut vous être dommageable. Comme les procédures stockées sont largement tributaires du système de gestion de base de données qui les entourent, un changement de fournisseur peut, dans le pire des scénarios, entraîner une perte de fonctionnalité.
Attention à ne pas confondre les Stored Procedures (procédures stockées) avec les Prepared Statements (instructions préparées). Ces deux mécanismes ont certes pour objectif d’améliorer la sécurité, mais les Prepared Statements se définissent plutôt du côté de l’application client.
Commandes SQL pour le contrôle des accès
Un seul serveur de bases de données peut renfermer plusieurs bases de données. Si vous souhaitez les administrer indépendamment les unes des autres, vous pouvez mettre en place des mécanismes de contrôle des accès. Vous avec donc la possibilité de définir le niveau des droits d’accès de chaque utilisateur aux bases de données et aux tables que celles-ci contiennent. Vous pouvez en outre créer des groupes dans lesquels vous pouvez catégoriser vos utilisateurs. Pour ce faire, deux commandes SQL sont particulièrement adaptées :
Commande SQL | Explication | Exemple |
---|---|---|
GRANT | Accorder un droit d’accès | GRANT ALL ON SomeDB.* TO 'john'@'localhost'; |
REVOKE | Révoquer un droit d’accès | REVOKE INSERT ON *.* FROM 'john'@'localhost'; |
Commandes SQL pour le contrôle des transactions
Les garanties apportées par les propriétés ACID constituent l’un des avantages de l’utilisation des systèmes de gestion de base de données relationnelles (SGBDR). Pour faire court, elles garantissent la bonne organisation et la bonne définition de vos données. Sur le plan technique, elles utilisent des transactions indivisibles sous la forme d’Atomic Operations (« opérations atomiques »). Soit la transaction est exécutée entièrement et sans aucune erreur, soit une erreur se produit et les différentes étapes sont alors annulées. Découvrons ensemble les commandes SQL pour le contrôle des transactions :
Commande SQL | Explication | Exemple |
---|---|---|
START TRANSACTION | Marquer le début d’une transaction | START TRANSACTION; |
COMMIT | Mener à bien une transaction entamée | START TRANSACTION; TRUNCATE TABLE Customers; COMMIT; |
ROLLBACK | Interrompre une transaction entamée et restaurer les données de manière à ce qu’elles retrouvent leur état initial | START TRANSACTION; TRUNCATE TABLE Customers; ROLLBACK; |
SAVEPOINT | Créer un point de sauvegarde avec un nom au sein d’une transaction | START TRANSACTION; SAVEPOINT BeforeAddData; |
ROLLBACK TO | Revenir à un point de sauvegarde avec un nom | ROLLBACK TO BeforeAddData; |
Présentation des propriétés ACID mentionnées ci-avant :
Propriété ACID | Équivalent français | Explication |
---|---|---|
Atomicity | Atomicité | Les transactions sont « indivisibles ». Cela signifie qu’elles s’exécutent entièrement ou pas du tout. Si vous interrompez une transaction atomique, le système revient à l’état dans lequel il se trouvait avant le début de ladite transaction. |
Consistency | Cohérence | Après l’exécution d’une transaction, les données réapparaissent sous une forme cohérente. |
Isolation | Isolation | Les transactions simultanées ne doivent pas avoir d’effet les unes sur les autres. |
Durability | Durabilité | Les conséquences d’une transaction sur les données concernées doivent être durables. Les résultats d’une transaction réussie ne doivent pas disparaître dans le cas, par exemple, d’une panne du SGBDR. |
Épinglez notre guide numérique à votre barre des tâches Windows. De cette manière, vous pourrez toujours vous référer facilement à nos différents articles. Pour ce faire, consultez le lien correspondant à votre situation :
- Épingler un site Web à la barre des tâches sous Windows 10 (pour les versions jusqu’à Windows 10)
- Comment épingler une page Iternet à la barre des tâches sous Windows 11