TIL34A CM s2
SQL langage de requêtes standard adapté aux bases de données relationnelles SQL Interrogations • Forme simple SELECT champs FROM table WHERE critère(s) de sélection ; – SELECT définit quelles colonnes afficher FROM définit les sources de données à utiliser (p. e. une table ou un – WHERE définit quell l’aide de critères – S. Ferrari or 13 Sni* to View • Forme simple : projection – la requête est une projection si aucun critère n’a été donné – une projection correspond donc à l’affichage de colonnes particulières d’une table TIL34A – S.
Ferrari • Forme simple : sélection SELECT * simple : types de données – les booléens s’écrivent sans guillemets en anglais TRUE et FALSE représentent les valeurs de vérité permettent de manipuler des expressions logiques – la valeur NULL s’écrit sans guillemets NULL représente l’absence de valeur, une cellule vide indépendamment du type de données TIL34A — S. Ferrari • Forme simple : types de données – les dates s’écrivent entre symboles dièse # avec trois nombres séparés par des barres obliques / et indiquant dans Fordre . e mois • le jour dans le mois • l’année exprlmée sur 2 ou 4 chiffres 29/1980# • Forme simple : comparateurs et données – les comparateurs < > s’utillsent avec les nombres, les dates, ainsi qu’avec le texte (égalité et ordre alphabétique) – le comparateur IS s’utilise uniquement avec la valeur NULL et son inverse NOT NULL – le comparateur LIKE s’utilise avec le texte et les jokers (caractères de pour PAGF 13 contenant une lettre qui n’est pas dans la première moitié de l’alphabet et qui n’est pas ‘z’ • Combinaison de critères . AND : et logique – OR : ou inclusif logique – NOT : contraire opérateurs booléens – TRUE et FALSE valeurs booléennes et s’utilisent avec les valeurs booléennes ri des résultats SELECT cl, c2, FROM Table WHERE critères ORDER BY el, CZ ; – l’ordre de tri peut être précisé pour chaque champs en ajoutant ASC pour croissant (par défaut) ou DESC pour décroissant ORDER BY c’l ASC, c’2 DESC, TIL34A – S. Ferran • Renommer des tables et des champs SELECT Tl AS Tl.
C2 AS nom2, FROM Tablel AS Tl WHERE critères ; – le nouveau nom d’une table eut être réutilisé dans le reste de la requêt (attribut comparateur paramètre) où le paramètre a simplement un nom différent de tous les noms des colonnes disponibles poids parampoids) SQL Paramètres • Paramétrage non typé – exemple FROM produits WHERE (poids paramPoids) ; • Définition et typage des paramètres PARAMETERS parami typel, param2 type2, ; SELECT champs et paramètres FROM table(s) WHERE (critères paramétrés) ; – mêmes types que dans CREATE TABLE (voir plus loin cours SQL Modifications) • Utilisation des paramètres l’utilisateur précise une valeur pour chaque paramètre à chaque exécution de la requête – la requête peut être de différents types : • sélection, avec ou sans regroupements • mise à jour, ajout ou suppression de données la saisie d’un mauvais type de données pour l’un des paramètres défini de jointure – le résultat dépend du nombre d’enregistrements mis en relation par le critère de jointure SQL Jointures • Utilisation de 2 tables avec jointure forme 2: WHERE FROM ti, t2 WHERE (critère(s) de jointure) AND (critère(s) de sélection) ; – les critères de jointure doivent toujours s’appliquer, en plus des critères de sélection • Critère(s) de jointure – du type (attribut = attribut) – il(s) exprime(nt) le lien existant entre 2 tables, par égalité des valeurs des clés primaire pour ‘une, étrangère pour l’autre (tl . attl = t2. att’1) AND(t1. att2 = t2. att’2) AND . où attl, att2… constituent la clé primaire de tl et att’l, att2… la clé étrangère de t2 • Relations, clés primaires et clés étrangères clé primaire clé étrangère PAGF s 3 – LignComm. ld_Produit)) AND (Produits. pnx > 2. 0); • LEFT JOIN (ET RIGHT JOIN) FROM ti LEFT JOIN t2 ON critère(s) de jointure – les enregistrements des deux tables qui sont en relatlon sont sélectionnés comme avec INNER JOIN – ceux de tl qui ne sont pas en relation avec un enregistrement de t2 sont aussi sélectionnés ?? RIGHT JOIN FROM t2 RIGHT JOIN tl – tous les enregistrements de tl sont sélectionnés, forme symétrique de la précédente • LEFT JOIN — exemple SELECT Prodi_lits. ld Produit, Produits. Désignation, Produits. poids, LignComm. Quantité, LignComm. ld_Comm FROM Produits LEFT JOIN Li nComm ON Produits. ld Produit – (Produits. ld_Produit LignComm. Id_Produit); • LEFT JOIN — exemple part 2 Requête finale avec LEFT JOIN SELECT Clients. nom, ReqPrep. * FROM Clients LEFT JOIN Reqprep ON Clients. ld Client ReqPrep. _Client; – la requête Reqprep est utilisée en tant que ource de données, comme une table SQL Regroupements • Fonctions de regroupement (FReg) COUNT le nombre de données « non NULL » SLIM la somme des valeurs MIN MAX la valeur minimale ou maximale AVG la moyenne des valeurs STDEV STDEVP écart type (pop/éch) VAR VARP variance (pop/éch) FIRST, LAST… • Forme canonique SELECT champs et FReg FROM tables AND (critère(s) de sélection) GROUP BY champs HAVING (critère(s) avec FR 7 3 (Commandes. ld_Comm LignComm. ld_Comm) AND (LignComm. ld_Produit = Produits. ld_produit) GROUP BY Commandes. ld_Comm, Nom, prénom, Date_Comm, Date Livraison HAVING > 20 ORDER BY DEsc; • Exemple complexe – 2 (effets du AS) SELECT Commandes. d_Comm AS [NO de commande], Nom, prénom, Date Comm, SU AS Total une expresslon FROM Clients, Commandes, LignComm, Produits contenant une WHERE ( fonction de (Clients. Id_Client = Commandes. ld_client) regroupement AND (Commandes. ld_Comm LignComm. ld_Comm) doit être reprise AND (LignComm. ld_Produit = Produits. ld Produit) dans son intégralité dans les différentes GROUP BY Commandes. ld Comm, Nom, Prénom, Date Comm, parties de la requêtes : HAVING 20 ORDER BY DESC; HAVING, 3 AND (LignComm. ld_Produit Produits. ld_Produit) regroupement purement logique GROUP BY Commandes. ld_Comm, Nom, Prénom, Date Comm, Date Livraison HAVI NG Su > 20 regroupements syntaxiques • Utiliser WHERE ou HAVING ? pour sélectionner avant de regrouper : • WHERE + critères • pas de fonction de regroupement dans ces critères – pour sélectionner les groupes déjà formés • HAVING + critères • possibilité d’utiliser des fonctions de regroupement pour exprimer ces critères • sinon, les colonnes exploitées doivent figurer dans GROUP BY, elles caractérisent les groupes SELECT FROM Produits WHERE prix > 6 GROUP BY Désignation ; _ exemple Ferrari SQL Définitions • Créatlon de tables CREATE TABLE CONSTRAINT PRIMARY KEY FOREIGN KEY & RÉFÉRENCES • Cf. exemples • Types de données (SQL ANSI ou MicroSoft) (Smalllnt ou Short) & (Integer ou Long) (Text & Text (n)) Currency Date, Time & TimeStamp (Real ou Single) & (Float ou Double) (Boolean ou Logical ou YesNo) • Création de tables – exemples CREATE TABLE Clients NOT NULL . contrainte de non nullité ajoutée aux colonnes Id Client integer, correspondantes pour forcer Nom text (50) NOT NIJLL,