IV.
Le langage SQL
1. Introduction au langage
2. Interrogation des données
1
• Historique
Introduction
• Caractéristiques
SQL comme langage de requêtes
• Identificateurs
SQL
SQL (Structured Query Language) : standard d’accès aux bases de données relationnelles.
Plusieurs versions:
Version Description
SQL 1 ou SQL-86 SQL1 première norme ISO
SQL2 (1992) SQL1 + de nouvelles instructions
SQL3 (1999) SQL2 + approche orientée objet
SQL2003 SQL3 + quelques modifications mineures (Introduction de fonctions
pour la manipulation XML)
SQL:2008 et SQL:2011 Modifications (amélioration mineure sur les types distincts, curseurs,
support des tables temporelles, etc)
2
• Historique
Introduction
• Caractéristiques
SQL comme langage de requêtes
• Identificateurs
SQL
•Le langage SQL est un langage non procédural :
- Il traite un ensemble d'enregistrements plutôt qu'un par un.
- Il définit automatiquement le chemin d'accès aux données.
•Le langage SQL propose deux modes d'utilisation :
- Une utilisation autonome qui permet une manipulation interactive de la base de données.
- Une utilisation à partir d'un autre langage de programmation par insertion d'ordre SQL.
3
• Historique
Introduction
• Caractéristiques
SQL comme langage de requêtes
• Identificateurs
SQL
•Lexique entre modèle relationnel et SQL:
Modèle relationnel SQL
RELATION TABLE
TUPLE LIGNE
ATTRIBUT COLONNE
4
• Historique
Introduction
• Caractéristiques
SQL comme langage de requêtes
• Identificateurs
SQL
•SQL comprend la définition des données, les requêtes et les mises à jour
•Est un
• LDD: Langage de Définition des Données (ou DDL en anglais)
Création ou suppression des objets dans la base de données
• LMD: Langage de Manipulation des Données (ou DML en anglais)
Sélection, Insertion, actualisation et suppression
• LCD: Langage de contrôle de données
Gestion des utilisateurs d’une base de données ainsi que leurs droits sur les objets
5
• Historique
Introduction
• Caractéristiques
SQL comme langage de requêtes
• Identificateurs
Identificateur
•Définition: Un identificateur est un nom donné par l'utilisateur à un objet de la base (une table, une
colonne, un index, une contrainte, etc.).
Les identificateurs servent à nommer les objets SQL
•Deux formes:
• lettre suivie par : lettre ou chiffre ou _ ou ♯ ou $
• chaîne de caractères entre guillemets
•Uniquement pour la première forme :
Ils sont insensibles aux majuscules et aux minuscules
Ils doivent être différents des mots réservés SQL
•Longueur maximale: 30 caractères
6
• Historique
Introduction
• Caractéristiques
SQL comme langage de requêtes
• Identificateurs
Identificateur
Toutes les données d’une colonne sont du même type
identificateur unique pour les colonnes d’une même table
2 colonnes dans 2 tables différentes peuvent avoir le même nom
nom complet d’une colonne comprend le nom complet de la table à laquelle elle appartient
Attention :
nom NOM "NOM"
Ces trois identificateurs représentent le même nom.
7
Introduction
SQL comme langage de requêtes
Exemple du cours
Avion Pilote
numAv AvNom nbHVol capAv Loc comp numP nom nbHVol comp villeP
Compagnie
Vol
comp nrue rue ville nomComp
numVol numP numAv dateA dateD villeA villeD
8
Bases SQL
9
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Interrogation: Syntaxe
Requête::= SELECT [DISTINCT] <ListeColonne |expression|*>
FROM <liste_de_tables>
[JOIN <ide_table> [ON (<condition>) |
USING
(<liste_ide_col)]]*
WHERE condition
[GROUP BY liste de nom_de_colonne]
[HAVING condition]
[ORDER BY liste de
((nom_de_colonne|rang_de_colonne)
(ASC|DESC)];
SELECT= construire une relation:
dont les colonnes sont celles de <listeColonne>
dont les lignes sont des combinaisons de lignes, prises dans des tables spécifiées dans
<liste_de_tables>et <ide_table> et qui vérifient la condition WHERE.
10
Interrogation de la base
• Fonctions de groupe
Introduction • Sélection
• Sous-requêtes
SQL comme langage de requêtes • Recherche
• Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Commande SELECT
Permet de :
•Sélectionner certaines lignes d'une table en fonction de leur contenu (sélection) ;
•Sélectionner certaines colonnes d'une table (projection) ;
•Combiner des informations venant de plusieurs tables (jointure, union, intersection, différence et
division) ;
•Combiner entre elles ces différentes opérations.
Une requête (i.e. une interrogation) est une combinaison d'opérations portant sur des tables
(relations) et dont le résultat est lui-même une table dont l'existence est éphémère (le temps de
la requête).
11
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
SELECT
SELECT [DISTINCT] <ListeColonne |expression >
FROM <liste_de_tables>
SELECT est suivi de :
noms de colonnes existantes dans les tables spécifiée après FROM et JOIN,
expressions construites sur ces colonnes, via des opérateurs ou des fonctions
- DISTINCT: élimine les lignes identiques dans le résultat
- expression: nom de colonne, fonction, constante ou calcul
- FROM: désigne la/les table(s) à interroger
12
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Sélection des lignes
Sélection de toutes les lignes et toutes les colonnes:
Utilisation du symbole *: extrait toutes les colonnes de la table
SELECT * FROM nom_table
Exemple :
Pour connaître toutes les caractéristiques des pilotes:
PILOTE
SELECT * FROM Pilote ; numP nom nbHVol comp villeP
1200 Gratien Viel 450 AF Marseille
300 Didier Donsez 0 AF Paris
4001 Richard Grin 1000 SING Munich
13
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Sélection des lignes
Sélection de toutes les lignes mais certaines colonnes:
SELECT colonne, ...,colonne FROM nom_table
numP
Exemple :
1200
•Pour connaître les numéros des pilotes 300
SELECT numP FROM PILOTE; 4001
•Pour connaître les numéros et les compagnies des pilotes
numP comp
SELECT numP, comp FROM
PILOTE; 1200 AF
300 AF
4001 SING 14
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Sélection des lignes
Suppression des lignes dupliquées:
SELECT DISTINCT colonne, ...,colonne
FROM table ;
Exemple :
Pour connaître les compagnies pour lesquelles les pilotes ont travaillé:
Avec duplicata Sans duplicata
SELECT comp FROM Pilote; SELECT DISTINCT comp FROM Pilote;
comp
comp
AF
AF
AF
SING
SING
15
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Colonnes calculées
SELECT exp [AS alias],
...
FROM table ;
Une expression exp est : - une valeur
- un nom de colonne
- une fonction appliquée à une expression
- une combinaison d'expressions à l'aide :
- des opérations arithmétiques : +, -, *, /
- de l'opérateur de concaténation : ||
- des opérateurs de dates : +, -
Un alias est un identificateur. Il est le nom de la nouvelle colonne dérivée par calcul de
l'expression à laquelle il se rapporte.
16
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Colonnes calculées
Exemple :
SELECT numP, nbHVol, nbHVol*nbHVOL AS auCarre, 10*nbHVol
FROM Pilote;
numP nbHVol AUCARRE 10*nbHVol
1200 450 202500 4500
300 0 0 0
4001 1000 1000000 10000
17
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Colonnes calculées
Sur les chaînes de caractères:
Afficher les trajets assurés par les vols sous la forme : Ville de départ −− > Ville d’arrivée
SELECT numVOL, VilleD||' --> '||VilleA Trajet
FROM vol ;
NUMVOL TRAJET
1 MARSEILLE --> PARIS
2 PARIS --> NY
||: l’opérateur de concaténation. Permet de concaténer des expressions (colonnes, calculs, fonctions
ou constantes). La colonne résultante est considérée comme une chaîne de caractères.
18
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Colonnes calculées
Exemple:
select numP, nom||' vole pour '|| comp AS "EMBAUCHE"
from pilote;
numP nom nbHVol comp villeP
PILOTE 1200 Gratien Viel 450 AF Marseille
300 Didier Donsez 0 AF Paris
4001 Richard Grin 1000 SING Munich
numP EMBAUCHE
1200 Gratien Viel vole pour AF
300 Didier Donsez vole pour AF
4001 Richard Grin vole pour SING 19
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
En résumé
Clause SELECT= projection (d’attributs)
Clause FROM= liste des tables utilisées
Renommage d’attribut (AS) et alias de table
Syntaxe de requête SQL (crochets=option):
SELECT att1 [, att2 [AS att2’],…]
FROM nom_table1 [,nom_table2 [alias]…];
20
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Restriction
SELECT [DISTINCT] <ListeColonne |expression >
FROM <liste_de_tables>
WHERE condition
Avec Condition composée de colonnes, d’expressions, de constantes liées 2 à 2 entre des
opérateurs:
- de comparaison - logiques -intégrés
= Égal NOT BETWEEN
<> différent AND IN
> Supérieur OR LIKE
>= Supérieur ou égal IS NULL
< Inférieur
<= Inférieur ou égal
21
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Recherche par comparaison
SELECT ...
FROM table
WHERE exp op_de_comparaison exp ;
Les opérateurs de comparaison sont:
= Égal
<> différent
> Supérieur
>= Supérieur ou égal
< Inférieur
<= Inférieur ou égal
22
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Recherche par comparaison
Exemple
Pour connaître les noms des pilotes qui ont un nombre d’heures de vol supérieur à 200:
PILOTE
numP nom nbHVol comp villeP
1200 Gratien Viel 450 AF Marseille
300 Didier Donsez 0 AF Paris
4001 Richard Grin 1000 SING Munich
SELECT nom
FROM PILOTE
WHERE nbHVol > 200 ;
23
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Recherche par ressemblance
Opérateur LIKE (expression): compare de manière générique des chaînes de caractères à une
expression.
SELECT ...
FROM table
WHERE exp_chaîne [NOT] LIKE motif [caractères spéciaux];
•Caractères spéciaux :
• % : remplace 0 ou 1 ou plusieurs caractères
• _ : remplace 1 caractère
24
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Recherche par ressemblance
Exemples :
Pour connaître le nombre d’heures de vols de tous les Boeing : Avion
SELECT nbHVol numAv AvNom nbHVol capAv Loc comp
FROM Avion
WHERE AvNom LIKE 'Boeing%' ;
Pour connaître tous les pilotes dont le nom contient la lettre "a" en deuxième position :
SELECT nom
FROM Pilote
WHERE nom LIKE '_a%' ;
25
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Recherche par condition conjonctive
SELECT ...
FROM table
WHERE condition AND condition ;
Exemple :
Pour connaître tous les avions qui sont à Marseille et dont la capacité est de 300 places :
SELECT NumAv
FROM Avion
WHERE Loc = 'Marseille'
AND CapAv = 300 ;
26
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Recherche par condition disjonctive
SELECT ...
FROM table
WHERE condition OR condition ;
Exemple :
Pour connaître tous les avions qui ont une capacité de 200 et 300 :
SELECT numAv
FROM Avion
WHERE capAv = 200 OR capAv = 300 ;
27
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Recherche par condition négative
SELECT ...
FROM table
WHERE NOT condition;
Exemple :
Pour connaître tous les avions qui ne sont pas localisés à Marseille
SELECT numAv
FROM Avion
WHERE NOT Loc = 'Marseille' ;
28
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Recherche avec intervalle
Opérateur BETWEEN limiteinf AND limiteSup: teste l’appartenance à un intervalle de valeurs
SELECT ...
FROM table
WHERE exp [NOT] BETWEEN exp AND exp;
Exemple :
Pour connaître tous les pilotes qui ont un nombre d’heures de vols entre 399 et 1000:
SELECT numP
FROM Pilote
WHERE nbHVol BETWEEN 399 AND 1000;
29
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Recherche avec une liste
Les opérateurs permettant de comparer une valeur à un ensemble de valeurs sont :
Opérateur IN : compare une expression avec une liste de valeurs
Opérateur ANY : la comparaison est vraie si elle est vraie pour au moins un des éléments de
l'ensemble.
Opérateur ALL: la comparaison sera vraie si elle est vraie pour tous les éléments de l'ensemble
30
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Recherche avec une liste
Opérateur IN (liste valeurs): compare une expression avec une liste de valeurs
SELECT ...
FROM table
WHERE exp [NOT] IN (exp,….,exp);
Exemple :
Pour connaître tous les avions qui sont localisés soit à Marseille soit à Nice :
SELECT NumAv
FROM Avion
WHERE Loc IN ('Marseille','Nice') ;
31
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Recherche avec une liste
Opérateur ANY : la comparaison est vraie si elle est vraie pour au moins un des éléments de
l'ensemble.
SELECT ...
FROM table
WHERE exp op ANY (exp,….,exp);
avec op { = , <> , > , >= , < , <= }
Opérateur ALL: la comparaison sera vraie si elle est vraie pour tous les éléments de l'ensemble
SELECT ...
FROM table
WHERE exp op ALL(exp,….,exp);
32
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Recherche avec une liste
SELECT numP
FROM Pilote
WHERE nbHVol > ANY (100,399,1000);
Le NbHVol doit être supérieur à au moins une des valeurs
SELECT numP
FROM Pilote
WHERE nbHVol > ALL (100,399,1000);
Le NbHVol doit être supérieur au maximum de toutes les valeurs (donc plus que 1000)
exp = ANY (exp, ...,exp) exp <> ALL (exp, ...,exp)
c c
exp IN (exp, ...,exp) exp NOT IN (exp, ...,exp)
33
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Traitement de l’absence de valeurs
Un calcul numérique ou de dates exprimé avec les opérateurs +, -, *, / n'a pas de valeur
lorsqu'au moins une de ses composantes n'a pas de valeur.
Exemples :
SELECT AVNOM, 2*CapAv/3 AS CapReduite
FROM Avion
WHERE NumAv=800 ;
34
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Traitement de l’absence de valeurs
Un calcul de chaînes exprimé avec l'opérateur || n'a pas de valeur lorsque toutes ses
composantes n'ont pas de valeur. La chaîne vide et l'absence de valeur sont confondus.
Exemples :
SELECT NBHVOL, Nom||''||VilleP AS DONNESP
FROM pilote
WHERE NumP=400 ;
35
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Traitement de l’absence de valeurs
Toute comparaison exprimée avec les opérateurs
=, <>, <, <=, >, >=, LIKE,
qui comporte une expression qui n'a pas de valeur prend la valeur logique INDÉFINI, donc elle
n'est pas vraie, de même que sa négation.
Exemple :
On dit que les comparaisons ignorent les lignes où il y a absence de valeur :
SELECT NUMP
FROM Pilote
WHERE VilleP <> 'Paris' ;
36
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Traitement de l’absence de valeurs
Equivalences disjonctives:
exp NOT BETWEEN exp1 AND exp2 exp IN (exp1, ...,expN)
c c
exp < exp1 OR exp > exp2 exp = exp1 OR ...OR exp = expN
exp op ANY (exp1, ...,expN)
c
exp op exp1 OR ...OR exp op expN
Donc les expressions suivantes :
exp NOT BETWEEN exp1 AND exp2 sont vraies si exp a une valeur et si au moins une des
expressions exp1 ... expN a une valeur qui satisfait la
exp IN (exp1, ...,expN)
comparaison sous-jacente.
exp op ANY (exp1, ...,expN)
37
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Traitement de l’absence de valeurs
Exemple:
SELECT NumP FROM Pilote
WHERE VilleP IN ('Marseille','Nice');
38
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Traitement de l’absence de valeurs
Equivalences conjonctives:
exp BETWEEN exp1 AND exp2 exp NOT IN (exp1, ...,expN)
c c
exp >=exp1 AND exp <= exp2 exp <>exp1 AND ...AND exp<> expN
exp op ALL(exp1, ...,expN)
c
exp op exp1 AND ...AND exp op expN
Donc les expressions suivantes :
exp BETWEEN exp1 AND exp2 sont vraies si exp a une valeur et si toutes les expressions
exp1 ... expN ont chacune une valeur qui satisfait la
exp NOT IN (exp1, ...,expN)
comparaison sous-jacente
exp op ALL (exp1, ...,expN)
39
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Traitement de l’absence de valeurs
Exemple:
SELECT NumP FROM Pilote
WHERE VilleP NOT IN ('Marseille','Nice');
40
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Traitement de l’absence de valeurs
Rechercher l’absence de valeur
SELECT ...
FROM table
WHERE exp IS [NOT] NULL ;
Exemple :
Pour connaître tous les vols auxquels on n'a pas encore affecté d'avions :
SELECT NumVol
FROM Vol WHERE NumAv IS NULL ;
41
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Traitement de l’absence de valeurs
Donner une valeur à l’absence de valeur
- fonction NVL remplace une valeur nulle avec une valeur non nulle
NVL(exp1,exp2) = exp1 si elle est définie
= exp2 sinon
• NVL(exp1, exp2): retourne exp1 si exp2 est nulle, sinon la fonction retourne exp1.
•exp1 et exp2 doivent être de même type.
42
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Traitement de l’absence de valeurs
Exemple :
Pour faire en sorte qu'une capacité d'avion inconnue soit considérée comme une capacité nulle.
SELECT NumAv, nvl(CapAv,0) CapAv
FROM Avion ;
43
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Ordonner les réponses
ORDER BY :permet de trier les lignes dans un résultat d’une requête SQL.
Syntaxe:
SELECT ...
FROM table
[WHERE ... ]
ORDER BY {exp|position}[ASC|DESC]
[{exp|position}[ASC|DESC]]...;
- Par défaut les résultats sont classés par ordre ascendant (ASC)
- DESC: pour un tri par ordre descendant
44
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Ordonner les réponses
Exemple :
Pour connaître les numéros et les noms des pilotes triés par ordre croissant des noms:
SELECT numP,
nom
FROM PILOTE
ORDER BY nom ;
45
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
Ordonner les réponses
Exemple :
Pour connaître les numéros de vols, et les dates d’arrivée triés par ordre croissant :
SELECT NumVol, DateA
FROM Vol
ORDER BY 2 ;
Exemple :
Pour connaître les avions par ordre alphabétique et par capacité décroissante :
SELECT DISTINCT AvNom, CapAv
FROM Avion
ORDER BY NomAv, CapAv DESC ;
46
Interrogation de la base
• Sélection • Fonctions de groupe
Introduction • Sous-requêtes
SQL comme langage de requêtes • Recherche • Opérateurs de l’algèbre relationnelle
• Ordonner les réponses
En résumé
Clause WHERE= sélection (d’instances)
Condition = combinaison (AND, OR) d’expressions (=, !=, <, <=,>,>=)
Opérateurs spécifiques (IN, BETWEEN), valeur non définie (NULL)
Clause ORDER By= tri du résultat
SELECT att1 [, att2 [AS att2’],…]
FROM nom_table1 [,nom_table2 [alias],…]
Syntaxe de requête SQL (crochets=option): [WHERE condition]
[ORDER BY atti [,attj,…]];
47