SQL, ou Structured Query Language, est un ensemble de commandes permettant de gérer les opérations des bases de données relationnelles telles que la suppression, la création, la mise à jour, la lecture, etc.

SQL est la norme internationale utilisée par les bases de données relationnelles depuis 1987. Il existe quatre types de commandes SQL :

  • Langage de définition des données (DDL) – Ces commandes définissent la structure de la base de données. Par exemple, drop, rename, alter et create. Elles affectent la structure de la base de données. Par exemple, créer une base de données ou renommer une table.
  • Langage de manipulation des données (DML ) – Ces commandes sont utilisées pour travailler avec les données. Par exemple, insérer, sélectionner, mettre à jour, supprimer. Ces commandes n’affectent pas les tables ou la structure de la base de données, mais les données présentes dans les tables. Par exemple, l’insertion d’une nouvelle ligne ou la mise à jour d’une valeur dans la ligne.
  • Langage de contrôle des transactions (TCL ) – Ces commandes contrôlent le traitement des transactions dans la base de données. Par exemple, retour en arrière, sauvegarde, validation. Ces commandes ont un impact permanent sur la base de données. Par exemple, le retour à l’état précédent de l’ensemble de la transaction, même si un processus échoue.
  • Langage de contrôle des données (DCL ) – Les commandes de contrôle des données sont utilisées pour autoriser les utilisateurs et n’accorder que les permissions nécessaires à un utilisateur ou à un groupe. Par exemple, un utilisateur peut avoir l’autorisation de lecture seule, tandis qu’un autre peut avoir l’autorisation de lecture et d’écriture. Le contrôle d’accès est effectué à l’aide des commandes grant, deny et revoke.

Vous trouverez ci-dessous l’antisèche SQL contenant les commandes les plus utiles. L’antisèche vous aidera à référencer rapidement les commandes requises avec la syntaxe correcte et le résultat attendu d’une requête. Dans cette antisèche, nous nous concentrons sur les commandes DDL et DML, car les deux autres types de commandes sont assez simples à utiliser.

Requêtes de définition et de manipulation de données

CommandeDescription de la commandeExemple de commande
ADDAjoute une colonne ou une contrainte (comme spécifié) à la table existante.ALTER TABLE employee ADD last_name varchar2(255) ; ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name) ;

ALTER TABLE employee ADD last_name varchar2(255) ; ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name) ;
ALTER TABLEModifie la table spécifiée pour ajouter, mettre à jour ou supprimer la colonne d’une table.ALTER TABLE employee ADD last_name varchar2(255) ;

