BD1
2
ème
PARTIE : LE LANGAGE SQL
PLAN :
I.
Le langage de manipulation des données
II.
Le langage de définition des données
III. Administration de la base de données
IV. Divers (HORS PROGRAMME)
Introduction:
SQL ?
SQL = Structured english as a Query Language.
C’est aujourd’hui le langage standard des SGBDs (Systèmes de Gestion de
Bases de Données) relationnels.
Une requête SQL est un paraphrasage d’une expression de l’algèbre
relationnelle en anglais.
Concepts additionnels pour :
- Etendre les fonctionnalités de manipulation
- Décrire les règles d’évolution des données
Le langage SQL comprend 4 parties :
- Le langage de définition de schéma (tables, vues, droits)
- Le langage de manipulation (interrogations et mises à jour)
- La spécification de modules appelables (procédures)
- L’intégration aux langages de programmation (curseurs)
I. Le langage de manipulation des données
1) Requêtes d’interrogation
Composée de 3 éléments
SELECT, FROM, WHERE
SELECT définit la liste des attributs résultats
FROM introduit les noms des relations référencées dans le résultat et/ou
dans la condition de sélection.
WHERE spécifie les conditions de sélection que doivent vérifier les tuples
qui seront rendus comme résultats.
Page 1 sur 17
BD1
A. SELECT : Forme Générale
SELECT <liste de projection>
FROM <liste de tables>
[WHERE <critère de jointure> AND <critère de sélection>]
[GROUP BY <attributs de partitionnement>]
[HAVING <critère de sélection portant sur les groupes>]
Opérateurs de restriction
- Arithmétique (=,<,>,≠,≤,≥ )
- Textuelle (LIKE)
- Sur intervalle (BETWEEN)
- Sur liste (IN)
Possibilité de blocs imbriqués par :
IN, EXISTS, NOT EXISTS, ALL, etc…
Note [Optionnel]
B. Base de données compagnie aérienne
Pilote (numpl : integer, nompl : string, adresse : string, salaire : real)
Avion (numav : string, typav : string, capacité : integer)
Vol (numvol : string, numpl : integer , numav : string, VD_D : string, V_A :
string, H_D : string, H_A : string)
C. Opérateurs relationnels
EXPRESSION DE LA PROJECTION
SELECT <liste d’attributs>
FROM <nom de relation> <variable d’alias>
Exemple : donner les noms et adresses des pilotes
SELECT P.nompl, P.adresse
FROM pilote P ;
Remarque : dans cette requête, les tuples en double ne sont pas éliminés du
résultat.
Pour supprimer les doubles, il faut utiliser explicitement la clause ‘distinct’.
Page 2 sur 17
BD1
SELECT DISTINCT P.nompl, P.adresse
FROM pilote P ;
EXPRESSION DE LA SELECTION
Une sélection est exprimée par :
SELECT *
FROM <relation>
WHERE <condition>
L’effet de cette requête est de sélectionner tous les tuples de la relation
spécifiée dans la clause FROM et vérifiant la condition de la clause
WHERE.
COMBINAISON D’UNE PROJECTION ET D’UNE SELECTION
La combinaison d’une projection avec une sélection se fait en remplaçant *
par la liste d’attributs désirés.
Exemple : (Sélection - Projection ) : Quels sont les noms des pilotes habitant
Nice ?
SELECT P.nompl
FROM pilote P
WHERE P.adresse = ‘Nice’ ;
LE PRODUIT CARTESIEN
- Le produit cartésien peut être exprimé en indiquant les relations opérandes
dans la clause FROM sans aucune indication.
SELECT <liste d’attributs>
FROM <relation1, relation2> ;
Exemple : le produit cartésien de relation pilote et vol s’exprime en SQL par :
SELECT *
FROM pilote, vol ;
Page 3 sur 17
BD1
LA JOINTURE
La forme linéaire (toutes les conditions de jointure sont déclarées « en
vrac » dans la clause WHERE) est :
SELECT *
FROM <relation1> <alias>, <relation2> <alias>
WHERE <condition de jointure>
Exemple :
SELECT *
FROM pilote P, vol V
WHERE P ;numpl = V.numpl ;
Jointure combinée avec une projection
Exemple : Noms des pilotes qui assurent au moins un vol
SELECT P.nompl
FROM pilote P. vol V
WHERE P.numpl = V.numpl ;
Autre exemple: Noms des pilotes qui assurent au moins un vol et qui
habitent à Nice
SELECT P.nompl
FROM pilote P. vol V
WHERE P.numpl = V.numpl ;
AND P.adresse = “Nice”
FORME IMBRIQUEE DE LA JOINTURE
La deuxième manière d’exprimer une jointure est plus procédurale : en
utilisant des SELECT imbriqués reliés par un opérateur de comparaison.
Page 4 sur 17
BD1
SELECT *
FROM <relation1>
WHERE <attribut> IN
SELECT <attribut>
FROM <relation2> ;
Exemple :
SELECT *
FROM pilote
WHERE numpl IN
SELECT numpl
FROM vol ;
L’AUTO-JOINTURE
SELECT *
FROM relation V1 V2
WHERE V1.A = V2.B ;
Où V1 et V2 sont des variables tuples ou alias sur la même relation.
Exemple : Quels sont les pilotes qui conduisent à la fois les avions A101 et
A102 ?
SELECT nompl
FROM Pilote
WHERE numpl IN
SELECT numpl
FROM Vol V1 V2
WHERE V1.numav= ‘A101’ AND V2.numav = ‘A102’ AND
V1.numpl = V2.numpl ;
Page 5 sur 17
1 / 17 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !