You are on page 1of 14

LELANGAGESQL

Langagedemanipulationdedonnes(LMD)
Notations
MotsclsenmajusculeGRAS
Paramtresentrechevrons(ex:<table>)
Optionnelentrecrochets(ex:[a])
Alternativesdesyntaxesentreaccolades
sparspardesbarres(ex:{a|b})
Schma de la base de donnes exemple
Baseexemple:BDCOOPRATIVE
VINS (NV,CRU,MIL,DEG)
VITICULTEURS(NVT,NOM,PRENOM,VILLE)
PRODUCTIONS(NV,NVT)
BUVEURS (NB,NOM,PRENOM,VILLE)
COMMANDES (NC,DATE,NV,QTE,NB)
EXPEDITIONS (NC,DATE,QTE)
Interrogationdesdonnes(syntaxepartielle)
Syntaxepartielledelinterrogation
SELECT <listed'attributsdontoncherchelavaleur>
FROM <listederelationsdontonfaitleproduit>
[WHERE <conditiondeslection>]

Rappel
SELECT A1,, An FROM T1,, Tm WHERE ;
est quivalent en algbre relationnelle
A1,, An ( (T1 Tm ))
Insertiondenupletsdansunerelation
Insertiond'unseulnuplet
(a)INSERT INTO VINSVALUES(100,'Juranon',1979,12);
(b)INSERT INTO VINS(NV,CRU)VALUES (200,'Gamay');
Insertion d'unensembledenuplets
CREATE TABLE BORDEAUX
(NVNUMBER,MILNUMBER,DEGNUMBER);
INSERT INTO BORDEAUX
(SELECT NV,MIL,DEG
FROM VINS
WHERE CRU='BORDEAUX);
Suppressiondenupletsdunerelation
Suppressiondetouslesnuplets
DELETE FROM VINS
Suppressionselonuneconditiondeslectionsurunerelation
DELETE FROM VINS
WHERE DEG<9ANDDEG>12
Suppression selon une condition de slection sur plusieurs
relations
DELETE FROM COMMANDES
WHERE NB IN( SELECTNB FROMBUVEURS
WHERENOM='Dupond')
Modificationdenupletsd'unerelation
Modificationdetouslesnupletsdunerelation
UPDATE COMMANDES
SET QTE=QTE+10
Modificationselonuneconditiondeslectionsurunerelation
UPDATE VITICULTEUR
SET VILLE='Bordeaux'
WHERE NVT=150
Modificationselonuneconditiondeslectionsurplusieursrelations
UPDATE COMMANDES
SET QTE=QTE+10
WHERE NB IN( SELECT NB
FROM BUVEURS
WHERE NOM='Dupond')
Syntaxecompltedelinterrogation
SELECT{[ALL|DISTINCT]<colonneet/oucalculs>[AS<alias>]}|*
FROM <table1[var1],table2[var2]>
[WHERE<conditiondeslection>]
[GROUPBY<colonne1,colonne2>
[HAVING<critres_regroupement>]]
[{UNION|INTERSECT|MINUS}(SELECT)]
[ORDERBY<colonne1[ASC|DESC],>]
LigneSELECT

SELECT{[ALL|DISTINCT]<colonneet/oucalculs>[AS<alias>]}|*

ALL:sansliminationdesdoublons(modepardfaut)
DISTINCT:avecliminationdesdoublons

colonne:
soitnom_att(sipasd'ambigutsurcenom),
soitnom_table.nom_att,
soitvar_table.nom_att,
soit*(touteslescolonnes),
soitnom_tab.*
soitvar_tab.*
LigneSELECT
SELECT{[ALL|DISTINCT]<colonneet/oucalculs>[AS<alias>]}|*

calcul:
soit expression sur des colonnes avec des oprateurs : +, , *, /
ventuellement avec (), ou || (concatnation de chanes de
caractres)
soit des fonctions simples sur une valeur ou agrgats sur un
ensemble de valeurs (ex: SUM (somme), AVG (moyenne) des
valeursdunecolonne,COUNT(comptelesnuplets))
soit la combinaison des expressions, fonctions simples et agrgats
(ex:MIN,MAXduneexpressionsurdescolonnes)
alias:simentionn,aliasestlenomdelacolonnedanslersultat
delarequte.
LigneFROM
FROM <table1[var1],table2[var2]>

table1:
soitunnomdetable,
soitunnomdetableprfixducomptedupropritaire
var1:variable(alias)attribuetable1durantla
requte
LigneWHERE(Optionnelle)
[WHERE<conditiondeslection>]

condition:expressionlogiquedeprdicats
colonnecomparateur{valeur|colonne|sousrequte}
olecomparateurestlundessuivants:
=,!=,>,<,>=,<=,LIKE,{>|<|}{ALL|ANY}
colonne{IN|NOTIN}{(valeur1,valeur2,)|sousrequte}
colonneBETWEENvaleur1ANDvaleur2
{EXISTS|NOTEXISTS}sous_requte
colonneISNULL
condition {AND|OR} condition,
NOT condition
LigneGROUPBY(Optionnelle)
[GROUPBY<colonne1,colonne2>
[HAVING<critres_regroupement>]]

colonnes:attributsderegroupement
objectif : partitioner horizontalement la relation selon les
valeurs de certaines colonnes, appliquer ensuite une
fonctionagrgat(surd'autrescolonnes)auxpartitions
LigneHAVING(Optionnelleaprsregroupement)
critre_regroupement:
fonction_agrgat([DISTINCT]colonne)comparateur{valeur|sousrequte}
Ligne ORDER BY (optionnelle)
[ORDERBY<colonne1[ASC|DESC],>]

ordonnelersultatdelarequtedanslordrecroissant
(ASC)oudcroissant(DESC)desvaleursdelacolonne1

You might also like