SQL (Deuxième partie) Walter RUDAMETKIN

Documents pareils
COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Le langage SQL Rappels

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

Langage SQL : créer et interroger une base

SQL Historique

Le langage SQL (première partie) c Olivier Caron

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

1 Introduction et installation

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

16H Cours / 18H TD / 20H TP

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Les bases de données

TD n 10 : Ma première Base de Données

Cours SQL. Base du langage SQL et des bases de données

Bases de Données relationnelles et leurs systèmes de Gestion

Cours: Les Jointures 1

Le Langage SQL version Oracle

Introduction au Système de Gestion de Base de Données et aux Base de Données

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Bases de données relationnelles

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

FileMaker 13. Guide de référence SQL

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

Introduction aux Bases de Données 2004/2005

MySQL / SQL EXEMPLES

Systèmes de Gestion de Bases de Données

Cours 4 : Agrégats et GROUP BY

Optimisation SQL. Quelques règles de bases

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

Intégrité des données

Durée : 4 heures coefficient : 4 Le sujet se présente sous la forme de deux dossiers indépendants

Vincent Augusto

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

I4 : Bases de Données

MODE OPERATOIRE OPENOFFICE BASE

Le Langage De Description De Données(LDD)

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

TP3 : Creation de tables 1 seance

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

BTS/CGO P10 SYSTEME INFORMATION Année

Bases de Données. Plan

Bases de données élémentaires Maude Manouvrier

1 Introduction. 2 Le modèle relationnel. 3 Algèbre relationnelle 4 SQL. 5 Organisation physique des données 1/228

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Bases de Données Relationnelles. Le Modèle Relationnel

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Les bases fondamentales du langage Transact SQL

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES?

Rappel sur les bases de données

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Olivier Mondet

TP 8: LES OPERATEURS ENSEMBLISTES

TP Bases de données réparties

1 Modélisation d une base de données pour une société de bourse

SUPPORT SQL. Thierry GRANDADAM

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

Devoir Data WareHouse

INTRODUCTION AU DATA MINING

Administration des bases de données. Jean-Yves Antoine

Résumé S Q L. Auteur: Alexandre PATIN Edition: 22 février alexandre.patin@free.fr URL :

INTRODUCTION : Données structurées et accès simplifié

Bases de données Cours 4 : Le langage SQL pour ORACLE

PHP 5. La base de données MySql. A. Belaïd 1

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Comprendre les bases de données

Support de Cours REQUÊTES TRANSACT-SQL DANS MICROSOFT SQL SERVER Stéphane N GUESSAN Groupe Pigier Abidjan Version 1.

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Bases de données. PTSI Lycée Eiffel. 28 février 2014

Patrice BOURSIER. Professeur, Univ. de La Rochelle. Bases de Données. Notes de cours

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

CREATION WEB DYNAMIQUE

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

Quelques aspects du Relationnel-Objet du SGBD Oracle

LE LANGAGE SQL2 1. INTRODUCTION

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Encryptions, compression et partitionnement des données

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

COURS de BASES de DONNEES

Présentation Windows Azure Hadoop Big Data - BI

Mejdi BLAGHGI & Anis ASSÈS

Session S12 Les bases de l optimisation SQL avec DB2 for i

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

WEB DEVELOPER SGBD SYSTEME DE GESTION DE BASES DE DONNEES L étudiant sera capable :

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Les bases de l optimisation SQL avec DB2 for i

Transcription:

SQL (Deuxième partie) Walter RUDAMETKIN Bureau F011 Walter.Rudametkin@polytech-lille.fr

Les requêtes de consultation Représente la majorité des requêtes Encapsule complètement l'algèbre relationnel Une seule commande! 2

