Langage SQL
Langage SQL
Langage SQL
DE DONNEES
Manipulation de données
SELECT, INSERT, UPDATE et DELETE sont
les 4 commandes de manipulation
des données en SQL.
La commande INSERT
La commande INSERT permet d’ajouter de
nouvelles lignes à une table.
Syntaxe
INSERT INTO NomTable (colonne1, colonne2,
colonne3) VALUES (Valeur1,Valeur2,Valeur3,...) ;
Insertion par une sélection
INSERT INTO NomTable (colonne1,colonne2,...)
SELECT colonne1,colonne2,... FROM NomTable2
WHERE condition
La commande INSERT
Exemple :
INSERT INTO Clients (idClient, nom, adresse,
numéroTelephone ) VALUES
(c214, Mamadou, cité Hamadi , 0654874125) ;
Remarque :
Les valeurs inconnues prennent la valeur NULL
La commande UPDATE
La commande UPDATE permet de changer des valeurs d’attributs de lignes
existantes.
Syntaxe
UPDATE NomTable SET Colonne = Valeur Ou Expression
[WHERE condition]
Exemple :
UPDATE Clients SET numéroTelephone = 05874521
WHERE idClient = c214 ;
Remarque :
L’absence de clause WHERE signifie que les changements doivent être
appliqués à toutes les lignes de la table cible.
La commande DELETE
La commande DELETE permet d’enlever des lignes dans une table.
Syntaxe
DELETE FROM NomTable
[WHERE condition]
Exemple :
DELETE FROM Clients WHERE idClient = ’c214’ ;
Remarque :
L’absence de clause WHERE signifie que toutes les lignes de la table
cible sont enlevées
Interroger une base de données
La commande SELECT permet de rechercher des données à
partir de plusieurs tables ;
le résultat est présenté sous forme d’une table réponse.
Syntaxe de base
SELECT [ALL|DISTINCT] NomColonne1,... | *
FROM NomTable1,...
WHERE Condition
— ALL : toutes les lignes.
— DISTINCT : pas de doublons.
— * : toutes les colonnes.
— La clause AS : SELECT Compteur AS Ctp FROM Vehicule
Expression des restrictions
Les conditions peuvent faire appel aux opérateurs
suivants :
— Opérateurs logiques : AND, OR, NOT, XOR
— Comparateurs de chaînes : IN, BETWEEN, LIKE
— Opérateurs arithmétiques : +, -, /, %
— Comparateurs arithmétiques : =, <, >, >=, <=, <>
— Fonctions numérique : abs, log, cos, sin, mod,
power,...
— Fonctions sur chaine : length, concat,...
Expression des restrictions
Exemple
SELECT * FROM produit WHERE (prix>1000)
AND (prix <=3000);
SELECT * FROM produit WHERE prix
BETWEEN 1000 AND 3000;
SELECT * FROM produit WHERE Marque IN
(’TOYOTA’,’BMW’);
Différentes clauses de SELECT
Syntaxe
SELECT *
FROM table
WHERE condition
GROUP BY expression
HAVING condition
{ UNION | INTERSECT | EXCEPT }
ORDER BY expression
LIMIT count
Différentes clauses de SELECT
— GROUP BY
GROUP BY est utilisé pour grouper plusieurs résultats sur un groupe de résultat.
Exemple
SELECT COUNT (*)
FROM produit
GROUP BY marque
— HAVING
La clause HAVING permet de spécifier une condition de restriction des groupes.
Elle sert à éliminer certains groupes, comme WHERE sert à éliminer des lignes.
Exemple
SELECT COUNT (*)
FROM produit
GROUP BY marque
HAVING COUNT (*) > 40
Différentes clauses de SELECT
— ORDER BY
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 (ASC|DESC).
Exemple
SELECT *
FROM produit
ORDER BY marque DESC
— UNION
UNION permet de concaténer les résultats de deux 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.
Exemple
SELECT marque FROM produit
UNION
SELECT marque FROM Vente
Différentes clauses de SELECT
— INTERSECT
INTERSECT permet d’obtenir l’intersection des
résultats de deux requêtes (récupérer les
enregistrements communs à 2 requêtes). Cela permet
de trouver s’ily a des données similaires sur 2 tables
distinctes.
Exemple
SELECT marque FROM produit
INTERSECT
SELECT marque FROM Vente
Expression des jointures
CROSS JOIN: Ce type de JOIN renvoie le produit cartésien
des lignes des tables de la jointure. Elle renverra un jeu de
résultats des enregistrements combinant chaque ligne de la
première table avec chaque ligne de la deuxième table.
SELECT liste-colonnes
FROM
table1 CROSS JOIN table2;
Exemple 1:
SELECT * FROM Departement CROSS JOIN Employes;
Jointures interne
INNER JOIN
La jointure la plus importante et la plus utilisée est la jointure INNER. Elle
est également appelée jointure d'égalité.
Syntaxe 1 :
SELECT liste-colonnes
FROM table1 INNER JOIN table2
ON table1.champ_commun = table1.champ_commun;
Syntaxe 2:
SELECT liste-colonnes
FROM table1 AS T1, table1 AS T2
WHERE T1.champ_commun = T2.champ_commun;
Jointures interne
Exemple 2 :
SELECT * FROM Departement AS D INNER JOIN
Employes AS E ON D.Id_dep=E.Dep;
Exemple 3:
SELECT * FROM Departement AS D, Employes AS E
WHERE D.Id_dep=E.Dep;
Jointures interne
Exemple 2 :
SELECT * FROM Departement AS D INNER JOIN
Employes AS E ON D.Id_dep=E.Dep;
Exemple 3:
SELECT * FROM Departement AS D, Employes AS E
WHERE D.Id_dep=E.Dep;
Jointures externe
LEFT JOIN renvoie toutes les lignes de la table de gauche, même s'il n'y a
pas de correspondance dans la table de droite. Cela signifie que si la clause
ON correspond à 0 (zéro) enregistrements dans la table de droite; la
jointure retournera toujours une ligne dans le résultat, mais avec NULL
Syntaxe:
SELECT liste-colonnes
FROM
table1 LEFT JOIN table2
ON table1.champ_commun = table1.champ_commun;
Exemple 4 :
SELECT *
FROM Employes AS E LEFT JOIN Departement as D
ON D.Id_dep=E.Dep;
Jointures externe
RIGHT JOIN renvoie toutes les lignes de la table de droite, même s'il
n'y a pas de correspondance dans la table de gauche. Cela signifie
que si la clause ON correspond à 0 (zéro) enregistrements dans la
table de gauche; la jointure retournera toujours une ligne dans le
résultat, mais avec NULL dans chaque colonne de la table de gauche.
Syntaxe:
SELECT liste-colonnes
FROM
table1 RIGHT JOIN table2
ON table1.champ_commun = table1.champ_commun;
Exemple 5 :
SELECT *
FROM Employes AS E RIGHT JOIN Departement as D
ON D.Id_dep=E.Dep;
Auto-jointure
SELF JOIN est utilisée pour joindre une table à elle-même
comme si la table était deux tables; renommer temporairement
au moins une table dans l'instruction SQL.
Syntaxe:
SELECT liste-colonnes
FROM table1 AS T1, table1 AS T2
WHERE T1.champ_commun = T2.champ_commun;
Exemple 6 :
SELECT *
FROM Employes AS T1, Employes AS T2
WHERE T1.Salaire>T2.Salaire;
Requête imbriquée
SQL permet l’imbrication de sous-requêtes au niveau de la clause
WHERE. Les
sous-requêtes sont utilisées :
- dans des prédicats de comparaison : (=, <>, <, <=, >, >=)
- dans des prédicats : IN, EXISTS, ALL ou ANY.
Exemple
SELECT C.nom
FROM client C
WHERE idClient IN (
SELECT V.IdClient
FROM vente V
WHERE referenceProduit IN (
SELECT idProduit
FROM produit P
WHERE P.nom = ’p1’ ))
Requête imbriquée
SQL permet l’imbrication de sous-requêtes au niveau de la clause
WHERE. Les
sous-requêtes sont utilisées :
- dans des prédicats de comparaison : (=, <>, <, <=, >, >=)
- dans des prédicats : IN, EXISTS, ALL ou ANY.
Exemple
SELECT C.nom
FROM client C
WHERE idClient IN (
SELECT V.IdClient
FROM vente V
WHERE referenceProduit IN (
SELECT idProduit
FROM produit P
WHERE P.nom = ’p1’ ))
Requête imbriquée
— Le prédicat EXISTS
Il permet de tester si le résultat d’une sous-requête est vide ou non.
Exemple
SELECT P.nom
FROM produit P
WHERE NOT EXISTS ( SELECT *
FROM vente V
WHERE V.referenceProduit = P.IdProduit )
Requête imbriquée
— Le prédicat ALL ou ANY
Ils permettent de tester si un prédicat de comparaison est vrai pour tous
(ALL) ou au moins un (ANY) des résultats d’une sous-requête.
Exemple
SELECT C.nom
FROM client C, vente V, produit P
WHERE C.idClient = V. idClient AND P.idProduit =
V.referenceProduit AND
P.prix >= ALL
( SELECT PR.prix
FROM client CL, vente VT, produit PR
WHERE CL.idClient = VT. idClient AND PP.idProduit =
VT.referenceProduit
AND PR.nom = ’c1’ )