ALTER TABLE employee DROP COLUMN last_name ;
ALTER COLONNEModifiez le type de données de la colonne. Par exemple, pour modifier le type de la colonne joining_date de la table employee de varchar2 à datetime.ALTER TABLE employee ALTER COLUMN joining_date datetime ;
ALLOpérateur logique utilisé avec SELECT, WHERE et HAVING, qui renvoie un résultat positif si toutes les valeurs satisfont à la condition de la sous-requêteSELECT employee_name, joining_date from employee WHERE employee_id = ALL (select employee_id from department_details WHERE department = 'R&D') ;
ANDOpérateur logique qui ne renvoie un résultat positif que si toutes les conditions de la clause WHERE sont remplies.SELECT employee_name, salary from employee WHERE city = 'California' AND salary > 2000 ;
ANYOpérateur logique qui renvoie un résultat positif si l’une des valeurs de la sous-requête satisfait à la condition de la clause whereSELECT employee_id, employee_name from employee WHERE employee_id = ANY (select employee_id from department_details WHERE department = 'HR' OR department = 'R&D') ;
ASCrée un alias pour la table ou la colonne jusqu’à l’exécution de la requête, ce qui est utile lorsque le nom est utilisé plusieurs fois, notamment lors de jointures de tablesSELECT count(employee_id) AS employees_from_houston from employee WHERE city = 'Houston' ;
ASCRenvoie les données par ordre croissant, utilisé avec la clause ORDER BY. La clause ORDER BY elle-même trie les résultats par ordre croissant par défaut.SELECT nom_de_l'employé, date_d'embauche, salaire de l'employé ORDER BY nom_de_l'employé ASC ;
ENTREPour sélectionner des valeurs à l’intérieur d’une plageSELECT employee_name, joining_date, department_id from employee WHERE salary BETWEEN 40000 AND 100000 ;
CASEConsiste en un ensemble d’instructions ; renvoie la valeur de l’instruction qui est vraie, SI aucune des conditions n’est remplie, la condition de la partie ELSE est exécutée. Si aucune autre condition n’est remplie, la partie ELSE est exécutée. Si aucune autre condition n’est remplie, la partie NULL est renvoyée.SELECT order_amount, customer_id, contact_email CASE WHEN order_amount > 3000 THEN "Eligible for 40% discount" WHEN order_amount between 2000 and 3000 THEN "Eligible for 25% discount" ELSE "Eligible for 5% discount" END FROM order_details ;
CRÉER UNE BASE DE DONNÉESCrée une nouvelle base de données avec le nom spécifiéCREATE DATABASE movies_development ;
CREATE TABLECrée une nouvelle table avec le nom de table spécifié et les noms et types de colonnesCREATE TABLE movie_info (movie_name varchar2(255), release_date datetime, lead_actor varchar2(255), music_director varchar2(255)) ;
DEFAULTDéfinit une valeur par défaut pour la colonne spécifiée, utilisée avec les commandes CREATE ou ALTER TABLECREATE TABLE employee (joining_date SET DEFAULT CURRENT_DATE) ;

ALTER TABLE product ALTER is_available SET DEFAULT true ;
DELETESupprime les données de la table spécifiéeDELETE from employee where employee_id = 345 ;
DESCRenvoie les données par ordredécroissant, utilisé avec la clause ORDER BY.SELECT nom_employé, date_d'entrée, salaire de employé ORDER BY nom_employé DESC ;
DROP COLONNESupprime la colonne spécifiée de la table spécifiée.ALTER TABLE employee DROP COLUMN employee_name ;
DROP DATABASESupprime l’ensemble de la base de donnéesDROP DATABASE movies_development ;
DROP DEFAULTSupprime la valeur par défaut de la colonne spécifiéeALTER TABLE employee ALTER COLUMN is_available DROP DEFAULT ;
DROP TABLESupprime la table spécifiéeDROP TABLE employee ;
EXISTSVérifie si un enregistrement existe ou non dans la sous-requête et renvoie un résultat vrai si un ou plusieurs résultats sont trouvés.SELECT employee_id, contact_number FROM employee WHERE EXISTS (SELECT employee_id, department FROM department WHERE employee_id = 345 AND department = 'HR') ;
FROMSpécifie la table dans laquelle les données doivent être sélectionnées ou suppriméesSELECT * FROM employee ; DELETE FROM employee where employee_id = 345 ;
GROUP BYRegroupe les données en fonction de la colonne spécifiée, utilisé pour les fonctions d’agrégationAffichez le nombre d’employés dans chaque pays

SELECT COUNT(employee_id), country from employee GROUP BY country ;

Affiche les notes moyennes des employés de chaque service

SELECT AVG(rating), department from employee GROUP BY department ;
INUtilisé pour sélectionner plusieurs valeurs à la fois dans une clause WHERE au lieu d’utiliser plusieurs conditions ORSELECT employee_name FROM employee WHERE country IN ('India', 'United Kingdom', 'Singapore', 'Australia') ;
INDEXL’index rend l’interrogation des données plus efficace et plus rapide. Les index sont généralement créés sur les colonnes qui font l’objet du plus grand nombre de recherches.Créez un index :
CREATE INDEX idx_employee ON employee (first_name, last_name) ;

Créez un index unique dont les valeurs ne peuvent pas être dupliquées :
CREATE UNIQUE INDEX idx_employee ON employee (first_name, last_name) ;

Supprimez l’index :
ALTER TABLE employee DROP INDEX idx_employee ;
INSERT INTOAjouter une nouvelle ligne dans une tableINSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java') ;
IS NULLVérifie la présence de valeurs nullesSELECT employee_id from employee where employee_name IS NULL ;
N’EST PAS NULLRecherche de valeurs non nullesSELECT employee_id, core_skill from employee where core_skill IS NOT NULL ;
LIKERenvoie toutes les valeurs qui correspondent à un modèle donnéSELECT employee_id, first_name, last_name where first_name LIKE '%tony' ;
NOT LIKERenvoie toutes les valeurs qui ne correspondent pas au modèle donnéSELECT employee_id, first_name, last_name where first_name NOT LIKE '%tony' ;
ORRenvoie un résultat positif si l’une des conditions de la clause where est remplieSELECT * from employee where country = 'India' OR country = 'Australia' ;
ORDER BYOrdonne les résultats par ordre croissant (par défaut) ou dans l’ordre spécifié dans la requête(croissantou décroissant)SELECT nom_employé, salaire de l'employé ORDER BY salaire DESC ;
ROWNUMRenvoie le nombre spécifié de lignes mentionnées dans la clause WHERE de la requêteSELECT * from employee where ROWNUM <= 5 ; Cela renvoie les cinq premières lignes du jeu de résultats.
SELECTSélectionne les colonnes mentionnées de la table en fonction des conditions données. Si * est spécifié, toutes les valeurs des colonnes sont renvoyées.SELECT employee_id from employee ; SELECT * from employee ;
SELECT INTOCopie les données de la table source dans une autre table de destination. Vous pouvez sélectionner toutes les colonnes (*) ou des colonnes spécifiques.SELECT * INTO new_employee_info FROM employee ; SELECT employee_name, joining_date, core_skill INTO new_employee_info FROM employee ;
SELECT TOPSélectionne le nombre spécifié d’enregistrements dans la tableSELECT TOP 5 employee_id from employee where employee_rating = 5 ;
SETDéfinit la valeur d’une colonne à la nouvelle valeur spécifiée lors d’une opération UPDATE.UPDATE employee SET first_name = 'Tony' WHERE employee_id = 345 ;
SOMERenvoie un résultat vrai si l’une des conditions de la sous-requête est remplie. SOME est similaire à la commande ANY.SELECT employee_id, employee_name from employee WHERE salary > SOME (select salary from employee WHERE department = 'HR') ;
TRUNCATE TABLESupprime les données de la table – n’oubliez pas que la table ne sera pas supprimée.TRUNCATE TABLE log_info ;
UNIONRenvoie des valeurs distinctes à partir de 2 tables ou plus qui ont été jointes. Pour obtenir également les valeurs en double, utilisez UNION ALL.SELECT city from employee UNION SELECT city from office_locations ;
UNIQUEAjoute une contrainte d’unicité à la colonne spécifiée, ce qui signifie que la colonne ne peut pas avoir de valeurs dupliquées. Cette contrainte peut être utilisée lors de la création ou de la modification d’une table.CREATE TABLE employee (employee_id int NOT NULL, UNIQUE(employee_id)) ;

ALTER TABLE employee ADD UNIQUE(employee_id) ;
MISE À JOURMet à jour la valeur de la colonne spécifiée avec une nouvelle valeurUPDATE employee SET first_name = 'Tony' WHERE employee_id = 345 ;
VALEURSUtilisé avec la commande INSERT pour ajouter une nouvelle ligne de valeurs dans la tableINSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java') ;
WHEREAjoute des conditions pour filtrer l’ensemble des résultats d’une instruction de sélectionSELECT * from employee WHERE salary > 20000 ;
Aide-mémoire des commandes SQL pour une référence rapide