Syntaxe partielle commande Select SELECT [ ALL DISTINCT [ ON ( expression [,...] ) ] ] * expression [ AS output_name ] [, [ FROM from_item [,...] ] [ WHERE condition ] [ GROUP BY expression [,...] ] [ HAVING condition [,...] ] [ { UNION INTERSECT EXCEPT [ ALL ] } select ] [ ORDER BY expression [ ASC DESC USING operator ] [,...] ] [ FOR UPDATE [ OF tablename [,...] ] ] [ LIMIT { count ALL } [ { OFFSET, } start ]] 3

Ex. bibliothèque état de la base auteur num_a nom 1 Albert Uderzo 2 Victor Hugo 3 J.K. Rowling livre num_l titre auteur 1 Le fils d'asterix 1 2 Les misérables 2 3 Notre dame de Paris 2 4 Harry Potter à l'école des sorciers 3 5 Harry Potter et la chambre des secrets 3 editeur num_e nom ville 1 Albert-René Bruxelles 2 Gallimard Paris 3 Folio Paris 4

Ex. bibliothèque état de la base edite_par utilisateur num_l num_e date_edition emprunt num_l num_u 1 1 1 1 1998-03-24 2 4 2 3 1940-02-02 4 1 3 2 1967-06-12 4 2 1999-03-01 reserve num_l num_u 5 2 2000-02-01 1 2 4 2 num_u nom prenom 1 Caron Olivier 2 Janot Stéphane 3 Seynhaeve Franck 4 Duthilleul Jean-Michel 5

Consultation simple d'une table Syntaxe : select col1, col2,..., coln from nomtable Variante usuelle : select * from nomtable Exemple : select * from utilisateur ; num_u nom prenom 1 Caron Olivier 2 Janot Stephane 3 Seynhaeve Franck 4 Duthilleul Jean-michel 6

Expression d'une projection Définition : la projection d'une relation R de schéma R(A1,A2,...,An) sur les attributs Ai1,Ai2,...,Aip) (p < n) est une relation R0(Ai1,Ai2,...,Aip) dont les tuples sont obtenus par élimination des valeurs des attributs de R n'appartenant pas à R0. Syntaxe : select coli1, coli2,..., colip from table_name Exemple : select nom, prenom from utilisateur ; nom Caron Janot Seynhaeve Duthilleul prenom Olivier Stephane Franck Jean-michel On peut inverser l'ordre de présentation (aucun impact sur le calcul) La clause distinct (permet de supprimer les ²doublons) 7

Restriction Définition : la restriction (ou sélection) de la relation R par une qualification Q est une relation R0 de même schéma dont les tuples sont ceux de R satisfaisant la qualification Q. La qualification peut être exprimée à l aide de constantes, comparateurs arithmétiques, opérateurs logiques Prédicat : La qualification est de la forme <attribut> <opérateur> <valeur> avec opérateur { =,, <,, >, } Il est possible de composer plusieurs conditions de base à l aide des opérateurs booléens de disjonction (OR), conjonction (AND), négation (NOT). 8

Expression d'une restriction Introduction clause WHERE Utilisation des opérateurs booléens : and, or, not Comparaison de chaînes, dates, d'entiers,... Exemple : select * from livre where auteur=2 ; num_l titre auteur 2 Les misérables 2 3 Notre dame de Paris 2 9

Traitement de chaînes (1/3) Opérateur LIKE Caractère spéciaux : '%' (remplace de 0 à plusieurs caractères) et '?' (remplace exactement un caractère). Exemple : select distinct titre from livre where titre like 'H%' ; titre Harry Potter à l'école des sorciers Harry Potter et la chambre des secrets 10

Traitement de chaînes (2/3) Opérateur de comparaison =, <>, >,<, >=, <=,... (ordre lexicographique) (aussi applicable à tout type INTEGER, DATE ) Opérateur de concaténation, fonctions prédéfinies (ex : upper, lower) Exemple : select upper(nom ' ' prenom) as nom_prenom from utilisateur; nom_prenom CARON OLIVIER JANOT STEPHANE SEYNHAEVE FRANCK DUTHILLEUL JEAN-MICHEL Renommage d'attribut 11

