INTRODUCTION AUX BASES DE DONNEES SQL -2 COURS 2 Université Panthéon-Assas Paris 2 L2 Economie-Gestion
Les fonctions ensemblistes MAX MAX fournit la valeur maximale d ’un attribut Capacité maximale des avions allant à Madrid
vol numvol depart arrivee numav numpil jdep hdep jarr harr V0001 V0002 Paris Londres Berlin Bruxelles New York San Francisco Moscou Madrid Rome Amsterdam A0001 A0003 A0002 A0004 A0006 A0005 P0002 P0001 P0003 P0006 P0005 15/05/99 16/05/99 17/05/99 10:00 10:30 11:15 06:20 14:30 18:00 03:00 09:30 17:00 15:10 20:00 21:30
avion numavion type cap A0001 A0002 A0003 A0004 A0005 A0006 Boeing 747 Airbus 320 Airbus 300 Boeing 737 DC 10 420 300 280 250 120 410
Les fonctions ensemblistes MAX Capacité maximale des avions allant à Madrid SELECT MAX(avion.cap) FROM avion, vol WHERE vol.numav=avion.numavion AND vol.arrivee=‘ Madrid ’ ; max(cap) 300
Les fonctions ensemblistes MIN MIN fournit la valeur minimale d ’un attribut Heure de départ du 1er vol du 15/5/99
vol numvol depart arrivee numav numpil jdep hdep jarr harr V0001 V0002 Paris Londres Berlin Bruxelles New York San Francisco Moscou Madrid Rome Amsterdam A0001 A0003 A0002 A0004 A0006 A0005 P0002 P0001 P0003 P0006 P0005 15/05/99 16/05/99 17/05/99 10:00 10:30 11:15 06:20 14:30 18:00 03:00 09:30 17:00 15:10 20:00 21:30
Les fonctions ensemblistes MIN Heure de départ du 1er vol du 15/5/99 SELECT MIN(vol.hdep) FROM vol WHERE vol.jdep={d ’1999-05-15 ’}; min(hdep) 10:00
Les fonctions ensemblistes COUNT COUNT permet de compter le nombre d ’occurrences Nombre d ’avions au départ de Paris
vol numvol depart arrivee numav numpil jdep hdep jarr harr V0001 V0002 Paris Londres Berlin Bruxelles New York San Francisco Moscou Madrid Rome Amsterdam A0001 A0003 A0002 A0004 A0006 A0005 P0002 P0001 P0003 P0006 P0005 15/05/99 16/05/99 17/05/99 10:00 10:30 11:15 06:20 14:30 18:00 03:00 09:30 17:00 15:10 20:00 21:30
Les fonctions ensemblistes COUNT COUNT permet de compter le nombre d ’occurrences Nombre d ’avions au départ de Paris SELECT COUNT(vol.depart) FROM vol WHERE vol.depart=‘ Paris ’ ; nombre(depart) 2
Les fonctions ensemblistes SUM SUM permet d ’additionner des attributs Capacité totale des avions au départ de Paris
avion numavion type cap A0001 A0002 A0003 A0004 A0005 A0006 Boeing 747 Airbus 320 Airbus 300 Boeing 737 DC 10 420 300 280 250 120 410
vol numvol depart arrivee numav numpil jdep hdep jarr harr V0001 V0002 Paris Londres Berlin Bruxelles New York San Francisco Moscou Madrid Rome Amsterdam A0001 A0003 A0002 A0004 A0006 A0005 P0002 P0001 P0003 P0006 P0005 15/05/99 16/05/99 17/05/99 10:00 10:30 11:15 06:20 14:30 18:00 03:00 09:30 17:00 15:10 20:00 21:30
Les fonctions ensemblistes SUM Capacité totale des avions au départ de Paris SELECT SUM(avion.cap) FROM avion, vol WHERE vol.numav=avion.numavion AND vol.depart=‘ Paris ’; somme(cap) 840
Les fonctions ensemblistes AVG AVG permet de calculer des moyennes d ’attributs Moyenne des capacités des avions à destination d ’Amsterdam
avion numavion type cap A0001 A0002 A0003 A0004 A0005 A0006 Boeing 747 Airbus 320 Airbus 300 Boeing 737 DC 10 420 300 280 250 120 410
vol numvol depart arrivee numav numpil jdep hdep jarr harr V0001 V0002 Paris Londres Berlin Bruxelles New York San Francisco Moscou Madrid Rome Amsterdam A0001 A0003 A0002 A0004 A0006 A0005 P0002 P0001 P0003 P0006 P0005 15/05/99 16/05/99 17/05/99 10:00 10:30 11:15 06:20 14:30 18:00 03:00 09:30 17:00 15:10 20:00 21:30
Les fonctions ensemblistes AVG Moyenne des capacités des avions à destination d ’Amsterdam SELECT AVG(avion.cap) FROM avion, vol WHERE vol.numav=avion.numavion AND vol.arrivee=‘ Amsterdam ’; moyenne(cap) 120
Les fonctions ensemblistes VAR VAR permet de calculer des variances d ’attributs
Autres fonctions DISTINCT DISTINCT permet de n ’obtenir qu’une seule fois chaque occurrence Type d ’avions
avion numavion type cap A0001 A0002 A0003 A0004 A0005 A0006 Boeing 747 Airbus 320 Airbus 300 Boeing 737 DC 10 420 300 280 250 120 410
Autres fonctions DISTINCT DISTINCT permet de n ’obtenir qu’une seule fois chaque occurrence Type d ’avions type Airbus 300 Airbus 320 Boeing 737 Boeing 747 DC 10 SELECT DISTINCT(avion.type) FROM avion
Autres fonctions ORDER BY ORDER BY permet d ’ordonner par ordre croissant ou décroissant (DESC) Type et capacité des avions par type croissant (ordre alphabétique)
avion numavion type cap A0001 A0002 A0003 A0004 A0005 A0006 Boeing 747 Airbus 320 Airbus 300 Boeing 737 DC 10 420 300 280 250 120 410
Autres fonctions ORDER BY ORDER BY permet d ’ordonner par ordre croissant ou décroissant (DESC) Type et capacité des avions par type croissant (ordre alphabétique) type cap Airbus 300 Airbus 320 Boeing 737 Boeing 747 DC 10 280 300 250 420 410 120 SELECT DISTINCT avion.type,avion.cap FROM avion ORDER BY avion.type;
Autres fonctions ORDER BY Pilotes par ordre alphabétique décroissant
pilote numpilote nom prenom P0001 P0002 P0003 P0004 P0005 P0006 Dupuis Simon François André Arthur Mathieu Antoine Georges Luc Louis
Autres fonctions ORDER BY Pilotes par ordre alphabétique décroissant nom Simon Mathieu François Dupuis Arthur André SELECT pilote.nom FROM pilote ORDER BY pilote.nom DESC;
Autres fonctions GROUP BY GROUP BY permet de faire des regroupements Somme des capacités des avions, groupés par ville de départ
avion numavion type cap A0001 A0002 A0003 A0004 A0005 A0006 Boeing 747 Airbus 320 Airbus 300 Boeing 737 DC 10 420 300 280 250 120 410
vol numvol depart arrivee numav numpil jdep hdep jarr harr V0001 V0002 Paris Londres Berlin Bruxelles New York San Francisco Moscou Madrid Rome Amsterdam A0001 A0003 A0002 A0004 A0006 A0005 P0002 P0001 P0003 P0006 P0005 15/05/99 16/05/99 17/05/99 10:00 10:30 11:15 06:20 14:30 18:00 03:00 09:30 17:00 15:10 20:00 21:30
Autres fonctions GROUP BY GROUP BY permet de faire des regroupements Somme des capacités des avions, groupés par ville de départ depart Somme(cap) Berlin Bruxelles Londres New York Paris 420 410 530 840 SELECT vol.depart, SUM(avion.cap) FROM avion, vol WHERE avion.numavion=vol.numav GROUP BY vol.depart;
Autres fonctions GROUP BY GROUP BY est souvent utilisé avec la clause HAVING qui permet de spécifier des caractéristiques du groupement Somme des capacités des avions, groupés par ville de départ telle que le 1er vol soit après 9:00
vol numvol depart arrivee numav numpil jdep hdep jarr harr V0001 V0002 Paris Londres Berlin Bruxelles New York San Francisco Moscou Madrid Rome Amsterdam A0001 A0003 A0002 A0004 A0006 A0005 P0002 P0001 P0003 P0006 P0005 15/05/99 16/05/99 17/05/99 10:00 10:30 11:15 06:20 14:30 18:00 03:00 09:30 17:00 15:10 20:00 21:30
avion numavion type cap A0001 A0002 A0003 A0004 A0005 A0006 Boeing 747 Airbus 320 Airbus 300 Boeing 737 DC 10 420 300 280 250 120 410
Autres fonctions GROUP BY depart Somme(cap) Berlin Bruxelles Paris 420 410 840 Autres fonctions GROUP BY Somme des capacités des avions, groupés par ville de départ telle que le 1er vol soit après 9:00 SELECT vol.depart, SUM(avion.cap) FROM vol, avion WHERE vol.numav=avion.numavion GROUP BY vol.depart HAVING (MIN(vol.hdep)>’09:00’);
Autres fonctions BETWEEN BETWEEN a AND b permet de tester l’appartenance à un intervalle Départ et arrivée des vols partant entre 10h et 14h30
Vol numvol depart arrivee numav numpil jdep hdep jarr harr V0001 V0002 Paris Londres Berlin Bruxelles New York San Francisco Moscou Madrid Rome Amsterdam A0001 A0003 A0002 A0004 A0006 A0005 P0002 P0001 P0003 P0006 P0005 15/05/99 16/05/99 17/05/99 10:00 10:30 11:15 06:20 14:30 18:00 03:00 09:30 17:00 15:10 20:00 21:30
Autres fonctions BETWEEN depart arrivee Berlin Bruxelles Londres Paris Amsterdam Madrid Rome Moscou San Francisco Autres fonctions BETWEEN BETWEEN a AND b permet de tester l’appartenance à un intervalle Départ et arrivée des vols partant entre 10h et 14h30 SELECT DISTINCT vol.depart, vol.arrivee FROM vol WHERE vol.hdep BETWEEN ’10:00’ AND ’14:30’;
Autres fonctions LIKE LIKE permet d’utiliser des jokers dans des chaînes de caractères Le joker _ représente un unique caractère Le joker % représente une chaîne de caractères de longueur quelconque
Autres fonctions LIKE Numéro des vols dont le nom du pilote a pour 2ème lettre la lettre « r »
vol numvol depart arrivee numav numpil jdep hdep jarr harr V0001 V0002 Paris Londres Berlin Bruxelles New York San Francisco Moscou Madrid Rome Amsterdam A0001 A0003 A0002 A0004 A0006 A0005 P0002 P0001 P0003 P0006 P0005 15/05/99 16/05/99 17/05/99 10:00 10:30 11:15 06:20 14:30 18:00 03:00 09:30 17:00 15:10 20:00 21:30
pilote numpilote nom prenom P0001 P0002 P0003 P0004 P0005 P0006 Dupuis Simon François André Arthur Mathieu Antoine Georges Luc Louis
Autres fonctions LIKE Numéro des vols dont le nom du pilote a pour 2ème lettre la lettre « r » SELECT vol.numvol numvol V0003 V0005 V0008 FROM vol, pilote WHERE vol.numpil=pilote.numpilote AND (pilote.nom LIKE ‘_r%’);
Autres fonctions LIKE Somme des capacités des avions, groupés par ville de départ telle que l’heure du 1er vol soit comprise entre 10:00 et 11:00 (11:00 non compris)
vol numvol depart arrivee numav numpil jdep hdep jarr harr V0001 V0002 Paris Londres Berlin Bruxelles New York San Francisco Moscou Madrid Rome Amsterdam A0001 A0003 A0002 A0004 A0006 A0005 P0002 P0001 P0003 P0006 P0005 15/05/99 16/05/99 17/05/99 10:00 10:30 11:15 06:20 14:30 18:00 03:00 09:30 17:00 15:10 20:00 21:30
avion numavion type cap A0001 A0002 A0003 A0004 A0005 A0006 Boeing 747 Airbus 320 Airbus 300 Boeing 737 DC 10 420 300 280 250 120 410
depart Somme(cap) Bruxelles Paris 410 840 Autres fonctions LIKE Somme des capacités des avions, groupés par ville de départ telle que l’heure du 1er vol soit comprise entre 10:00 et 11:00 (11:00 non compris) SELECT vol.depart, SUM(avion.cap) FROM vol, avion WHERE vol.numav=avion.numavion GROUP BY vol.depart HAVING MIN(vol.hdep) LIKE ’10:%’;
Autres fonctions IS NULL IS NOT NULL IS NULL et IS NOT NULL permettent de vérifier si l’attribut est renseigné ou pas Numéros des vols auxquels sont affectés des pilotes
vol numvol depart arrivee numav numpil jdep hdep jarr harr V0001 V0002 Paris Londres Berlin Bruxelles New York San Francisco Moscou Madrid Rome Amsterdam A0001 A0003 A0002 A0004 A0006 A0005 P0002 P0001 P0003 P0006 P0005 15/05/99 16/05/99 17/05/99 10:00 10:30 11:15 06:20 14:30 18:00 03:00 09:30 17:00 15:10 20:00 21:30
Autres fonctions IS NULL IS NOT NULL IS NULL et IS NOT NULL permettent de vérifier si l’attribut est renseigné ou pas Numéros des vols auxquels sont affectés des pilotes numvol V0001 V0002 V0003 V0004 V0005 V0006 V0007 V0008 SELECT vol.numvol FROM vol WHERE vol.numpil IS NOT NULL;
AND (vol.JDEP=vol0006.JDEP) AND (vol.NUMPIL<>'P0006'); Code des pilotes pilotant un avion décollant le même jour que le pilote ’P0006’ SELECT vol.NUMPIL FROM vol, vol vol0006 WHERE (vol0006.NUMPIL='P0006') AND (vol.JDEP=vol0006.JDEP) AND (vol.NUMPIL<>'P0006'); NUMPIL P0002 P0001 P0005
Nom des pilotes pilotant le même type d’avion que le pilote Simon nom SELECT DISTINCT pilote.NOM FROM avion avion, avion avionsimon, pilote pilote, pilote pilotesimon, vol vol, vol volsimon WHERE pilote.NUMPILOTE = vol.NUMPIL AND vol.NUMAV = avion.NUMAVION AND avion.TYPE = avionsimon.TYPE AND pilotesimon.NUMPILOTE = volsimon.NUMPIL AND volsimon.NUMAV = avionsimon.NUMAVION AND pilotesimon.NOM='Simon' AND pilote.NOM<>'Simon'; nom Arthur François
Nom des pilotes pilotant le même type d’avion que le pilote Simon SELECT pilote.NOM FROM avion, pilote, vol WHERE pilote.NUMPILOTE = vol.NUMPIL AND vol.NUMAV = avion.NUMAVION AND avion.TYPE = (SELECT DISTINCT avion.TYPE FROM avion , pilote , vol WHERE pilote.NUMPILOTE = vol.NUMPIL AND vol.NUMAV = avion.NUMAVION AND pilote.NOM='Simon') AND pilote.NOM<>'Simon'; nom Arthur François
NUMVOL ARRIVEE HDEP V0008 Paris 03:00 Code, destination des avions décollant le plus tôt et heure de décollage SELECT vol.NUMVOL, vol.ARRIVEE, vol.HDEP FROM vol WHERE vol.HDEP= (SELECT MIN(vol.HDEP) FROM vol );
Code, destination des avions décollant le plus tôt et heure de décollage SELECT vol.NUMVOL, vol.ARRIVEE, vol.HDEP FROM vol, vol volmin GROUP BY vol.NUMVOL, vol.ARRIVEE,vol.HDEP HAVING vol.HDEP=MIN(volmin.HDEP);