3. le langage sql

EXERCICES 18. 5.1. Enoncés 18. 5.2. Corrigés 19 ... S.Q.L. est un langage
structuré permettant d'interroger et de modifier les données contenues dans une
 ...

Part of the document

























LE


LANGAGE


S.Q.L.









TABLE DES MATIERES


1. INTRODUCTION 2

1.1. Historique 2
1.2. Définition 2

2. ALGEBRE RELATIONNELLE 4

2.1. Opérateurs ensemblistes 4
2.1.1. Union 4
2.1.2. Intersection 5
2.1.3. Différence 6
2.2. Opérateurs unaires relationnels 7
2.2.1. Sélection 7
2.2.2. Projection 7
2.3. Opérateurs binaires relationnels 7
2.3.1. Le produit cartésien 7
2.3.2. La jointure 8
2.3.3. La division 8

3. LE LANGAGE SQL 9

3.1. Langage de Description de Données 9
3.1.1. CREATE 9
3.1.2. DROP 9
3.1.3. ALTER 10
3.2. Langage de Manipulation des Données 10
3.2.1. SELECT 10
3.2.2. INSERT 11
3.2.3. DELETE 11
3.2.4. UPDATE 11

4. LA SELECTION 12

4.1. Syntaxe complète du SELECT 12
4.2. Fonctions integrées 13
4.3. La Jointure 14
4.3.1. Méthode ensembliste 14
4.3.2. Méthode prédicative 15
4.3.3. Auto-jointure 15
4.4. Opérateur de partitionnement 16
4.4.1. Group by 16
4.4.2. Having 16
4.5. Opérateurs du WHERE 17

5. EXERCICES 18

5.1. Enoncés 18
5.2. Corrigés 19
5.2.1. Exercice 1 19
5.2.2. Exercice 2 19
5.2.3. Exercice 3 20
5.2.4. Exercice 4 20
5.2.5. Exercice 5 21
5.2.6. Exercice 6 21
5.2.7. Exercice 7 21
5.2.8. Exercice 8 21
5.2.9. Exercice 9 22
5.2.10. Exercice 10 22
5.2.11. Exercice 11 22
5.2.12. Exercice 12 22
13. Exercice 13 23
13. . Exercice 14 23

introduction



1 Historique



S.Q.L. est un langage structuré permettant d'interroger et de modifier
les données contenues dans une base de données relationnelle.
S.Q.L. signifie Structured Query Language. Il est issu de SEQUEL :
Structured English Query Language.
C'est le premier langage pour les S.G.B.D Relationnels. Il a été
développé par IBM en 1970 pour système R, son 1er SGBDR.
S.Q.L. a été reconnu par l'ANSI (Association de Normalisation des
Systèmes d'Information) puis imposé comme norme. Il n'existe pas de
S.G.B.D.R sans S.Q.L..
Malheureusement, malgré la norme S.Q.L., il existe un ensemble de
dialectes. Les différences entre ces différents dialectes sont souvent
minimes et tous respectent un minimum commun : ce que nous allons
étudier ici.



2 Définition



S.Q.L. est un langage relationnel qui permet d'effectuer les tâches
suivantes :
1. Définition et modification de la structure de la base de données
2. Interrogation et modification non procédurale (c'est à dire
interactive) de la base de données
3. Contrôle de sécurité et d'intégrité de la base.


S.Q.L. est un langage interactif, mais il peut aussi être intégré dans
un langage de programmation pour le développement d'applications.


S.Q.L. n'est pas le meilleur langage, en particulier pour la
manipulation des données, mais c'est un standard.


Dans tout ce qui suit les exemples seront donnés par rapport à la base
de données suivante :