Traitement de chaînes (3/3) Comparaison de chaînes : clause BETWEEN permet de vérifier si la valeur d'un attribut est comprise entre deux constantes Exemple : select nom from utilisateur where nom between 'A%' and 'F%' ; nom Caron Duthilleul Note : l'exemple suivant est identique : select nom from utilisateur where nom >= 'A%' and nom <= 'F%' ; Applicable à tout type (integer, chaîne, date,...) 12

Présentation des données (1/2) Ordre d'affichage des colonnes Clause distinct, évite les doublons Ordre d'affichage des lignes, clause Order By Ordre des lignes multi-critères Aucun impact sur le traitement algébrique des requêtes 13

Présentation des données (2/2) Syntaxe : ORDER BY expression [ ASC DESC USING [operator] [,...] Exemple : select * from livre order by auteur DESC, titre ASC ; num_l titre auteur 4 Harry Potter à l'école des sorciers 3 5 Harry Potter et la chambre des secrets 3 2 Les misérables 2 3 Notre dame de Paris 2 1 Le fils d'asterix 1 14

Opérations de calcul Opérateurs arithmétiques : +,,... Exemple : select now()-date_edition as duree, num_l from edite_par ; duree 1423 days 17:30:01 1 22658 days 16:30:01 2 12666 days 17:30:01 3 1081 days 17:30:01 4 744 days 17:30:01 5 num_l Expressions arithmétiques applicables dans la clause where 15

Fonctions de calcul Une fonction de calcul est une fonction qui s'applique sur un ensemble de tuples et qui renvoie une valeur unique Syntaxe : nomfonction(nomcolonne) ou nomfonction(*) Résultat est stocké dans une colonne correspondant au nom de la fonction. Toujours une ligne résultat. Fonctions standards : count, min, max, avg, sum 16

Fonctions de calcul - exemples Exemple avec renommage : select count(*) as nombre from livre ; nombre 5 Exemple sans renommage : select min(num_l), max(num_l), avg(num_l),sum(num_l) from livre ; min max avg sum 1 5 3.000 15 17

Calcul sur des groupes de lignes (1/3) Sélectionner des lignes pour appliquer un calcul Introduction clause Group By permet de partitionner la relation en sous-relations ayant les mêmes valeurs sur les attributs précisés : on peut alors appliquer des fonctions à chaque sousrelation. select from livre group by auteur ; Note : On trouve dans le résultat une ligne par sous-relation. sous-relation sous-relation sous-relation auteur titre num_l a x 2 a y 1 b x 2 b t 5 b u 3 c y 4 18

Calcul sur des groupes de lignes (2/3) Exemple : select auteur, count(*) as nbre_par_auteur from livre group by auteur ; auteur nbre_par_auteur 1 1 2 2 3 2 Note : Toutes les colonnes figurant dans un group by doivent apparaître dans la clause select. 19

Calcul sur des groupes de lignes (3/3) Imposer une condition aux groupes formés par la clause Group By Introduction clause HAVING Poser une condition portant sur chacune des sous-relations générées par le GROUP BY. Les sous-relations ne vérifiant pas la condition sont écartées du résultat. Exemple : select auteur, count(*) as nbre_par_auteur from livre group by auteur having count(*)>1 ; auteur 2 2 3 2 nbre_par_auteur Note : Ne pas confondre avec la clause where 20

Produit cartésien Définition : Le produit cartésien de deux relations R et S est une relation T ayant pour schéma la concaténation de celui de R avec celui de S et pour tuples toutes les combinaisons des tuples de R et S. Opérateur commutatif R S = S R Opérateur intermédiaire (pas de sens en soi) 21

Expression d'un produit cartésien Utilisation clause FROM Déclaration de variables (ou utiliser le nom de la table) Exemples : select * from utilisateur, livre ;... (20 lignes) select distinct e.nom as nomediteur, a.nom as NomAuteur from editeur e, auteur a; 22

Jointure Définition : La jointure de deux relations R et S selon une qualification multi-attributs Q est l ensemble des tuples du produit cartésien R S satisfaisant la qualification Q Opérateur commutatif R >< prédicat S = S >< prédicat R Prédicat : <attribut1> <opérateur> <attribut2> où attribut1 R et attribut2 S avec opérateur { =,, <,, >, } Il est possible de composer plusieurs conditions de base à l aide des opérateurs booléens de disjonction (OR), conjonction (AND), négation (NOT). 23

Expression d'une jointure Relier avec cohérence plusieurs tables. Relier les clés étrangères avec les clés primaires correspondantes Exemple : Expression du produit cartésien select titre, nom from auteur, livre where auteur.num_a=livre.auteur ; Prédicat de jointure titre Le fils d'asterix Les misérables Notre dame de Paris Harry Potter à l'école des sorciers Harry Potter et la chambre des secrets nom Albert Uderzo Victor Hugo Victor Hugo J.K. Rowling J.K. Rowling 24

Jointures - Exemples Exemple : liste de couples de livres ayant le même auteur Renommage de table select l1.titre, l2.titre from livre l1, livre l2 where l1.auteur=l2.auteur and l1.titre > l2.titre ; Prédicat de jointure titre titre Notre dame de Paris Les misérables Harry Potter et la chambre... Harry Potter à l'école... 25

Les jointures à la SQL/2 Nouvelles possibilités d'expression de jointures Non encore implémenté par tous les SGBD (ex. Oracle) Les expressions de jointures sont exprimés dans la clause from Distinction de jointures : inner join (défaut), left outer join, right outer join, full outer join Pour les exemples suivants : insert into livre values (6, 'Le livre inconnu', null) ; insert into auteur values (4, 'Paltoquet') ; 26

Jointure SQL/2 classique select titre, nom from livre inner join auteur on livre.auteur=auteur.num_a ; titre Le fils d'asterix Les misérables Notre dame de Paris Harry Potter à l'école des sorciers Harry Potter et la chambre des secrets nom Albert Uderzo Victor Hugo Victor Hugo J.K. Rowling J.K. Rowling 27

Jointure externe gauche select titre, nom from livre left outer join auteur on livre.auteur=auteur.num_a ; titre Le fils d'asterix Les misérables Notre dame de Paris Harry Potter à l'école des sorciers Harry Potter et la chambre des secrets nom Albert Uderzo Victor Hugo Victor Hugo J.K. Rowling J.K. Rowling le livre inconnu 28

Jointure externe droite select titre, nom from livre right outer join auteur on livre.auteur=auteur.num_a ; titre Le fils d'asterix Les misérables Notre dame de Paris Harry Potter à l'école des sorciers Harry Potter et la chambre des secrets nom Albert Uderzo Victor Hugo Victor Hugo J.K. Rowling J.K. Rowling Paltoquet 29

Jointure externe complète select titre, nom from livre full outer join auteur on livre.auteur=auteur.num_a ; titre Le fils d'asterix Les misérables Notre dame de Paris Harry Potter à l'école des sorciers Harry Potter et la chambre des secrets nom Albert Uderzo Victor Hugo Victor Hugo J.K. Rowling J.K. Rowling le livre inconnu Paltoquet 30

Remarques : syntaxe des jointures INNER et OUTER sont toujours facultatifs LEFT, RIGHT et FULL impliquent une jointure externe Les syntaxes : T1 { [INNER] { LEFT RIGHT FULL } [OUTER] } join T2 on boolean_expression T1 { [INNER] { LEFT RIGHT FULL } [OUTER] } join T2 using liste_nom_colonne USING a équivalent à on t1.a = t2.a USING (a,b) équivalent à on t1.a=t2.a and t1.b=t2.b T1 NATURAL { [INNER] { LEFT RIGHT FULL } [OUTER] } join T2 NATURAL effectue une comparaison de toutes les colonnes de même nom dans les deux tables. 31

Expression d'une union Définition : l union de 2 relations R et S de même schéma est une relation T de même schéma contenant l ensemble des tuples appartenant à R ou S Syntaxe : < requête > UNION < requête > < requête > UNION ALL < requête > Le résultats des deux requêtes doivent avoir la même structure même nombre de colonnes, mêmes types de données, même ordre. Exemple : nom select nom from auteur union select nom from editeur ; Albert-René Albert Uderzo Folio Gallimard J.K. Rowling Victor Hugo 32

Expression d'une intersection Définition : L intersection de deux relations R et S de même schéma est une relation T de même schéma contenant les tuples appartenant à la fois à R et S Syntaxe : < requête > INTERSECT < requête > nom Exemple : select nom from auteur intersect select nom from editeur ; est équivalent à : select nom from auteur a where a.nom IN select nom from editeur ; select nom from auteur a where EXISTS select nom from editeur e where a.nom = e.nom; Le résultats des deux requêtes doivent avoir la même structure Note : Attention à la structure du IN et du EXISTS 33

Expression d'une différence Définition : la différence de 2 relations R et S de même schéma est une relation T de même schéma contenant l ensemble des tuples appartenant à R et n appartenant pas à S Syntaxe : < requête > EXCEPT < requête > Exemple : select nom from auteur except select nom from editeur ; nom Albert Uderzo J.K. Rowling Victor Hugo est équivalent à : select nom from auteur a where a.nom NOT IN select nom from editeur select nom from auteur a where NOT EXISTS select nom from editeur e where a.nom = e.nom Note : Attention à la structure du NOT IN et du NOT EXISTS 34

Exercices : Relations Les pharmacies a) Propriétaire (NumProprio, nom, prénom, adresseproprio) b) Pharmacie (NumPharma, nompharma, NumProprio#, adresse, téléphone) c) Médicament (IdMedicament, NomMedic, marque, Type, Vignette, PrixConseillé) d) Stock (NumPharma#, IdMedicament#, QuantitéPossédée, PrixPratiqué) e) Prescription (IdMedicament#, NumPatient#, DateOrdonnance, NumPharma#, QuantitéFournie) f) Ordonnance (NumPatient#, DateOrdonnance, Médecin) g) Patient (NumPatient, NomPatient, AdressePatient, TelPatient) 35

Requêtes SQL 1. Liste des noms des pharmacies 2. Liste des médicaments (tous les attributs) en vente libre (type) 3. Liste des noms des médicaments de vignettes bleues 4. Liste des noms des médicaments de vignettes bleues ou en vente libre 5. Liste des noms des médicaments en vente libre et de marque Bayer 6. Noms des pharmacies de Monsieur Durand 7. Noms des patients à qui on a prescrit du paracétamol (nommedic) 8. Noms des patients ayant obtenus une ordonnance du Dr Maboul le 11 octobre 2010 36

Requêtes SQL 9. Noms des patients à qui le Dr Maboul a prescrit du Prozac le 11 octobre 2010 10. Liste des noms des médicaments de vignettes bleues et de vignettes blanches 11. Liste des noms des médicaments qui ne sont plus en stock dans (aucune des pharmacies du) le réseau 12. Noms et prénoms des propriétaires qui ne possèdent plus de pharmacie 13. Noms et prénoms des propriétaires qui possèdent plusieurs pharmacies 14. Liste des médicaments et des pharmacies où le prix pratiqué du médicament est inférieur au prix conseillé 15. Liste des propriétaires (nom et prénom) et de leur pharmacies par ordre alphabétique des propriétaires et inverse pour les pharmacies 37

Requêtes SQL 16. Liste des noms et prénoms (concaténé) des propriétaires ayant plus de 3 pharmacies 17. Prix moyen (forcément prix pratiqué) du paracétamol 18. Date de la dernière ordonnance de Monsieur Dupont 19. Nom des médicaments dont la moyenne des prix pratiqués est supérieure au prix conseillé 20. Coût de l'ordonnance du 08/11/2010 de Monsieur Dupont 21. Nombre de pharmacies possédées par propriétaire 38