[SQL] Comprendre le Structured Query Language

apprendre sql

SQL, Structured Query Language, est un language servant à effectuer des requêtes sur une base de données.

Il permet ainsi de faire des extractions de données, des insertions, des modifications, des suppressions ou bien encore des tâches d’administration telles que la création de bases de données, de tables, de déclencheurs, la création d’utilisateurs, l’affectation de privilèges, …

SQL est un langage omniprésent en programmation, que ce soit la programmation Web ou la programmation logicielle.

Il existe des dizaines de Systèmes de Gestion de Bases de Données (SGBD) mais presque tous se base sur le langage de requêtes SQL.

Cet article a pour objectif de regrouper les commandes SQL les plus fréquemment utilisées.

Les commandes SQL

SQL: SELECT

Le SELECT permet de faire une extraction (une sélection) de données dans une table précisée par le mot clé FROM.

SELECT colonne1, colonne2 FROM TABLE;
 
SELECT nom, prenom FROM Client;

SQL: DISTINCT

Le mot clé DISTINCT, associé à une requête de type SELECT, permet d’obtenir une sélection sans redondance dans les résultats retournés.

SELECT nom FROM Client;

SQL: WHERE

Le mot clé WHERE permet d’ajouter une ou plusieurs conditions à notre requête. Le résultat sera ainsi filtré avec les données répondant aux conditions précisées.

SELECT nom, prenom FROM Client WHERE nom = 'martin';
 
SELECT nom, prenom FROM Client WHERE nom = 'martin' AND prenom = 'jean';

SQL: AND et OR

Les mots clé AND et OR permettent de cumuler un certain nombre de conditions. Le nombre de condition au sein d’une requête SQL n’est pas limité.

SELECT nom, prenom FROM Client WHERE nom = 'martin' AND prenom = 'jean';
SELECT nom, prenom FROM Client WHERE nom = 'martin' OR nom = 'durand';

SQL: IN

Le mot clé IN permet de vérifier si la valeur d’une colonne est présente dans une liste de valeurs.

SELECT nom, prenom FROM Client WHERE nom IN ('martin', 'durand', 'dupond');

SQL: BETWEEN

Le mot clé BETWEEN permet de sélectionner un interval.

SELECT nom, prenom FROM Client WHERE id BETWEEN 1 AND 30;

SQL: LIKE

Le mot clé LIKE permet d’effectuer une recherche basée sur un modèle.

SELECT nom, prenom FROM Client WHERE nom LIKE 'dur%';

Plusieurs cas sont possibles:

  • LIKE ‘valeur’: qui équivaut à égal la valeur
  • LIKE ‘valeur%’: qui équivaut à commence par valeur
  • LIKE ‘%valeur’: qui équivaut à termine par valeur
  • LIKE ‘%valeur%’: qui équivaut à contient valeur

SQL: ORDER BY

Le mot clé ORDER BY permet d’effectuer un classement des données par ordre croissant ou décroissant

SELECT nom, prenom FROM Client ORDER BY id ASC;
SELECT nom, prenom FROM Client ORDER BY id DESC;

SQL: COUNT

Le mot clé COUNT permet de compter le nombre de résultat obtenu par la requête.

SELECT Count(*) FROM Client WHERE nom = 'DURAND';

 

SQL: GROUP BY

Le mot clé GROUP BY permet d’effectuer une aggrégation des données.

SELECT magasin, SUM(prix) FROM produit GROUP BY magasin;

 

SQL: HAVING

Le mot clé HAVING permet d’effectuer un filtrage sur le résultat d’une aggrégation issue d’un GROUP BY.

SELECT magasin, SUM(prix) FROM produit GROUP BY magasin HAVING SUM(prix) > 1500;

 

SQL: ALIAS

Les alias permettent de simplifier les requêtes en assignant un nouveau nom de champ ou de table.

SELECT client.nom AS nom FROM TableAuNomSuperLongDesClient AS client;

 

SQL: Fonctions

En SQL, il existe des dizaines de fonctions de traitement mathématiques, de chaines de caractères, de temps, …, qui vont vous permettrent d’effectuer diverses opérations sur les données. Notez que certaines fonctions sont spécifiques au SGBD utilisé.

SELECT AVG(prix) FROM produit;
SELECT MIN(prix) FROM produit;
SELECT MAX(prix) FROM produit;
SELECT SUM(prix) FROM produit;
SELECT COUNT(prix) FROM produit;

 