AVION(AV#, AVMARQ, AVTYPE, CAP, LOC)
PILOTE(PIL#, PILNOM, ADR)
VOL(VOL#,PIL#,AV#,VD,VA,HD,HA)


AV# : numéro d'avion
AVMARQ : marque de l'avion
AVTYPE : type de l'avion
CAP : capacité en nb de passagers
LOC : ville où est basée l'avion
PIL# : numéro du pilote
PILNOM : nom du pilote
ADR : adresse du pilote
VOL# : numéro du vol
VD : ville départ
VA : ville d'arrivée
HD : heure de départ
HA : heure d'arrivée
TABLE AVION




|AV# |Marque |Type |Capaci|Localis|
| | | |té |ation |
|100 |AIRBUS |A320 |300 |Nice |
|101 |BOIENG |B707 |250 |Paris |
|102 |AIRBUS |A320 |300 |Toulous|
| | | | |e |
|103 |CARAVELLE |Caravel|200 |Toulous|
| | |le | |e |
|104 |BOEING |B747 |400 |Paris |
|105 |AIRBUS |A320 |300 |Grenobl|
| | | | |e |
|106 |ATR |ATR42 |50 |Paris |
|107 |BOEING |B727 |300 |Lyon |
|108 |BOEING |B727 |300 |Nantes |
|109 |AIRBUS |A340 |350 |Bastia |

TABLE PILOTE




|PIL# |Nom |Adresse|
|1 |SERGE |Nice |
|2 |JEAN |Paris |
|3 |CLAUDE |Grenobl|
| | |e |
|4 |ROBERT |Nantes |
|5 |MICHEL |Paris |
|6 |LUCIEN |Toulous|
| | |e |
|7 |BERTRAND |Lyon |
|8 |HERVE |Bastia |
|9 |LUC |Paris |

TABLE VOL



|VOL# |Avion |Pilote |Ville |Ville |Heure|Heure|
| | | |Départ |Arrivée |Dépar|Arriv|
| | | | | |t |ée |
|IT100 |100 |1 |NICE |PARIS |7 |9 |
|IT101 |100 |2 |PARIS |TOULOUSE |11 |12 |
|IT102 |101 |1 |PARIS |NICE |12 |14 |
|IT103 |105 |3 |GRENOBLE |TOULOUSE |9 |11 |
|IT104 |105 |3 |TOULOUSE |GRENOBLE |17 |19 |
|IT105 |107 |7 |LYON |PARIS |6 |7 |
|IT106 |109 |8 |BASTIA |PARIS |10 |13 |
|IT107 |106 |9 |PARIS |BRIVE |7 |8 |
|IT108 |106 |9 |BRIVE |PARIS |19 |20 |
|IT109 |107 |7 |PARIS |LYON |18 |19 |
|IT110 |102 |2 |TOULOUSE |PARIS |15 |16 |
|IT111 |101 |4 |NICE |NANTES |17 |19 |
Algèbre relationnelLE





1 Opérateurs ensemblistes






1 Union

















R1 U R2
Est utilisé pour relier 2 relations compatibles, c'est à dire ayant le
même nombre d'attributs et des attributs respectifs définis sur le
même domaine.
Pour l'union il faut une structure identique.






R1 : TABLE AVION PARIS NICE



|VOL |Avion |Pilote |Ville |Ville |Heure |Heure |
| | | |Départ |Arrivée|Départ |Arrivée|
|IT102 |101 |1 |Paris |Nice |12h00 |14h00 |
|IT118 |256 |1024 |Paris |Nice |9h36 |10h30 |
|IT112 |812 |2048 |Paris |Nice |12h25 |14h00 |
|IT123 |999 |1246 |Paris |Nice |19h00 |20h00 |


R2 : TABLE AVION BRIVE MARSEILLE



|VOL |Avion |Pilote |Ville |Ville |Heure |Heure |
| | | |Départ |Arrivée|Départ |Arrivée|
|IT99 |999 |2 |Brive |Marseil|10h30 |13h00 |
| | | | |le | | |


R1 U R2



|Avion |
|101 |
|256 |
|812 |
|999 |


Exemples :
4. liste des vols Paris-Nice et Brive-Marseille
5. liste des avions Airbus et Boeing
6. liste des vols sur Airbus ou sur un avion de plus de 200 places



2 Intersection















R1 ( R2
Est utilisé pour relier 2 relations compatibles, c'est à dire ayant le
même nombre d'attributs et des attributs respectifs définis sur le
même domaine.


Pour l'intersection il faut une structure identique.


R1 : TABLE AVION AIRBUS



|AV# |AVMARQ |Ville |Ville |
| | |Départ |Arrivée |
|100 |AIRBUS |NICE |PARIS |
|100 |AIRBUS |PARIS |TOULOUSE |
|105 |AIRBUS |GRENOBLE |TOULOUSE |
|105 |AIRBUS |toulouse |GRENOBLE |
|109 |AIRBUS |BASTIA |PARIS |
|102 |AIRBUS |TOULOUSE |PARIS |


R2 : TABLE AVION PARIS





|AV# |AVMARQ |Ville |Ville |
| | |Départ |Arrivée |
|100 |AIRBUS |NICE |PARIS |
|107 |BOEING |LYON |PARIS |
|109 |AIRBUS |BASTIA |PARIS |
|106 |ATR |brive |PARIS |
|102 |AIRBUS |TOULOUSE |PARIS |


R1 ( R2



|AV# |AVMARQ |Ville |Ville |
| | |Départ |Arrivée |
|100 |AIRBUS |NICE |PARIS |
|109 |AIRBUS |BASTIA |PARIS |
|102 |AIRBUS |TOULOUSE |PARIS |


Exemples :
7. Liste des avions AIRBUS allant à Paris
8. liste des pilotes de boeing habitant Toulouse






3 Différence










R1-R2
Est utilisé pour relier 2 relations compatibles, c'est à dire ayant le
même nombre d'attributs et des attributs respectifs définis sur le
même domaine.


R1 : TABLE AVION AIRBUS



|AV# |AVMARQ |Ville |Ville |
| | |Départ |Arrivée |
|100 |AIRBUS |NICE |PARIS |
|100 |AIRBUS |PARIS |TOULOUSE |
|105 |AIRBUS |GRENOBLE |TOULOUSE |
|105 |AIRBUS |toulouse |GRENOBLE |
|109 |AIRBUS |BASTIA |PARIS |
|102 |AIRBUS |TOULOUSE |PARIS |


R2 : TABLE AVION PARIS





|AV# |AVMARQ |Ville |Ville |
| | |Départ |Arrivée |
|100 |AIRBUS |NICE |PARIS |
|107 |BOEING |LYON |PARIS |
|109 |AIRBUS |BASTIA |PARIS |
|106 |ATR |brive |PARIS |
|102 |AIRBUS |TOULOUSE |PARIS |


R2 - R1



|AV# |AVMARQ |Ville |Ville |
| | |Départ |Arrivée |
|107 |BOEING |LYON |PARIS |
|106 |ATR |brive |PARIS |


R1 - R2



|AV# |AVMARQ |Ville |Ville |
| | |Départ |Arrivée |
|100 |AIRBUS |PARIS |TOULOUSE |
|105 |AIRBUS |GRENOBLE |TOULOUSE |
|105 |AIRBUS |toulouse |GRENOBLE |


Exemples :
9. liste des Airbus qui ne vont pas à Paris
10. liste des avions pour Paris qui ne sont pas des Airbus
11. liste des pilotes qui ne conduisent pas d'ATR



2 Opérateurs unaires relationnels



Les opérateurs unaires sont les opé