Informatique: Un Bon Développeur Trouvera Toujours Une Technique Simple Pour Faire Le Travail À Sa Place

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 20

SQL

Informatique

💡 un bon développeur trouvera toujours une technique simple pour faire le


travail à sa place

Auteur : EL HAYANI HASSAN

Cours et Tutoriels sur le Langage SQL


Le SQL Structured Query Language) est un langage
permettant de communiquer avec une base de données. Ce
langage informatique est notamment très utilisé par les
https://sql.sh/

SQL 1
Le SQL Structured Query Language) est un langage permettant de
communiquer avec une base de données. Ce langage informatique est notamment
très utilisé par les développeurs web pour communiquer avec les données d’un
site web.

SQL SELECT
L’utilisation la plus courante de SQL consiste à lire des données issues de la
base de données.

SELECT nom_du_champ FROM nom_du_tableau

Ordre des commandes au sein d’une requête SELECT.

SELECT *
FROM table
WHERE condition
GROUP BY expression
HAVING condition
{ UNION | INTERSECT | EXCEPT }
ORDER BY expression

SQL DISTINCT

Pour éviter des redondances dans les résultats il faut simplement ajouter
DISTINCT après le mot SELECT.

SELECT DISTINCT ma_colonne


FROM nom_du_tableau

Requête pour Oracle


Pour le Système de Gestion de Bases de Données SGBD Oracle, cette
requête est remplacée par la commande “UNIQUE”:

SELECT UNIQUE ma_colonne


FROM nom_du_tableau

SQL 2
SQL WHERE

La commande WHERE dans une requête SQL permet d’extraire les lignes d’une
base de données qui respectent une condition. Cela permet d’obtenir
uniquement les informations désirées.

SELECT nom_colonnes FROM nom_table WHERE condition

SQL AND & OR

SELECT nom_colonnes FROM nom_table


WHERE condition1 OR condition2

SELECT nom_colonnes FROM nom_table


WHERE condition1 AND condition2

SQL IN

C’est une méthode simple pour vérifier si une colonne est égale à une valeur
OU une autre valeur OU une autre valeur et ainsi de suite, sans avoir à utiliser
de multiple fois l’opérateur OR.

SELECT nom_colonne
FROM table
WHERE nom_colonne IN ( valeur1, valeur2, valeur3, ... )

SQL BETWEEN
L’opérateur BETWEEN est utilisé dans une requête SQL pour sélectionner un
intervalle de données dans une requête utilisant WHER

SQL 3
SELECT *
FROM table
WHERE nom_colonne BETWEEN 'valeur1' AND 'valeur2'

SQL LIKE

L’opérateur LIKE est utilisé dans la clause WHERE des requêtes SQL. Ce mot-
clé permet d’effectuer une recherche sur un modèle particulier.

SELECT *
FROM table
WHERE colonne LIKE modele

Dans cet exemple le “modèle” n’a pas été défini, mais il ressemble très
généralement à l’un des exemples suivants:

LIKE ‘%a’ : le caractère “%” est un caractère joker qui remplace tous les
autres caractères. Ainsi, ce modèle permet de rechercher toutes les
chaines de caractère qui se termine par un “a”.

LIKE ‘a%’ : ce modèle permet de rechercher toutes les lignes de “colonne”


qui commence par un “a”.

LIKE ‘%a%’ : ce modèle est utilisé pour rechercher tous les enregistrement
qui utilisent le caractère “a”.

LIKE ‘pa%on’ : ce modèle permet de rechercher les chaines qui commence


par “pa” et qui se terminent par “on”, comme “pantalon” ou “pardon”.

