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
Commande | Description de la commande | Exemple de commande |
ADD | Ajoute 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 TABLE | Modifie 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 COLONNE | Modifiez 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 ; |
ALL | Opé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ête | SELECT employee_name, joining_date from employee WHERE employee_id = ALL (select employee_id from department_details WHERE department = 'R&D') ; |
AND | Opé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 ; |
ANY | Opérateur logique qui renvoie un résultat positif si l’une des valeurs de la sous-requête satisfait à la condition de la clause where | SELECT employee_id, employee_name from employee WHERE employee_id = ANY (select employee_id from department_details WHERE department = 'HR' OR department = 'R&D') ; |
AS | Cré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 tables | SELECT count(employee_id) AS employees_from_houston from employee WHERE city = 'Houston' ; |
ASC | Renvoie 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 ; |
ENTRE | Pour sélectionner des valeurs à l’intérieur d’une plage | SELECT employee_name, joining_date, department_id from employee WHERE salary BETWEEN 40000 AND 100000 ; |
CASE | Consiste 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ÉES | Crée une nouvelle base de données avec le nom spécifié | CREATE DATABASE movies_development ; |
CREATE TABLE | Crée une nouvelle table avec le nom de table spécifié et les noms et types de colonnes | CREATE TABLE movie_info (movie_name varchar2(255), release_date datetime, lead_actor varchar2(255), music_director varchar2(255)) ; |
DEFAULT | Définit une valeur par défaut pour la colonne spécifiée, utilisée avec les commandes CREATE ou ALTER TABLE | CREATE TABLE employee (joining_date SET DEFAULT CURRENT_DATE) ; ALTER TABLE product ALTER is_available SET DEFAULT true ; |
DELETE | Supprime les données de la table spécifiée | DELETE from employee where employee_id = 345 ; |
DESC | Renvoie 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 COLONNE | Supprime la colonne spécifiée de la table spécifiée. | ALTER TABLE employee DROP COLUMN employee_name ; |
DROP DATABASE | Supprime l’ensemble de la base de données | DROP DATABASE movies_development ; |
DROP DEFAULT | Supprime la valeur par défaut de la colonne spécifiée | ALTER TABLE employee ALTER COLUMN is_available DROP DEFAULT ; |
DROP TABLE | Supprime la table spécifiée | DROP TABLE employee ; |
EXISTS | Vé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') ; |
FROM | Spécifie la table dans laquelle les données doivent être sélectionnées ou supprimées | SELECT * FROM employee ; DELETE FROM employee where employee_id = 345 ; |
GROUP BY | Regroupe les données en fonction de la colonne spécifiée, utilisé pour les fonctions d’agrégation | Affichez le nombre d’employés dans chaque paysSELECT 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 ; |
IN | Utilisé pour sélectionner plusieurs valeurs à la fois dans une clause WHERE au lieu d’utiliser plusieurs conditions OR | SELECT employee_name FROM employee WHERE country IN ('India', 'United Kingdom', 'Singapore', 'Australia') ; |
INDEX | L’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 INTO | Ajouter une nouvelle ligne dans une table | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java') ; |
IS NULL | Vérifie la présence de valeurs nulles | SELECT employee_id from employee where employee_name IS NULL ; |
N’EST PAS NULL | Recherche de valeurs non nulles | SELECT employee_id, core_skill from employee where core_skill IS NOT NULL ; |
LIKE | Renvoie toutes les valeurs qui correspondent à un modèle donné | SELECT employee_id, first_name, last_name where first_name LIKE '%tony' ; |
NOT LIKE | Renvoie toutes les valeurs qui ne correspondent pas au modèle donné | SELECT employee_id, first_name, last_name where first_name NOT LIKE '%tony' ; |
OR | Renvoie un résultat positif si l’une des conditions de la clause where est remplie | SELECT * from employee where country = 'India' OR country = 'Australia' ; |
ORDER BY | Ordonne 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 ; |
ROWNUM | Renvoie le nombre spécifié de lignes mentionnées dans la clause WHERE de la requête | SELECT * from employee where ROWNUM <= 5 ; Cela renvoie les cinq premières lignes du jeu de résultats. |
SELECT | Sé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 INTO | Copie 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 TOP | Sélectionne le nombre spécifié d’enregistrements dans la table | SELECT TOP 5 employee_id from employee where employee_rating = 5 ; |
SET | Dé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 ; |
SOME | Renvoie 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 TABLE | Supprime les données de la table – n’oubliez pas que la table ne sera pas supprimée. | TRUNCATE TABLE log_info ; |
UNION | Renvoie 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 ; |
UNIQUE | Ajoute 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 À JOUR | Met à jour la valeur de la colonne spécifiée avec une nouvelle valeur | UPDATE employee SET first_name = 'Tony' WHERE employee_id = 345 ; |
VALEURS | Utilisé avec la commande INSERT pour ajouter une nouvelle ligne de valeurs dans la table | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java') ; |
WHERE | Ajoute des conditions pour filtrer l’ensemble des résultats d’une instruction de sélection | SELECT * from employee WHERE salary > 20000 ; |
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 :
FONCTION | DESCRIPTION | EXEMPLE |
AVG | Renvoie la valeur moyenne de la colonne spécifiée | SELECT AVG(marks) from students where subject = 'English' ; |
MIN | Renvoie la plus petite valeur de la colonne spécifiée | SELECT MIN(price) from product WHERE product_category = 'shoes' ; |
MAX | Renvoie la plus grande valeur de la colonne spécifiée | SELECT MAX(quantity), product_name from inventory ; |
COUNT | Renvoie le nombre de lignes répondant à la requête | Affiche 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 ; |
SUM | Renvoie la somme des valeurs de la colonne numérique spécifiée | SELECT SUM(marks) from students where subject = 'English' ; |
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 JOINTE | DESCRIPTION | SYNTAX | EXEMPLE |
Jointure interne | Renvoie 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 gauche | Renvoie tous les enregistrements de la table de gauche et les enregistrements correspondant aux critères de la table de droite | SELECT 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 droite | Renvoie tous les enregistrements de la table de droite et les enregistrements qui correspondent aux critères de la table de gauche | SELECT 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 ; |
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