IF6 - Initiation aux Bases de donn´ees : SQL - 1IF6 - Initiation aux Bases de donn´ees :SQL - 1E.Coqueryemmanuel.coquery@liris.cnrs.frhttp ://www710.univ-lyon1.fr/∼ecoquery/enseignement/if6IF6 - Initiation aux Bases de donn´ees : SQL - 1SQLUn langage concret interagir avec le mod`ele relationnel :Un langage de manipulation de donn´ees.Un langage de description de donn´ees.Un langage pour administrer la base, g´erer les contrˆolesd’acc`es.Origine : IBM, dans les ann´ees 70.Standards :SQL-87 : 1987 (ISO)SQL-2 : 1992 (ANSI)SQL-3 : 1999SQL-2003SQL-2006Diff´erences avec la th´eorie :possibilit´es de doublons;possibilit´e d’ordonner le r´esultat des requˆetes;notion de valeur non d´efinie.IF6 - Initiation aux Bases de donn´ees : SQL - 1Interrogation simpleSELECT att , att , ...1 2FROM nom table;R´ecup´erer les valeurs contenus dans la table nom table, en negardant que les attributs att1, att2, ...En alg`ebre relationnelle :π (nom table)att ,att ,...1 2En calcul relationnel “tuple” :{t.att ,t.att ,···| nom table(t)}1 2On peut remplacer att , att , ... par * pour utiliser tous les1 2attributs.IF6 - Initiation aux Bases de donn´ees : SQL - 1ExempleSch´ema :Employe(Nom, Num, Fonction, Num sup, Embauche, Salaire, Num Dept)Donner le nom et la fonction de chaque employ´e :SELECT Nom,Fonction FROM Employe;π (Employe)Nom,Fonction{t.Nom,t.Fonction | Employe(t)}DemoIF6 - Initiation aux Bases de donn´ees : SQL - 1Exemple 2Sch´ema :Employe(Nom, ...
En calcul relationnel “tuple” : {t.att1,t.att2,∙ ∙ ∙ |nom table(t)∧condition}
FI6-nIiittaionauxBasesedodnnee´s:SLQ-1
Conditions du WHERE
Expressions simples : Comparaisons (=,!=,<,<=,>,>=) entre un attribut et une constante ou un autre attribut diffe´rentstypesdedonn´eesutilise´spourlesconstantes: nombres : 1, 1980, 1.5 r chaıˆnesdecaract`eres:’Martin’,’directeu’ dates : ’1980-06-18’ le formattage des dates peut varier Combinaison d’expressions via : le∧:AND le∨:OR
FI6-nIiittainouaxBsaes
Exemple
Sche´ma:
edodnn´ees:SQL-1
Employe(Nom, Num, Fonction, Num sup, Embauche, Salaire, Num Dept)
Quelssontleseml´sdontladated’embaucheestant´erieureau p oye 1erjanvier 1999 :
SELECT Nom FROM Employe WHERE Embauche < ’1999-01-01’ ; πNom(σEmbauche<01999−01−010(Employe)) {t.Nom|Employe(t)∧t.Embauche<01999−01−010}
Demo
FI6-InititaionauxBasesedd
Exemple 2
Sch´em a :
noe´nes:SLQ-1
Employe(Nom, Num, Fonction, Num sup, Embauche, Salaire, Num Dept)
Quelssontlesemploy´esdontladated’embaucheestant´erieureau 1er1999 et touchant au moins 30000 euros de salaire :janvier
SELECT Nom FROM Employe WHERE Embauche < ’1999-01-01’ AND Salaire >= 30000 ; πNom(σEmbauche<01999−01−010(Employe)) {t.Nom|Employe(t)∧t.Embauche<01999−01−010}
Demo
IF6-InitiationauxBasesedodnnee´s:SLQ-
Autres conditions
1
L’ope´rateurINrepfieru´ecidesprmetlauedevemelbensn possibles : Quelssontlesemploye´squisontdirecteurouinge´nieur? SELECT Nom, Fonction FROM Employe WHERE FonctionIN(’ingenieur’,’directeur’) ; L’op´erateurBETWEEN...ANDpermfiecinrudeet´esp intervalle de valeurs : Quelsemploy´esgagnententre25000et30000euros? SELECT Nom, Salaire FROM Employe WHERE SalaireBETWEEN25000AND30000 ; Attention`anepasconfondreleANDduBETWEENaveccelui qui correspond au∧.