1
Le langage SQL
Structured Query Language
Langage de requête structurée
T. Alran – N. Bouafia – Y. Bouiche – H. Fouah – J. Pons
27/10/2017 Master 2 - SISE
Présentation • Langage complet de gestion de bases
du langage de données relationnelles
SQL (1)
• Aujourd’hui SQL est devenu un
standard (normalisé par l'ANSI depuis
1986) disponible sur presque tous les
SGBD relationnels (ORACLE,
INFORMIX, Access, SQL Server, etc.).
27/10/2017 Master 2 - SISE
Présentation Le SQL est à la fois:
du langage ✓Un langage d’Interrogation de bases de
SQL (2) données (LID)
✓Un langage de mise à jour - Manipulation
(LMD)
✓Un langage de Définition des données
(LDD)
✓Un langage de Contrôle d’accès aux
données (LCD)
27/10/2017 Master 2 - SISE
Le Langage La clause SELECT permet de réaliser : la
d'interrogation projection et la sélection.
de données
(LID) Syntaxe générale :
SELECT [DISTINCT] < noms des champs / * >
FROM < noms des tables >
[WHERE < conditions de sélection >]
[GROUP BY < noms des champs >]
[HAVING < conditions de having >]
[ORDER BY < noms des champs > [ASC / DESC]
4
27/10/2017 Master 2 - SISE
Tables et données
client
idclient
Structure de la table Client
nomclient
prenomclient
Données des différents clients villeclient
ageclient
idclient nomclient prenomclient villeclient ageclient
011 Dubois Patrick Lyon 46
012 Durand Stéphanie Toulon 61
013 Girault Philippe Marseille 37
014 Dupont Antoine Lyon 29
015 Fabian Alain Nice 54 5
27/10/2017 Master 2 - SISE
LID : La Projection
La Projection (SELECT … FROM …)
L'opération de projection consiste à choisir le nom des attributs de la (ou des)
table(s) que l'on souhaite voir apparaître dans la réponse.
Si l'on veut afficher toutes les colonnes, il faut utiliser « * ». Les noms des attributs
sont données dans la clause SELECT.
Si l’on veut éliminer les doublons, il faut utiliser « DISTINCT ». Il est utilisé pour
chaque attribut non clé.
Si l’on souhaite créer un alias pour une meilleure lisibilité (attributs et tables), il faut
utiliser « AS ».
6
Exemple : SELECT idclient AS identifiant FROM client AS c
27/10/2017 Master 2 - SISE
LID : La Projection
Exemples :
Requête 1 : SELECT villeclient FROM client
Requête 2 : SELECT * FROM client
Requête 3 : SELECT DISTINCT villeclient FROM client
Résultat de la requête 1 : Résultat de la requête 2 : Résultat de la requête 3 :
villeclient
idclient nomclient prenomclient villeclient ageclient villeclient
Lyon
011 Dubois Patrick Lyon 46 Lyon
Toulon 012 Durand Stéphanie Toulon 61
Toulon
Marseille 013 Girault Philippe Marseille 37
Marseille
014 Dupont Antoine Lyon 29
Lyon
015 Fabian Alain Nice 54 Nice
7
Nice
27/10/2017 Master 2 - SISE
LID : La Sélection
La Sélection (SELECT …FROM…WHERE…)
L'opération de sélection consiste à sélectionner des lignes d'une (ou plusieurs)
table(s) qui satisfont certaines conditions.
Les conditions sont exprimées dans la clause WHERE.
La sélection peut se faire sur 1..N critères, à l’aide :
✓ Des opérateurs de comparaison (<,>,=, <=,>=, <>)
✓ Des opérateurs logiques (AND, OR, NOT)
✓ Des opérateurs arithmétiques (+,-,*, /)
✓ Des opérateurs IN (Appartenance), BETWEEN (Intervalle, bornes incluses),
LIKE (Comparaison de chaînes), NULL.
27/10/2017 Master 2 - SISE
LID : La Sélection
Exemple:
Donnez les caractéristiques du client ayant comme identifiant 012.
SELECT * FROM client WHERE idclient=012
Résultat de la requête:
idclient nomclient prenomclient villeclient ageclient
012 Durand Stéphanie Toulon 61
27/10/2017 Master 2 - SISE
LID : La Projection et la Sélection
Projection et Sélection (SELECT …FROM…WHERE…)
Les opérations de projection et de sélection peuvent évidemment être utilisées
dans la même requête SQL.
Exemple:
Donnez les noms et prénoms des clients client âgés entre 40 et 60 ans.
SELECT nomclient FROM client WHERE ageclient BETWEEN 40 AND 60
nomclient
Résultat de la requête:
Dubois
Fabian 10
27/10/2017 Master 2 - SISE
Les opérateurs
✓ Les opérateurs et fonctions arithmétiques (dans les clauses
SELECT et WHERE)
Les opérateurs les plus utilisés sont:
ROUND : (nbre décimal, nbre de décimales)
ABS (nombre): Valeur absolue d'un nombre
SQR (nombre): Racine carrée d’un nombre (doit être >0)
✓ Les fonctions d'agrégation (dans les clauses SELECT et
HAVING)
AVG : calcule la moyenne des valeurs d’un champ numérique
COUNT : dénombre les occurrences d’un champ
MAX, MIN : donne la valeur max, min d’un champ
SUM : calcule la somme des valeurs d’un champ numérique 11
27/10/2017 Master 2 - SISE
La clause GROUP BY
La clause GROUP BY est nécessaire dès que l'on utilise des fonctions de calculs
statistiques avec des données brutes.
Cette clause regroupe les occurrences ayant même valeur pour l’attribut(s)
spécifié(s) dans la clause Group By, et renvoie une seule ligne par groupe.
Tous les attributs du SELECT et du GROUP BY doivent être identiques (aux fonctions
agrégats près).
GROUP BY trie par ordre croissant de ses attributs
Exemple:
Donner, pour chaque ville de client, le nombre de client y résidant.
SELECT villeclient, count(idclient)
FROM client
GROUP BY villeclient 12
27/10/2017 Master 2 - SISE
La clause HAVING
Elle ne s’utilise qu’avec la clause GROUP BY, pour faire des sélections sur les
calculs de regroupement.
Exemple:
Donner, pour chaque ville de client, le nombre de client y résidant si celui-
ci est supérieur à 10.
SELECT villeclient, count(idclient)
FROM client
GROUP BY villeclient HAVING count(idclient)>10
13
27/10/2017 Master 2 - SISE
La clause ORDER BY
Elle permet de trier les données de la table résultat (sans aucune altération de la
table physique).
Les attributs du ORDER BY sont inclus dans ceux du SELECT.
Les valeurs NULL se retrouvent en tête du tri.
Exemple:
SELECT DISTINCT villeclient
FROM client
ORDER BY villeclient ASC/DESC
14
27/10/2017 Master 2 - SISE
LDD : Définitions des données
Le LDD du langage SQL englobe les instructions CREATE, ALTER, DROP, permettant
d’agir sur les objets de la BD, à savoir les tables, index, vues, synonymes.
Toutes ces actions peuvent se faire en mode interactif, ou intégrées dans une application.
Elles sont toutefois toujours soumises aux autorisations dont bénéficie leur utilisateur.
CREATE
Syntaxe :
La clause CREATE permet de créer une CREATE TABLE <nom de la table>
table. Il faudra alors fournir les noms et (<Nom attribut> <type de l'attribut> …)
types des attributs de cette table.
Les types d’attributs sous Access :
Nombre entiers : SHORT/LONG
Nombres décimaux : FLOAT
Chaines de charactères : CHAR(x) (x lettres), VARCHAR(x) (jusqu’à x lettres), TEXT (255 lettres)
Bouléens : LOGICAL 15
Données temporelles : DATE, TIME
27/10/2017 Master 2 - SISE
LDD : Définitions des données
DROP ALTER
La clause DROP supprime Les modifications possibles sont les
- Tous les tuples de la table (son suivantes :
contenu)
- Ajout de nouveaux attributs (en fin
- La définition de la structure de la table
de table),
(le contenant) qui est stockée dans le
dictionnaire des objets de la BD. De - Suppression d’attributs,
plus, elle libère l’espace mémoire. - Modification d’attributs (nom, type,
propriété).
Syntaxe :
Syntaxe : • ALTER TABLE <nom de la table>
DROP TABLE <nom de la table> ADD <définition attribut>
• ALTER TABLE <nom de la table>
DROP COLUMN <nom attribut> 16
• ALTER TABLE <nom de la table>
27/10/2017 Master 2 - SISE
MODIFY <définition attribut>
Impossible sous Access
17
MAINTENANT…
…PLACE AUX
EXERCICES
27/10/2017 Master 2 - SISE