Fonctions d’agrégation

Les fonctions d’agrégation sont des commandes de manipulation de données qui fonctionnent sur des colonnes numériques telles que int et float. Elles sont utiles pour filtrer et trier les données au niveau de la base de données elle-même. Voici quelques fonctions agrégées couramment utilisées :

FONCTIONDESCRIPTIONEXEMPLE
AVGRenvoie la valeur moyenne de la colonne spécifiéeSELECT AVG(marks) from students where subject = 'English' ;
MINRenvoie la plus petite valeur de la colonne spécifiéeSELECT MIN(price) from product WHERE product_category = 'shoes' ;
MAXRenvoie la plus grande valeur de la colonne spécifiéeSELECT MAX(quantity), product_name from inventory ;
COUNTRenvoie le nombre de lignes répondant à la requêteAffiche le nombre total d’enregistrements dans la table employee.

SELECT COUNT(*) from employee ;

Affiche le nombre d’employés dont le salaire est supérieur à 20000

SELECT COUNT(*) from employee where salary > 20000 ;
SUMRenvoie la somme des valeurs de la colonne numérique spécifiéeSELECT SUM(marks) from students where subject = 'English' ;
Fonctions d’agrégation courantes

Jointures SQL

Les jointures SQL sont très importantes car elles connectent et filtrent les données de plusieurs tables. Les jointures sont un peu délicates et peuvent donner des résultats inattendus si elles ne sont pas exécutées correctement. Le tableau ci-dessous vous aidera à vous référer rapidement aux 4 types de jointures SQL :

TYPE DE JOINTEDESCRIPTIONSYNTAXEXEMPLE
Jointure interneRenvoie les enregistrements qui correspondent dans les tables jointes ; c’est similaire à une intersection.SELECT column1, column2… from table1 INNER JOIN table2 on table1.columnN = table2.columnN ;select c.customer_id, o.order_id, c.customer_phone from customer c INNER JOIN order o on c.customer_id = o.customer_id ;
Jointure complète (externe)Renvoie tous les enregistrements qui ont une correspondance d’un côté ou de l’autre – à gauche ou à droite. Elle est similaire à une union.SELECT column1, column2… from table1 FULL OUTER JOIN table2 on table1.columnN = table2.columnN ;select c.customer_id, o.order_id, c.customer_phone from customer c FULL OUTER JOIN order o on c.customer_id = o.customer_id ;
Jointure gaucheRenvoie tous les enregistrements de la table de gauche et les enregistrements correspondant aux critères de la table de droiteSELECT column1, column2… from table1 LEFT JOIN table2 on table1.columnN = table2.columnN ;select c.country_id, c.country_name, l.location_name from country c LEFT JOIN locations l on c.country_id = l.country_id ;
Jointure droiteRenvoie tous les enregistrements de la table de droite et les enregistrements qui correspondent aux critères de la table de gaucheSELECT column1, column2… from table1 RIGHT JOIN table2 on table1.columnN = table2.columnN ;select c.country_id, c.country_name, l.location_name from country c RIGHT JOIN locations l on c.country_id = l.country_id ;
Types de jointures avec syntaxe et exemple

Ressources supplémentaires

SQL est un outil important pour les développeurs de logiciels, les scientifiques des données et les analystes. Une référence pratique des commandes SQL sous la forme d’une antisèche peut vous faire gagner beaucoup de temps et vous aider à comprendre le résultat attendu de chaque mot-clé.

Pour plus d’informations, veuillez consulter les ressources suivantes :

Tutoriel SQL : Aide-mémoire SQL

Intellipaat : Aide-mémoire sur les commandes SQL

WebsiteSetup : SQL Cheat Sheet

ProgrammingWithMosh : feuille de contrôle SQL

Cheat Sheet PostgreSQL (en anglais)