LIKE ‘a_c’ : peu utilisé, le caractère “_” (underscore) peut être remplacé par
n’importe quel caractère, mais un seul caractère uniquement (alors que le
symbole pourcentage “%” peut être remplacé par un nombre incalculable
de caractères . Ainsi, ce modèle permet de retourner les lignes “aac”, “abc”
ou même “azc”.

SQL IS NULL / IS NOT NULL

SQL 4
SELECT *
FROM `table`
WHERE nom_colonne IS NULL

SELECT *
FROM `table`
WHERE nom_colonne IS NOT NULL

SQL GROUP BY

Il est par exemple possible de liste regrouper les ventes par clients identiques
et d’obtenir le coût total des achats pour chaque client.

SELECT colonne1, fonction(colonne2)


FROM table
GROUP BY colonne1

💡 A noter : cette commande doit toujours s’utiliser après la commande


WHERE et avant la commande HAVING.

Pour obtenir le coût total de chaque client en regroupant les commandes des
mêmes clients, il faut utiliser la requête suivante :

SQL 5
SELECT client, SUM(tarif)
FROM achat
GROUP BY client

La fonction SUM permet d’additionner la valeur de chaque tarif pour un


même client. Le résultat sera donc le suivant :

SQL HAVING

La condition HAVING en SQL est presque similaire à WHERE à la seule


différence que HAVING permet de filtrer en utilisant des fonctions telles que
SUM, COUNT, AVG, MIN ou MAX.

SELECT colonne1, SUM(colonne2)


FROM nom_table
GROUP BY colonne1
HAVING fonction(colonne2) operateur valeur

SQL 6
Dans cette table on souhaite récupérer la liste des clients qui ont commandé
plus de 40€, toute commandes confondu alors il est possible d’utiliser la
requête suivante :

SELECT client, SUM(tarif)


FROM achat
GROUP BY client
HAVING SUM(tarif) > 40

SQL ORDER BY

SQL 7
La commande ORDER BY permet de trier les lignes dans un résultat d’une
requête SQL. Il est possible de trier les données sur une ou plusieurs colonnes,
par ordre ascendant ou descendant.

SELECT colonne1, colonne2


FROM table
ORDER BY colonne1

Par défaut les résultats sont classés par ordre ascendant, toutefois il est
possible d’inverser l’ordre en utilisant le suffixe DESC après le nom de la
colonne.

SELECT colonne1, colonne2, colonne3


FROM table
ORDER BY colonne1 DESC, colonne2 ASC

SQL AS (alias)

Dans le langage SQL il est possible d’utiliser des alias pour renommer
temporairement une colonne ou une table dans une requête. Cette astuce est
particulièrement utile pour faciliter la lecture des requêtes

SELECT colonne1 AS c1, colonne2


FROM `table`

SQL LIMIT

La clause LIMIT est à utiliser dans une requête SQL pour spécifier le nombre
maximum de résultats que l’ont souhaite obtenir. Cette clause est souvent
associée à un OFFSET

SQL 8
SELECT *
FROM table
LIMIT 10

Cette requête permet de récupérer seulement les 10 premiers résultats d’une


table. Bien entendu, si la table contient moins de 10 résultats, alors la requête
retournera toutes les lignes.
Limit et Offset avec MySQL

SELECT *
FROM table
LIMIT 5, 10;

Cette requête retourne les enregistrements 6 à 15 d’une table. Le premier


nombre est l’OFFSET tandis que le suivant est la limite.

SQL UNION
Cette commande permet de concaténer les résultats de 2 requêtes ou plus.
Pour l’utiliser il est nécessaire que chacune des requêtes à concaténer
retournes le même nombre de colonnes, avec les mêmes types de données et
dans le même ordre.

SELECT * FROM table1


UNION
SELECT * FROM table2

SQL 9
SQL INTERSECT
La commande SQL INTERSECT permet d’obtenir l’intersection des résultats de
2 requêtes. Cette commande permet donc de récupérer les enregistrements
communs à 2 requêtes.

SELECT * FROM `table1`


INTERSECT
SELECT * FROM `table2`

SQL EXCEPT / MINUS

SQL 10
EXCEPT : PostgreSQL

MINUS : MySQL et Oracle

Cette requête permet de lister les résultats du table 1 sans inclure les
enregistrements de la table 1 qui sont aussi dans la table 2.

SELECT * FROM table1


EXCEPT
SELECT * FROM table2

SQL INSERT INTO


L’insertion de données dans une table s’effectue à l’aide de la commande
INSERT INTO.

INSERT INTO table VALUES ('valeur 1', 'valeur 2', ...)

SQL UPDATE
La commande UPDATE permet d’effectuer des modifications sur des lignes
existantes.

SQL 11
UPDATE table
SET nom_colonne_1 = 'nouvelle valeur'
WHERE condition

UPDATE client
SET rue = '49 Rue Ameline',
ville = 'Saint-Eustache-la-Forêt',
code_postal = '76210'
WHERE id = 2

SQL DELETE
La commande DELETE en SQL permet de supprimer des lignes dans une table.

DELETE FROM `table`


WHERE condition

SQL CREATE DATABASE

CREATE DATABASE ma_base

Avec MySQL, si une base de données porte déjà ce nom, la requête retournera
une erreur. Pour éviter d’avoir cette erreur, il convient d’utiliser la requête
suivante pour MySQL

CREATE DATABASE IF NOT EXISTS ma_base

SQL DROP DATABASE

SQL 12
En SQL, la commande DROP DATABASE permet de supprimer totalement une
base de données et tout ce qu’elle contient. Cette commande est à utiliser
avec beaucoup d’attention car elle permet de supprimer tout ce qui est inclus
dans une base: les tables, les données, les index …

DROP DATABASE ma_base

SQL CREATE TABLE


La commande CREATE TABLE permet de créer une table en SQL. Un tableau
est une entité qui est contenu dans une base de données pour stocker des
données ordonnées dans des colonnes.

CREATE TABLE utilisateur


(
  id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    nom VARCHAR(100),
    prenom VARCHAR(100),
    email VARCHAR(255),
date_naissance DATE,
pays VARCHAR(255),
ville VARCHAR(255),
code_postal VARCHAR(5),
nombre_achat INT
)

SQL ALTER TABLE


La commande ALTER TABLE en SQL permet de modifier une table existante.
Idéal pour ajouter une colonne, supprimer une colonne ou modifier une
colonne existante, par exemple pour changer le type.

ALTER TABLE utilisateur


ADD adresse_rue VARCHAR(255)

Jointure SQL

SQL 13
Les jointures en SQL permettent d’associer plusieurs tables dans une même
requête. Cela permet d’exploiter la puissance des bases de données
relationnelles pour obtenir des résultats qui combinent les données de
plusieurs tables de manière efficace.
Types de jointures

LEFT JOIN (ou LEFT OUTER JOIN : jointure externe pour retourner tous
les enregistrements de la table de gauche LEFT = gauche) même si la
condition n’est pas vérifié dans l’autre table.

RIGHT JOIN (ou RIGHT OUTER JOIN : jointure externe pour retourner tous
les enregistrements de la table de droite RIGHT = droite) même si la
condition n’est pas vérifié dans l’autre table.

INNER JOIN : jointure interne pour retourner les enregistrements quand la


condition est vrai dans les 2 tables. C’est l’une des jointures les plus
communes.

FULL JOIN (ou FULL OUTER JOIN : jointure externe pour retourner les
résultats quand la condition est vrai dans au moins une des 2 tables.

SELF JOIN : permet d’effectuer une jointure d’une table avec elle-même


comme si c’était une autre table.

SQL INNER JOIN


Dans le langage SQL la commande INNER JOIN, aussi appelée EQUIJOIN, est
un type de jointures très communes pour lier plusieurs tables entre-elles.
Cette commande retourne les enregistrements lorsqu’il y a au moins une ligne
dans chaque colonne qui correspond à la condition.

SQL 14
SELECT *
FROM table1
INNER JOIN table2 ON table1.id = table2.fk_id

SQL CROSS JOIN


Dans le langage SQL, la commande CROSS JOIN est un type de jointure sur 2
tables SQL qui permet de retourner le produit cartésien. Autrement dit, cela
permet de retourner chaque ligne d’une table avec chaque ligne d’une autre
table. Ainsi effectuer le produit cartésien d’une table A qui contient 30
résultats avec une table B de 40 résultats va produire 1200 résultats 30 x 40
= 1200.

SELECT *
FROM table1
CROSS JOIN table2

SQL LEFT JOIN


Dans le langage SQL, la commande LEFT JOIN (aussi appelée LEFT OUTER
JOIN est un type de jointure entre 2 tables. Cela permet de lister tous les
résultats de la table de gauche (left = gauche) même s’il n’y a pas de
correspondance dans la deuxième tables.

SQL 15
SELECT *
FROM table1
LEFT JOIN table2 ON table1.id = table2.fk_id

SQL RIGHT JOIN


En SQL, la commande RIGHT JOIN (ou RIGHT OUTER JOIN est un type de
jointure entre 2 tables qui permet de retourner tous les enregistrements de la
table de droite (right = droite) même s’il n’y a pas de correspondance avec la
table de gauche.

SQL 16
SELECT *
FROM table1
RIGHT JOIN table2 ON table1.id = table2.fk_id

SQL Sous-requête
Dans le langage SQL une sous-requête (aussi appelé “requête imbriquée” ou
“requête en cascade”) consiste à exécuter une requête à l’intérieur d’une autre
requête.

Requête imbriquée qui retourne un seul résultat

SELECT *
FROM `table`
WHERE `nom_colonne` = (
SELECT `valeur`
FROM `table2`
LIMIT 1
)

Imaginons un site web qui permet de poser des questions et d’y répondre. Un
tel site possède une base de données avec une table pour les questions et
une autre pour les réponses.

SQL 17
Avec une telle application, il est peut-être utile de connaître la question liée à
la dernière réponse ajoutée sur l’application. Cela peut être effectué via la
requête SQL suivante:

SELECT *
FROM `question`
WHERE q_id = (
    SELECT r_fk_question_id
    FROM `reponse`
ORDER BY r_date_ajout DESC
LIMIT 1
  )

SQL 18
Requête imbriquée qui retourne une colonne
Une requête imbriquée peut également retournée une colonne entière. Dès
lors, la requête externe peut utiliser la commande IN pour filtrer les lignes qui
possèdent une des valeurs retournées par la requête interne.

SELECT *
FROM `table`
WHERE `nom_colonne` IN (
SELECT `colonne`
FROM `table2`
WHERE `cle_etrangere` = 36
)

Imaginons maintenant que l’ont souhaite obtenir les questions liées à toutes
les réponses comprises entre 2 dates. Ces questions peuvent être récupérée
par la requête SQL suivante:

SELECT *
FROM `question`
WHERE q_id IN (
    SELECT r_fk_question_id
    FROM `reponse`
    WHERE r_date_ajout BETWEEN '2013-01-01' AND '2013-12-31'
  )

SQL ALL
Dans le langage SQL, la commande ALL permet de comparer une valeur dans
l’ensemble de valeurs d’une sous-requête. En d’autres mots, cette commande
permet de s’assurer qu’une condition est “égale”, “différente”, “supérieure”,

SQL 19
“inférieure”, “supérieure ou égale” ou “inférieure ou égale” pour tous les
résultats retourné par une sous-requête.

SELECT *
FROM table1
WHERE condition > ALL (
  SELECT *
  FROM table2
  WHERE condition2
)

SQL ANY
Dans le langage SQL, la commande ANY (ou SOME permet de comparer une
valeur avec le résultat d’une sous-requête. Il est ainsi possible de vérifier si
une valeur est “égale”, “différente”, “supérieur”, “supérieur ou égale”, “inférieur”
ou “inférieur ou égale” pour au moins une des valeurs de la sous-requête.

SELECT *
FROM table1
WHERE condition > ANY (
SELECT *
FROM table2
WHERE condition2
)

SQL 20

Vous aimerez peut-être aussi