Voici l’utilisation des principales fonctions (liste non exhaustive):

  • MIN: retourne la valeur minimale de la colonne précisée.
  • MAX: retourne la valeur maximale de la colonne précisée.
  • AVG: retourne la valeur moyenne de la colonne précisée.
  • SUM: retourne la somme des valeurs de la colonne précisée.
  • COUNT: retourne le nombre de valeur de la colonne précisée.

SQL: Jointure

Une jointure permet d’effectuer une requête sur plusieurs tables liées.

SELECT client.nom, voiture.marque FROM Client, Voiture WHERE client.voiture_id = voiture.id;

Ce qu’il faut retenir est qu’il faut forcément une condition pour faire la liaison entre les 2 tables.

SQL: Concaténation

En SQL, il est possible de concaténer plusieurs chaines de caractères en utilisant le mot clé CONCAT.

SELECT CONCAT(nom, prenom) FROM client;

SQL: SUBSTRING et TRIM

SUBSTR et TRIM sont des fonctions de traitement de chaines de caractères qui permettent respectivement d’extraire un sous ensemble de la chaîne et de supprimer les espaces au début et à la fin de la chaîne de caractère.

SELECT SUBSTR(nom, 3) FROM Client;
 
SELECT TRIM(nom) FROM Client;
 
SELECT SUBSTR(TRIM(nom), 3) FROM Client;

Manipulation de tables

SQL: CREATE TABLE

La commande CREATE TABLE permet de créer une nouvelle table.

CREATE TABLE client
(nom char(50),
prenom char(50),
addresse char(50),
city char(50),
country char(25),
anniversaire datetime);

SQL: PRIMARY KEY

La clé primaire permet de définir un identifiant (donc unique) sur une colonne.

CREATE TABLE client
(id integer, 
nom varchar(30), 
prenom varchar(30), 
PRIMARY KEY (SID));

SQL: FOREIGN KEY

Une clé secondaire ou clé étrangère permet de préciser une clé primaire d’une autre table sur une colonne.

CREATE TABLE Commande
(id integer, 
date datetime, 
client_id integer, 
prix double, 
PRIMARY KEY (id), 
FOREIGN KEY (client_id) REFERENCES CUSTOMER (id));

SQL: CREATE VIEW

Une vue est une table virtuelle qui est le résultat d’une requête de sélection.

CREATE VIEW VueClient
AS SELECT nom, prenom, pays
FROM Client;

SQL: CREATE INDEX

Un index permet de référencer un certain nombre d’informations afin d’accélérer les recherches. Les clés primaires sont automatiquement indexées.

CREATE INDEX IDX_Client_Nom
ON Client (nom);

SQL:ALTER TABLE

La commande ALTER TABLE permet de modifier une table pour y ajouter une colonne par exemple.

ALTER TABLE Client ADD age INTEGER(11);

SQL: DROP TABLE

A l’inverse de CREATE TABLE, la commande DROP TABLE permet de supprimer une table de la base de données.

DROP TABLE Client;

SQL: TRUNCATE TABLE

La commande TRUNCATE TABLE permet de vider le contenu d’une table.

TRUNCATE TABLE Client;

SQL: INSERT INTO

La commande INSERT INTO permet d’insérer des données dans la table.

INSERT INTO Client(nom, prenom, age)
VALUES ('Durand', 'Bernard', 22);

SQL: DELETE FROM

La commande DELETE FROM permet de supprimer des données d’une table.

DELETE FROM Client
WHERE nom= 'Dupond';

SQL: UPDATE

La commande UPDATE permet de mettre à jour des données.

UPDATE Client
SET Age = 25
WHERE nom = 'Durand'
AND prenom = 'Bernard';

Pour aller plus loin avec SQL

SQL: UNION

La commande UNION permet de combiner le résultat de plusieurs requêtes.

SELECT nom FROM Client
UNION
SELECT nom FROM Vendeur;

SQL: UNION ALL

La commande UNION ALL fonctionne comme la commande UNION mais en ne retournant que les résultats distints.

SELECT nom FROM Client
UNION ALL
SELECT nom FROM Vendeur;

SQL: INTERSECT

La commande INTERSECT permet de retourner les données communes à 2 requêtes.

SELECT nom FROM Client
INTERSECT
SELECT nom FROM Vendeur;

SQL: MINUS

La commande MINUS permet de prendre les résultats de la première requête à laquelle on a soustrait les résultats de la seconde requête.

SELECT nom FROM Client
MINUS
SELECT nom FROM Vendeur;

Leave a Reply

Your email address will not be published. Required fields are marked *