LE LANGAGE SQL Langage de manipulation de données (LMD)
Notations Mots clés en majuscule GRAS Paramètres entre chevrons (ex: ) Optionnel entre crochets (ex: [a]) Alternatives de syntaxes entre accolades séparés par des barres (ex: { a | b })
Schéma de la base de données exemple Base exemple : BD COOPÉRATIVE 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)
Interrogation des données (syntaxe partielle) Syntaxe partielle de linterrogation SELECT FROM [ WHERE ] Rappel SELECT A 1,…, A n FROM T 1,…, T m WHERE ; est équivalent en algèbre relationnelle à A1,…, An ( (T 1 … T m ))
Insertion de n-uplets dans une relation Insertion d'un seul n-uplet (a)INSERTINTOVINS VALUES (100, 'Jurançon', 1979, 12); (b)INSERTINTOVINS (NV, CRU) VALUES(200, 'Gamay'); Insertion d'un ensemble de n-uplets –CREATETABLEBORDEAUX (NV NUMBER, MIL NUMBER, DEG NUMBER); –INSERTINTOBORDEAUX (SELECTNV, MIL, DEG FROMVINS WHERECRU = 'BORDEAUX);
Suppression de n-uplets dune relation Suppression de tous les n-uplets DELETEFROM VINS Suppression selon une condition de sélection sur une relation DELETEFROM VINS WHEREDEG 12 Suppression selon une condition de sélection sur plusieurs relations DELETEFROMCOMMANDES WHERENBIN (SELECT NBFROM BUVEURS WHERE NOM = 'Dupond' )
Modification de n-uplets d'une relation Modification de tous les n-uplets dune relation UPDATECOMMANDES SETQTE = QTE + 10 Modification selon une condition de sélection sur une relation UPDATEVITICULTEUR SETVILLE = 'Bordeaux' WHERENVT = 150 Modification selon une condition de sélection sur plusieurs relations UPDATECOMMANDES SETQTE = QTE + 10 WHERENBIN (SELECTNB FROMBUVEURS WHERENOM = 'Dupond' )
Syntaxe complète de linterrogation SELECT {[ALL | DISTINCT] [AS ]} | * FROM [WHERE ] [GROUP BY [HAVING ] ] [{UNION | INTERSECT | MINUS} (SELECT …)] [ORDER BY ]
Ligne SELECT SELECT {[ALL | DISTINCT] [AS ]} | * ALL : sans élimination des doublons (mode par défaut) DISTINCT : avec élimination des doublons colonne : –soit nom_att (si pas d'ambiguïté sur ce nom), –soit nom_table.nom_att, –soit var_table.nom_att, –soit * (toutes les colonnes), –soit nom_tab.* –soit var_tab.*
Ligne SELECT SELECT {[ALL | DISTINCT] [AS ]} | * calcul : soit expression sur des colonnes avec des opérateurs : +, -, *, / éventuellement avec (), ou || (concaténation de chaînes de caractères) soit des fonctions simples sur une valeur ou agrégats sur un ensemble de valeurs (ex: SUM (somme), AVG (moyenne) des valeurs dune colonne, COUNT (compte les n-uplets)) soit la combinaison des expressions, fonctions simples et agrégats (ex: MIN, MAX dune expression sur des colonnes) alias : si mentionné, alias est le nom de la colonne dans le résultat de la requête.
Ligne FROM FROM table1 : –soit un nom de table, –soit un nom de table préfixé du compte du propriétaire var1 : variable (alias) attribuée à table1 durant la requête
Ligne WHERE (Optionnelle) [WHERE ] condition : expression logique de prédicats colonne comparateur { valeur | colonne | sous-requête} où le comparateur est lun des suivants : =, !=, >, =, |<|…} {ALL| ANY} colonne {IN | NOT IN} { (valeur1, valeur2,…) | sous-requête} colonne BETWEEN valeur1 AND valeur2 {EXISTS | NOT EXISTS} sous_requête colonne IS NULL condition {AND|OR} condition, NOT condition
Ligne GROUP BY (Optionnelle) [GROUP BY [HAVING ] ] colonnes : attributs de regroupement objectif : partitioner horizontalement la relation selon les valeurs de certaines colonnes, appliquer ensuite une fonction agrégat (sur d'autres colonnes) aux partitions Ligne HAVING (Optionnelle après regroupement) critère_regroupement : fonction_agrégat([DISTINCT] colonne) comparateur {valeur |sous-requête}
Ligne ORDER BY (optionnelle) [ORDER BY ] ordonne le résultat de la requête dans lordre croissant (ASC) ou décroissant (DESC) des valeurs de la colonne1…