La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Bases de données Alexandre Abellard IUT Toulon – GEII Semestre 3 / 2008-09.

Présentations similaires


Présentation au sujet: "1 Bases de données Alexandre Abellard IUT Toulon – GEII Semestre 3 / 2008-09."— Transcription de la présentation:

1 1 Bases de données Alexandre Abellard IUT Toulon – GEII Semestre 3 /

2 2 Sommaire Définitions (Bases De Données, Système de Gestion de Bases de Données) Classifications des SGBD Bases de données relationnelles Modèle Relationnel (Entité – Association) Méthode MERISE Langage SQL

3 3 Définition Base de données (BDD ; ang. : database) = ensemble structuré et organisé permettant le stockage de données (informations) liées entre elles, afin d'en faciliter l'exploitation (ajout, mise à jour, recherche de données). Exemple : données concernant les livres dune bibliothèque, le personnel dune entreprise, les comptes clients dans une banque… Elles sont stockées sur des mémoires secondaires (disques) Notion apparue en 1964 (BDD informatisée).

4 4 Objectifs Mémoriser des données Structurées (livres, personnes, employés, disques…) Documents (texte, images, films …) Retrouver en ligne la bonne donnée au bon moment Le salaire de Dupont, sa photo Lavoir de votre compte en banque Quels sont les livres que Gérard Bouchard a emprunté ? Mettre à jour les données variant dans le temps Volume de données de plus en plus grands Giga, Tera, Péta bases (10 15 octets) Numériques, Textuelles, Multimédia (images, films,...) De plus en plus de données archivées

5 5 Données Les données sont structurées et identifiées Données élémentaires ex: Votre salaire, Votre note de BDD Données composées ex: Votre CV, vos résultats de l'année Identifiant (n° Sécurité Sociale, n° Machine…) De plus en plus de données faiblement structurées Textes libres, documents audios, vidéos, images Il faut aussi les stocker et les interroger Ces données sont stockées, créées, modifiées… via un Système de Gestion de Bases de Données (SGBD ; ang : database management system). Constitué de parties matérielles et logicielles. Permet la communication entre lutilisateur et la base proprement dite.

6 6 Exemples de SGBD sur Internet E-commerce Films, cinéma Système dInformation Géographique Moteur de recherche Réservation de voyages Encyclopédie Ecoute de musique

7 7 Bases de Données Une BDD doit contenir toutes les données nécessaires à son organisation. Les données effectives et les programmes qui les gèrent ne sont pas dans le même ensemble logiciel. Une BDD doit toujours être conçue pour un public particulier et dans un but précis. Laccent est mis sur des données pertinentes concernant un ou plusieurs objets ou entités.

8 8 Un CD peut être caractérisé par : - nom du groupe/de lartiste - nom de lalbum - nombre de titres - durée - maison de disque - distributeur - style - année - société pressage CD - studio denregistrement - période denregistrement - nom de lingénieur du son - numéro du code-barres - etc. Une BDD ne peut contenir que des informations partielles sur les entités. Bases de Données On ne sélectionne que des caractéristiques pertinentes pour lutilisateur: attributs. Exemple : Intéressons-nous à une entité « Compact Disc ».

9 9 Pour un même type dentité, on choisira des attributs suivant les souhaits de lutilisateur. Ex : être humain : - Nom - Prénom - Date de naissance - Taille - Poids - Mensurations - Diplôme le plus élevé - Expérience professionnelle - Compétences en bases de données - Langages informatiques maîtrisés - Langues étrangères parlées - Connaissances en philosophie Gestion de personnel Société dinformatique Gestion de personnel Agence de mannequins Bases de Données

10 10 Les attributs peuvent avoir des valeurs différentes : - type : entier, chaîne de caractères, réel, booléen, date Et des domaines de définition différents : de 2 à n valeurs possibles. => Domaine des attributs Exemple : Nom : nimporte quelle chaîne de caractères (limitée à 30 lettres) Date de naissance 01/01/1940 < x < 01/01/1990 Diplôme : « Baccalauréat », « DUT », « BTS », « Licence », « Mastère », « Doctorat » Salaire : 1000 < y < Chef déquipe : Oui, Non Bases de Données

11 11 Plusieurs types dutilisateurs peuvent accéder à la BDD : Ladministrateur de la BDD Ladministrateur de la BDD possède tous les droits (privilèges) sur la BDD = créer, modifier, supprimer, consulter… des données peut donner et supprimer des droits aux autres utilisateurs Les utilisateurs finaux Les utilisateurs finaux ceux qui sont devant leur poste de travail, et qui vont émettre des requêtes pour extraire des informations (consulter des données) : - quels livres dune bibliothèque parlent des bases de données ? - quels ingénieurs dune société se sont déjà servis de Access ? - etc. peuvent parfois modifier les données du système Les programmeurs dapplications Les programmeurs dapplications accèdent aux données grâce à des programmes quils développent. Celles-ci permettent daccéder aux données et de les modifier. Utilisateurs

12 12 Système de Gestion de Bases de Données Constitution : - Partie matérielle : système informatique sur lequel est installée la BDD. - Partie logicielle : programmes au niveau client (avec différentes possibilités dafficher, modifier… suivant les droits utilisateurs) ou au niveau serveur (outil de gestion de données)

13 13 Architecture client/serveur Systèmes de Gestion de Bases de Données

14 14 Trois rôles importants : conserver les données conserver les données – elles doivent rester précises, cohérentes et avec le minimum de redondance possible fournir laccès aux données fournir laccès aux données – en lecture et en écriture, facilement et rapidement (et gérer le fait que plusieurs personnes peuvent en même temps accèder à la BDD). maintenir la sécurité des données maintenir la sécurité des données – niveaux dautorisation ne donnent que certains droits aux utilisateurs, éviter les modifications simultanées dune même donnée par plusieurs utilisateurs… (gérer la confidentialité) Systèmes de Gestion de Bases de Données Modélisation Avant de programmer, il faut savoir comment ces données vont s organiser, comment elles vont être interrogées… Modélisation

15 15 Moyen « schématique » dexpliquer la disposition logique des données, et les relations entre les différentes parties qui les composent. Modèles de données Objectifs Permettre une meilleure compréhension Le monde réel est trop complexe Omission des détails Faciliter la visualisation du système - Diagrammes avec notations simples et précises - Compréhension visuelle Nous étudierons le modèle relationnel Permettre une conception progressive Abstractions et raffinements successifs Découpage en modules Génération des structures de données (et de traitements)

16 16 BDDR Organisation dune BDDR (ang. : Relational database) sous forme de table. Une ligne par élément, chaque colinne représentant un attribut. NomPrénomAgeProvenanceEmploi On travaille sur un modèle abstrait : on na aucune information sur limplantation physique (concrète) des données. La partie logicielle du SGBD prend en charge cette implantation. Bases de Données Relationnelles

17 17 Quand on doit gérer plusieurs tables au sein dune même BDD, on utilise un langage de définition de données (ang. Data Definition Language, DDL) qui permet de décrire les différents champs de chaque table. FournisseursClientsEmployés Code Nom AdressePrénom Matériel fourni Commandes passées Grade Paiement dûLivraison dûe Salaire Bases de Données Relationnelles Remplissage/Mise à jour de la BDD : via un langage de manipulation de données (ang. Data Manipulation Language, DML).

18 18 NomPrénomAgeVit àEmploi MalteseCorto35MalteAventurier HaddockArchibald45MoulinsartMarin MacLeodConnor450EcosseEscrimeur DerrickStefan60AllemagneCascadeur SimpsonHomer38SpringsfieldSécu. Centrale nucléaire Colonnes : Attributs Lignes : Cardinalité (ici = 5) Domaine : valeurs possibles de lattribut. Noté Dom(Nom), Dom(Prénom)… Exemple Dom(Nom) < 20 caractères ; 18 < Dom(Age) < 500 ; etc. FICHIER_CLIENTS Chaque table a un nom Bases de Données Relationnelles On suppose que chaque case ne comporte quau plus une seule valeur.

19 19 Outil danalyse permettant de construire des schémas théoriques de raisonnement, afin de montrer les relations quil existe entre les différentes entités, combien dentités entrent en jeu avec une autre… Formalisé en 1976 (P. Chen). Modèle Entité-Association Les entités regroupent des données (ce sont les propriétés) afin de former des types d'objets. Les associations définissent les relations ou interactions entre les entités (« nécessite », « est incluse dans », « est responsable de »…). Exemple, dans la gestion dun emploi du temps : - entités « professeurs » - entités « enseignements » - entités « horaires » Un enseignement nécessite un professeur (un et un seul). Un enseignement nécessite 2 h (4 h…) à un moment dans lemploi du temps. Un professeur réalise au moins un enseignement. etc.

20 20 Nous allons illustrer cette méthode par une étude de cas: Le plan de cette étude de cas est dérivé de la méthode MERISE. Modèle Entité-Association Se jeter sur son écran et son clavier (comportement typique chez le développeur débutant) amènera à bien des déceptions voire au découragement. La méthode consiste à se poser une série de questions dans un ordre bien précis et à y répondre complètement avant de passer à l'étape suivante. Une étape bâclée obligera, au mieux, à reprendre toutes les étapes suivantes. D'où l'importance d'un travail bien préparé.

21 21 Principes Fondateurs La méthode MERISE est basée sur la séparation des données et des traitements à effectuer. Elle décompose l'analyse du système en plusieurs modèles conceptuels, logiques et physiques. Etapes essentielles Le MCC (Modèle Conceptuel de la Communication) Le MCD (Modèle Conceptuel des Données) Le MLD (Modèle Logique des Données) Le MPD (Modèle Physique des Données) Le MCT (Modèle Conceptuel des Traitements) Le MOT (Modèle Organisationnel des Traitements) Méthode MERISE Née en 1979 (appel doffre du Ministère de lIndustrie français). Nombreuses évolutions.

22 22 Le MCD (Modèle Conceptuel des Données) A pour but d'écrire de façon formelle les données qui seront utilisées par l'application, doù une représentation des données, facilement compréhensible, permettant de décrire l'application à l'aide d'entités. Le MCD fait appel à deux notions principales: les entités et les associations. Les entités regroupent des données (ce sont les propriétés) afin de former des types d'objets. Les associations définissent les relations ou interactions entre les entités. Cette étape est la plus importante. ll s'agit d'une représentation graphique qui permet de décrire toutes les relations existantes entre les entités. Méthode MERISE : Le MCD

23 23 La définition des données Réalisation dune description exhaustive des informations à traiter dans l'application. Cette description doit être organisée et structurée sans redites. Exemple : Réaliser un BDD qui permette de gérer les séances de TP à lIUT GEII de Toulon, en prenant en compte : enseignants responsables, matière, promotion et matériels. On suppose quil ny a quune matière par série de TP, et quune série de TP ne peut concerner quune promotion. Une série de TP peut être constituée de plusieurs séances de TP, et une caractéristique peut être commune à plusieurs matériels. Méthode MERISE : Le MCD

24 24 La définition des données ObjetOccurrencesRemarques Les enseignantsunique1 enseignant par matière De loption GEIIunique1 seul à lIUT de Toulon De lIUT de Toulonunique1 seul dans le monde La liste des matérielsdénombrableOn peut en faire la liste exhaustive. Les caractéristiques de matérielsdénombrableOn peut en faire la liste exhaustive Les séries de TPdénombrableSe décompose en séances de TP Les séances de TPdénombrableOn peut en faire la liste exhaustive Une matièreUnique1 matière par série de TP Une promotionUnique1 promotion par série de TP Méthode MERISE : Le MCD

25 25 La définition des données : Restructuration On restructure les données pour ne garder que les informations les plus « signifiantes » pour notre application (on supprime tout ce qui est « unique »). ObjetOccurrencesDépendances Les séries de TPdénombrableRegroupe des séances de TP Les séances de TPdénombrableDécompose une série de TP, Regroupe des matériels. La liste des matérielsdénombrableDécompose une séance de TP, Regroupe des caractéristiques. Les caractéristiques de matérielsdénombrableDécompose un matériel Méthode MERISE : Le MCD

26 26 Méthode MERISE : Le MCD S3 – TP délectrotechniqueET3PS3 S2 – TP dAPIARS2PS2 S1 – TP delectroniqueEN1PS1 S1 – TP de langage CII1PS1 Libellé completMatièrePromo. Séries de TP Caractéristiques 672Nb_brochesFPGA 15000Nb_elts_logFPGA 20ContinuA Val.TypeCatégorie Carte Altera DE2CALTC Ampèremètre de tableA30AA PC – salle E200PC-E200PC LibelléTypeCatégorie Matériels 2ARS2PS2 1ARS2PS2 3II1PS1 2II1PS1 1II1PS1 NuméroMatièrePromotion TP Ascenseur Initiation grafcet Lang. C : boucles Lang. C : les « if » Initiation au C Intitulé Séances de TP

27 27 Représentation du modèle entité-association : Entité attributs (min,max) cardinalité Méthode MERISE : Le MCD association attribut Exemple : Une série de TP contient 1 ou plusieurs séances de TP => (1,n). Une séance de TP est incluse dans au maximum une série de TP => (0,1). Séries de TP … Séances de TP … (1,n)(0,1) contient

28 28 Le MCD (Modèle Conceptuel des Données): Exemple : Matériels... Caractéristiques... possèdent 1,n 0,n Un matériel en stock est nécessaire pour 0 à n séances de TP 1,n Un matériel possède 1 à n caractéristiques Une caractéristique peut correspondre à 0 jusquà n matériels Méthode MERISE : Le MCD Une série de TP contient 1 à n séances de TP Séances... Séries... 1,n 0,1 Une séance de TP est contenue dans 0 à 1 séries de TP contient nécessite Une séance de TP nécessite 1 à n matériels possède

29 29 Méthode MERISE : cas particulier Relation binaire aux cardinalités (1,1) - (1,1) Dès le MCD, on peut fusionner les 2 entités en une seule, en regroupant leurs propriétés. Entité 1 propr1 propr2... Entité 2 propr1 propr2... 1,1 Associe Entité 1+2 propr1 propr2 … propr1 propr2

30 30 Il peut y avoir plusieurs associations entre 2 entités si la sémantique est différente. Méthode MERISE : Le MCD Associations multiples Est propriétaire de Est locataire de Personne Nom Prénom Numéro Sécu. Sociale Appartement Numéro Etage 0,n 1,n 0,n Un appartement est la propriété d au moins 1 personne Une personne peut ne pas être propriétaire, ou posséder 1 à n appartements

31 31 Méthode MERISE : Les attributs dassociation Etudiant … …... Examen … …... 1,n Passe Il peut arriver quun paramètre ne puisse pas être associé à une seule entité, car il est en fait lié à 2 entités (ou plus). Pas dans lentité « Etudiant » : cela signifierait que quelque soit lexamen passé, létudiant a une note qui sera toujours la même. Pas dans lentité « Examen » : cela signifierait que lexamen donnerait toujours lieu à la même note, quelque soit létudiant qui le passe. Où ranger la note ? Alors ? Exemple : une entité « Etudiant », une entité « Examen ».

32 32 Méthode MERISE : Les attributs dassociation Etudiant … …... Examen … …... 1,n Passe Solution : la note est à la fois liée à lexamen et à létudiant. On place donc la note dans lassociation reliant « Etudiant » à « Examen » : attribut dassociation Note

33 33 Méthode MERISE : Relation réflexive Il peut arriver quune entité puisse être impliquée elle-même plusieurs fois dans une relation (boucle). Personne … …... Commande (0,n) Chef (0,1) Subordonné Une personne peut être le chef de 0 à n personnes, ou le subordonné de 0 à 1 personne. Mais ce subordonné peut lui même commander de 0 à n personnes. Et le chef peut lui même être commandé par un autre chef… Note : Les cardinalités minimales sont toujours égales à 0, sinon on aurait une boucle « sans fin ». Exemple :

34 34 Le MLD (Modèle Logique des Données) Permet de mettre en forme le MCD. Le MLD fait appel à deux notions principales : les tables les relations Méthode MERISE : Le MLD Elles sont définies à partir de la modélisation « entité – association » établie lors de la phase précédente. Les tables sont la réalisation informatique des entités. Les relations définissent les liaisons entre tables ainsi que les règles d'intégrité des données inscrites dans les tables. Elles auront une influence considérable sur le fonctionnement du moteur de base de données. La conception du MLD consiste essentiellement à: Traduire les entités en Tables (et les propriétés en Champs) Traduire les associations en Relations (en portant attention à leur Cardinalité)

35 35 Le MLD (Modèle Logique des Données) : Méthode MERISE : Le MLD Transformation des entités en tables La transformation des entités en tables se fait trois étapes: Transformation des propriétés en champs Mise en évidence de l'index principal grâce à l'identifiant de l'entité Création de la clef primaire de la table.

36 36 Le MLD (Modèle Logique des Données) : Transformation des propriétés en champ : On donne un nom de champ à chaque propriété. On prendra garde à donner des noms simples permettant de l'identifier clairement parmi tous les autres champs de la base. On doit donner à chaque champ un type qui permettra de stocker correctement les données: type texte dont on spécifie le nombre maximum de caractères; type numérique (entiers, flottants, etc.); type time (date, heure, etc.); etc. Méthode MERISE : Le MLD EtreHumain Nom de la table NumSecuentier Nomchar(30) Prénomchar(20) DateNaissdate LieuNaisschar(30) Sexebooléen types Nom des champs

37 37 Le MLD (Modèle Logique des Données) : On choisit dans lensemble des champs de lentité un champ ou un n-uplet de champs, qui puisse différencier parfaitement une ligne dune autre dans la table. On nomme ce champ (ou cet ensemble de champs) : clé primaire. Méthode MERISE : Le MLD Il est préférable que la clef primaire ne soit composée que d'un seul champ. Si plusieurs champs sont nécessités pour former la clé primaire de la table, il est recommandé de créer un champ supplémentaire qui servira de clef primaire car ce type de combinaison de champs est difficile à maintenir. EtreHumain NumSecuentier Nomchar(30) Prénomtexte(30) DateNaissdate LieuNaisstexte(30) Sexebooléen Clé primaire

38 38 Transformation des associations en relations Méthode MERISE : Le MLD Suivant la cardinalités des relations entre entités dans le MCD, le MLD va pouvoir être construit directement via certaines règles. Plusieurs cas peuvent se produire : cas (X,n)-(X,n) cas (X,1)-(X,n) cas (0,1)-(1,1)

39 39 MCD MLD : précisions Relation binaire aux cardinalités (X,n) - (X,n), X=0 ou X=1 On utilise une table de jointure ayant comme Clé Primaire une clé composée des identifiants des 2 entités. On dit que la Clé Primaire de la nouvelle table est la concaténation des Clés Primaires des deux autres tables. Lattribut dassociation passe dans la table de jointure. Entite2 att1entier att2time att3flottant Entité 1 … …... Entité 2 … …... X,n Associe Entite1 att1entier att2char(30) att3booléen Associer att1entier att1entier att_assoentier att_asso

40 40 MCD MLD : précisions Relation binaire aux cardinalités (X,1) - (X,n), X=0 ou X=1 La Clé Primaire de la table à la cardinalité (X,n) devient une Clé Etrangère dans la table à la cardinalité (X,1) Va nous permettre de créer un lien entre les tables. Lattribut dassociation passe dans la table à la cardinalité (X,1). Entite2 att1entier att2time att3flottant Entite1 att1entier att2char(30) att3booléen att_assoentier Entité 1 … …... Entité 2 … …... X,1X,n Associe att_asso

41 41 MCD MLD : précisions Relation binaire aux cardinalités (0,1) - (1,1) La Clé Primaire de la table à la cardinalité (0,1) devient une Clé Etrangère dans la table à la cardinalité (1,1). Lattribut dassociation passe indifféremment dans lune ou lautre des tables. Entite2 att1entier att1entier att2time att3flottant Entité 1 … …... Entité 2 … …... 0,11,1 Associe Entite1 att1entier att2char(30) att3booléen att_assoentier att_asso

42 42 MCD MLD : cas dune relation réflexive Relation binaire aux cardinalités (0,1) - (0,1) Relation binaire aux cardinalités (0,1) - (0,n) Relation binaire aux cardinalités (0,n) - (0,n) Un attribut clé étrangère est ajouté dans la nouvelle table, attribut éventuellement suffixé (renommé) par le rôle de la liaison à la cardinalité (0,1). Cette clé étrangère référence la clé primaire de la même table. Attention : pas applicable sous Access, obligation de créer 2 tables. Même règle, sauf quil y a 2 clés étrangères. Il pourra y avoir possibilité plus tard déliminer lune dentre elles. Création dune 2ème table, dont la clé primaire est la concaténation de deux clés, référant à la clé primaire de la 1ère table. Ces attributs sont suffixés (renommés) par le rôle de chacune des liaisons correspondantes

43 43 MCD MLD : cas dune relation réflexive Exemple : relation (0,1) – (0,n) Personne NumPersonne …... NumChef Exemple : relation (0,n) – (0,n) Article NumArticle …... Composer NumArticleComposant NumArticleComposéDe

44 44 MLD : autre représentation Il arrive parfois que le MLD se représente alors de manière textuelle. Exemple : est équivalent à Entite1( att1, att2, att3) Entite2( att1, att1, att2, att3) Entite1 att1entier att2char(30) att3booléen Entite2 att1entier att1entier att2time att3flottant Note : le type des données ne figure pas.

45 45 Introduction Le modèle relationnel Dans le cadre d'un projet d'informatisation, la conception d'une base de données relationnelle passe d'abord par l'identification des objets de gestion (=entités) et des règles de gestion du domaine modélisé). Une fois énoncées et validées, ces règles nous conduisent automatiquement à la structure du modèle relationnel correspondant. Des opérations vont pouvoir être effectuées sur les instances des différentes tables, afin de procéder à la recherche d informations dans la base de données.

46 46 SQL Définition SQL (Structured Query Language - Langage de requêtes structuré) est un langage utilisé pour interroger ou manipuler les Bases de Données Relationnelles. C est : un langage de définition de données (DDL), un langage de manipulation de données (DML), un langage de contrôle de données (DCL, Data Control Language). Début du développement dans les années 70 (IBM). Première version commerciale en Dernière normalisation en De nombreux SGBDR utilisent SQL : Access, MySQL, Oracle, DB2, SQL Server...

47 47 Opérations de base Le modèle relationnel Projection Formalisme : R = PROJECTION (R1, liste des attributs). Cet opérateur ne porte que sur 1 table. Il permet de ne retenir que certains attributs spécifiés d'une table. On obtient toutes les lignes de la table à l'exception des doublons. NomSuperficiePopulationMer-océan Groix230014,82Atlantique Corse Méditerranée Ouessant93215,58Atlantique Mayotte Indien Tahiti Pacifique Iles R = PROJECTION (Iles, Nom, Population) NomPopulation Groix2300 Corse Ouessant932 Mayotte Tahiti170000

48 48 Opérations de base Le modèle relationnel Projection Formalisme : R = PROJECTION (R1, liste des attributs). EspeceCategorie Rosé des présConserve Rosé des présSec CoulemelleFrais Champignons EspeceCategorie Rosé des présConserve Rosé des présSec CoulemelleFrais Rosé des présSec Conditionnement Bocal Verrine Boîte Sachet plastique R = PROJECTION (Champignons, Espèce, Catégorie) Pas de doublon

49 49 SQL Instructions SELECT : permet de récupérer des informations dans la BDD. SELECT [DISTINCT,...] liste_sélection [FROM...] [ WHERE condition_recherche ] [GROUP BY expression] [ORDER BY expression] ; Exemple : NomSuperficiePopulationMer-océan Groix230014,82Atlantique Corse Méditerranée Ouessant93215,58Atlantique Mayotte Indien Tahiti Pacifique Iles SELECT Nom,Population FROM Iles; NomPopulation Groix2300 Corse Ouessant932 Mayotte Tahiti170000

50 50 SQL SELECT Projection Projection SELECT Nom, Population FROM Iles; nest pas une vraie projection, car sil y a des doublons dans la table d origine, ils apparaîtront dans la table résultante. SELECT Espece, Categorie FROM Champignons; Pour faire une projection, on écrit donc : SELECT DISTINCT Espèce, Categorie FROM Champignons; (DISTINCT permet d éliminer les doublons). EspeceCategorie Rosé des présConserve Rosé des présSec CoulemelleFrais Rosé des présSec Doublon Champignons EspeceCategorie Rosé des présConserve Rosé des présSec CoulemelleFrais Rosé des présSec Conditionnement Bocal Verrine Boîte Sachet plastique

51 51 Opérations de base Le modèle relationnel Sélection Formalisme : R = SELECTION (R1, condition) Cet opérateur porte sur 1 table. Il permet de ne retenir que les lignes répondant à une condition exprimée à l'aide des opérateurs arithmétiques ( =, >, =, ) ou logiques de base (ET, OU, NON). Tous les attributs de la table R1 sont conservés dans R.

52 52 Opérations de base Le modèle relationnel Sélection Formalisme : R = SELECTION (R1, condition) NomSuperficiePopulationMerOcean Groix230014,82Atlantique Corse Méditerranée Ouessant93215,58Atlantique Mayotte Indien Tahiti Pacifique Iles R = SELECTION (Iles, Population>180000) NomSuperficiePopulationMerOcean Corse Méditerranée Mayotte Indien R = SELECTION (Iles, MerOcean=« Atlantique ») NomSuperficiePopulationMerOcean Groix230014,82Atlantique Ouessant93215,58Atlantique

53 53 SQL SELECT Sélection Sélection SELECT […] FROM […] WHERE […] SELECT * FROM Iles WHERE MerOcean="Atlantique"; SELECT * FROM Iles WHERE Population > ; SELECT * FROM Iles WHERE Population BETWEEN AND ; SELECT * FROM Iles WHERE MerOcean IN ( "Pacifique", "Indien", "Antarctique") SELECT * FROM Codes WHERE CodePostal LIKE 56%; SELECT * FROM Codes WHERE CodePostal LIKE 56_9_; Exemples : CodePostal commence par « 56 » CodePostal est de la forme « 56x9x » On affiche tous les attributs

54 54 Opérations de base Le modèle relationnel Jointure Cet opérateur porte sur 2 tables qui doivent avoir au moins un attribut défini dans le même domaine (ensemble des valeurs permises pour un attribut). La condition de jointure peut porter sur l'égalité d'un ou de plusieurs attributs définis dans le même domaine (mais n'ayant pas forcément le même nom). Les n-uplets de la relation résultat sont formés par la concaténation des n-uplets des relations d'origine qui vérifient la condition de jointure. Remarque : Des jointures plus complexes que l'équijointure peuvent être réalisées en généralisant l'usage de la condition de jointure à d'autres critères de comparaison que l'égalité (,,, ).

55 55 Opérations de base Le modèle relationnel Jointure Formalisme : R = JOINTURE (R1, R2, condition d'égalité entre attributs) NomSuperficie PopulationMerOcean Ile de Groix ,82 Atlantique Corse Méditerranée Ouessant ,58 Atlantique Mayotte Indien Tahiti Pacifique Iles CodePostalIleVille 98714PapeeteTahiti 17480Château-d'OléronOléron 20000AjaccioCorse 29242Ouessant 56590GroixIle de Groix Codes 20200BastiaCorse R = JOINTURE (Iles, Codes, Iles.Nom=Codes.Ile) NomSuperficiePopulationMerOcean Ile de Groix230014,82Atlantique Corse Méditerranée Ouessant93215,58Atlantique Tahiti Pacifique CodePostalIleVille 98714PapeeteTahiti 20000AjaccioCorse 29242Ouessant 56590GroixIle de Groix Corse Méditerranée20200BastiaCorse

56 56 SQL SELECT Jointure Jointure SELECT […] FROM Table1,Table2,Table3… WHERE […] SELECT * FROM Iles,Codes WHERE Iles.Nom=Codes.Ile; NomSuperficie PopulationMerOcean Ile de Groix ,82 Atlantique Corse Méditerranée Ouessant ,58 Atlantique Mayotte Indien Tahiti Pacifique Iles CodePostalIleVille 98714PapeeteTahiti 17480Château-d'OléronOléron 20000AjaccioCorse 29242Ouessant 56590GroixIle de Groix Codes 20200Bastia Corse NomSuperficiePopulationMerOcean Ile de Groix230014,82Atlantique Corse Méditerranée Ouessant93215,58Atlantique Tahiti Pacifique CodePostalIleVille 98714PapeeteTahiti 20000AjaccioCorse 29242Ouessant 56590GroixIle de Groix Corse Méditerranée20200BastiaCorse Exemple :

57 57 Opérations ensemblistes Le modèle relationnel Union Cet opérateur porte sur deux tables qui doivent avoir le même nombre d'attributs définis dans le même domaine. On parle de tables ayant le même schéma. La relation résultat possède les attributs des tables d'origine et les n-uplets de chacune, avec élimination des doublons éventuels.

58 58 Opérations ensemblistes Le modèle relationnel Union Formalisme : R = UNION (R1, R2) NomRéalisateur Star WarsG. Lucas BrazilT. Gilliam Dvd_Romeo BatmanT. Burton La Marche de l EmpereurL. Jacquet Dvd_Juliette NomRéalisateur NausicaaH. Miyazaki BatmanT. Burton Batman 2T. Burton Star WarsG. Lucas NomRéalisateur Star WarsG. Lucas BrazilT. Gilliam BatmanT. Burton La Marche de l EmpereurL. Jacquet NausicaaH. Miyazaki Batman 2T. Burton R = UNION (Dvd_Romeo, DVD_Juliette)

59 59 SQL SELECT Union Union SELECT liste d'attributs FROM table1 UNION SELECT liste d'attributs FROM table2 ; NomRealisateur Star WarsG. Lucas BrazilT. Gilliam Dvd_Romeo BatmanT. Burton La Marche de l EmpereurL. Jacquet Dvd_Juliette NomRealisateur NausicaaH. Miyazaki BatmanT. Burton Batman 2T. Burton Star WarsG. Lucas NomRealisateur Star WarsG. Lucas BrazilT. Gilliam BatmanT. Burton La Marche de l EmpereurL. Jacquet NausicaaH. Miyazaki Batman 2T. Burton SELECT Nom, Realisateur FROM Dvd_Romeo UNION SELECT Nom, Realisateur FROM Dvd_Juliette; Exemple :

60 60 Opérations ensemblistes Le modèle relationnel Intersection Cet opérateur porte sur deux tables de même schéma. La table résultat possède les attributs des tables d'origine et les n-uplets communs à chacune.

61 61 Opérations ensemblistes Le modèle relationnel Intersection Formalisme : R = INTERSECTION (R1, R2) NomRéalisateur Star WarsG. Lucas BrazilT. Gilliam Dvd_Romeo BatmanT. Burton La Marche de l EmpereurL. Jacquet Dvd_Juliette NomRéalisateur NausicaaH. Miyazaki BatmanT. Burton Batman 2T. Burton Star WarsG. Lucas NomRéalisateur Star WarsG. Lucas BatmanT. Burton R = INTERSECTION (Dvd_Romeo, Dvd_Juliette)

62 62 SQL SELECT Intersection Intersection Ancienne version : SELECT attribut1, attribut2,... FROM table1 WHERE attribut1 IN (SELECT attribut1 FROM table2) ; Depuis SQL2 : SELECT attribut1, attribut2,... FROM table1 INTERSECT SELECT attribut1, attribut2,... FROM table2 ; INTERSECT pas implanté sur tous les SGBD.

63 63 SQL SELECT Intersection Intersection Exemple : SELECT Nom, Realisateur FROM Dvd_Romeo WHERE Nom IN (SELECT Nom FROM Dvd_Juliette) ; ou SELECT Nom, Realisateur FROM Dvd_Romeo INTERSECT SELECT Nom, Realisateur FROM Dvd_Juliette; NomRealisateur Star WarsG. Lucas BrazilT. Gilliam Dvd_Romeo BatmanT. Burton La Marche de l EmpereurL. Jacquet Dvd_Juliette NomRéalisateur NausicaaH. Miyazaki BatmanT. Burton Batman 2T. Burton Star WarsG. Lucas NomRéalisateur Star WarsG. Lucas BatmanT. Burton

64 64 Opérations ensemblistes Le modèle relationnel Différence Cet opérateur porte sur deux tables de même schéma. La table résultat possède les attributs des tables d'origine et les n-uplets de la première table qui n'appartiennent pas à la deuxième. DIFFERENCE(DVD_JULIETTE,DVD_ROMEO) DIFFERENCE(DVD_ROMEO,DVD_JULIETTE)

65 65 Opérations ensemblistes Le modèle relationnel Différence Formalisme : R = DIFFERENCE (R1, R2) NomRéalisateur Star WarsG. Lucas BrazilT. Gilliam Dvd_Romeo BatmanT. Burton La Marche de l EmpereurL. Jacquet Dvd_Juliette NomRéalisateur NausicaaH. Miyazaki BatmanT. Burton Batman 2T. Burton Star WarsG. Lucas NomRéalisateur R = DIFFERENCE (Dvd_Romeo, Dvd_Juliette) BrazilT. Gilliam La Marche de l EmpereurL. Jacquet Liste des DVD de Roméo qui ne sont pas dans celle de Juliette.

66 66 SQL SELECT Différence Différence SELECT attribut1, attribut2,... FROM table1 WHERE attribut1 NOT IN (SELECT attribut1 FROM table2) ; Depuis SQL2 : SELECT attribut1, attribut2,... FROM table1 EXCEPT SELECT attribut1, attribut2,... FROM table2 ; EXCEPT pas implanté sur tous les SGBD.

67 67 SQL SELECT Différence Différence Exemple : SELECT Nom, Realisateur FROM Dvd_Romeo WHERE Nom NOT IN (SELECT Nom FROM Dvd_Juliette) ; ou SELECT Nom, Realisateur FROM Dvd_Romeo EXCEPT SELECT Nom, Realisateur FROM Dvd_Juliette ; NomRéalisateur Star WarsG. Lucas BrazilT. Gilliam Dvd_Romeo BatmanT. Burton La Marche de l EmpereurL. Jacquet Dvd_Juliette NomRéalisateur NausicaaH. Miyazaki BatmanT. Burton Batman 2T. Burton Star WarsG. Lucas NomRéalisateur BrazilT. Gilliam La Marche de l EmpereurL. Jacquet

68 68 Opérations ensemblistes Le modèle relationnel Produit Cet opérateur porte sur deux tables. La table résultat possède les attributs de chacune des tables d'origine et ses n-uplets sont formés par la concaténation de chaque n-uplet de la première table avec l'ensemble des n- uplets de la deuxième.

69 69 Opérations ensemblistes Le modèle relationnel Produit Formalisme : R = PRODUIT (R1, R2) NuméroNom 101Dupont 102Martin Etudiants Partiels LibelléCoefficient Anglais2 Processeurs3 Recherche opérationnelle5 R = PRODUIT (Etudiants, Partiels) NuméroNom 101Dupont 102Martin LibelléCoefficient Anglais2 Processeurs3 Recherche opérationnelle5 101Dupont 101Dupont 102Martin 102Martin Anglais2 Processeurs3 Recherche opérationnelle5

70 70 SQL SELECT Produit Produit SELECT * FROM table1, table2 ; NuméroNom 101Dupont 102Martin Etudiants Partiels LibelléCoefficient Anglais2 Processeurs3 Recherche opérationnelle5 SELECT * From Etudiants, Partiels; NuméroNom 101Dupont 102Martin LibelléCoefficient Anglais2 Processeurs3 Recherche opérationnelle5 101Dupont 101Dupont 102Martin 102Martin Anglais2 Processeurs3 Recherche opérationnelle5

71 71 Opérations diverses Le modèle relationnel Division Formalisme : R=DIVISION(R1,R2) Cet opérateur porte sur 2 tables qui doivent avoir au moins un attribut défini dans le même domaine. Tous les attributs du diviseur (R2) doivent être des attributs du dividende (R1). La table dividende doit avoir au moins une colonne de plus que la table diviseur. La table résultat, le quotient, possède les attributs non communs aux deux relations initiales et est formée de tous les n-uplets qui, concaténés à chacun des n-uplets du diviseur (R2) donne toujours un n-uplet du dividende (R1).

72 72 Opérations diverses Le modèle relationnel Division R=DIVISION(Liste_Joueurs, Liste_Equipes) Liste_Equipes Equipe Marseille PSG Lorient Nom Fiorèse On cherche qui a joué à Marseille, au PSG et à Lorient : seul Fiorèse a joué dans les 3 équipes. NomEquipe FiorèseMarseille PédronPSG AbrielPSG AbrielLorient FiorèseLorient Liste_Joueurs MarletMarseille MarletLorient FiorèsePSG PédronLorient NamouchiLorient

73 73 SQL SELECT Division Division … Il n y a pas d instruction simple permettant de faire la division. Nécessite plusieurs SELECT imbriqués.

74 74 Opérations dagrégation Le modèle relationnel Calcul Formalisme : R=CALCULER(R0, fonction1, fonction2,...) ou N=CALCULER(R0, fonction) Les calculs et/ou comptage portent sur la relation R0. La table résultat ne comportera qu'une ligne avec autant de colonnes que de résultats demandés ou pourra simplement être considérée comme un nombre N utilisable ultérieurement en tant que tel dans le cas où un seul résultat est attendu.

75 75 Opérations dagrégation Le modèle relationnel Calcul Formalisme : R=CALCULER(R0, fonction1, fonction2,...) avec fonction = Somme(attribut), Moyenne(attribut), Minimum(attribut), Maximum(attribut). R=CALCULER(Liste_Commandes, Somme(Quantité), Somme(Quantité*PrixUnitaire)) Somme(Quantité)Somme(Quantité*PrixUnitaire) CommandeCodeProduitQuantitéPrixUnitaire 96008A B A A B Liste_Commandes

76 76 SQL SELECT Fonctions de calcul Fonctions de calcul SUM(attribut) : total des valeurs d'un attribut AVG(attribut) : moyenne des valeurs d'un attribut MIN(attribut) : plus petite valeur d'un attribut MAX(attribut) : plus grande valeur d'un attribut Fonction de comptage Fonction de comptage COUNT() qui peut s utiliser de plusieurs manières : COUNT(*) : nombre de lignes (n-uplets) d une table COUNT(DISTINCT attribut) : nombre de valeurs différentes de l'attribut

77 77 SQL SELECT Fonctions de calculs et de comptage : Exemple Fonctions de calculs et de comptage : Exemple NomFonctionSalaire BurnsPDG SmithersDir.-adjoint20000 LennyTechnicien1500 CarlTechnicien1400 HomerTechnicien1200PersonnelCentrale SELECT COUNT(*) FROM PersonnelCentrale; 5 SELECT COUNT(*) FROM PersonnelCentrale WHERE Fonction=« Technicien »; 3 SELECT SUM(Salaire) FROM PersonnelCentrale WHERE Fonction=« Technicien »; 4100 SELECT MIN(Salaire) FROM PersonnelCentrale WHERE Fonction=« Technicien »; 1200

78 78 Opérations dagrégation Le modèle relationnel Regroupement et calcul Formalisme : R=REGROUPER_ET_CALCULER(R0, att1, att2,..., fonction1, fonction2,...) Le regroupement s'effectue sur un sous ensemble des attributs de la relation R0. La table résultat comportera autant de lignes que de groupes de n-uplets, les fonctions s'appliquant à chacun des groupes séparément.

79 79 Opérations dagrégation Le modèle relationnel Regroupement et calcul Formalisme : R=REGROUPER_ET_CALCULER(R0, att1, att2,..., fonction1, fonction2,...) R=REGROUPER_ET_CALCULER(Liste_Commandes, Commande, Somme(Quantité*PrixUnitaire)) Commande Somme(Quantité*PrixUnitaire) CommandeCodeProduitQuantitéPrixUnitaire 96008A B A A B Liste_Commandes

80 80 SQL SELECT Regroupement et calcul Regroupement et calcul SELECT … FROM... GROUP BY (liste dattributs) HAVING (condition); Commande CodeProduitQuantitéPrixUnitaire 96008A B A A B Liste_Commandes SELECT Commande, Sum(Quantité*PrixUnitaire) FROM Liste_Commandes GROUP BY Commande ; CommandeSum(Quantité*PrixUnitaire) SELECT Commande, Sum(Quantité*PrixUnitaire) FROM Liste_Commandes GROUP BY Commande HAVING Sum(Quantité)>40; CommandeSum(Quantité*PrixUnitaire)

81 81 Opérations dagrégation Le modèle relationnel Tri Formalisme : R = TRI(R0, att1, att2,...) Le tri s'effectue sur un ou plusieurs attributs, dans l'ordre croissant ou décroissant. La table résultat a la même structure et le même contenu que la relation de départ.

82 82 Opérations diverses Le modèle relationnel Tri Formalisme : R = TRI(R0, att1, att2,...) R=TRI(Iles, Mer_Océan, Population ) NomSuperficiePopulationMerOcean Groix230014,82Atlantique Corse Méditerranée Ouessant93215,58Atlantique Mayotte Indien Tahiti Pacifique Iles NomSuperficiePopulationMerOcean Groix230014,82Atlantique Corse Méditerranée Ouessant93215,58Atlantique Mayotte Indien Tahiti Pacifique

83 83 SQL SELECT Tri Tri SELECT … FROM... ORDER BY attribut1 ASC (ou DESC), attribut2 ASC (ou DESC)... SELECT * FROM Iles ORDER BY MerOcean DESC, Population ASC; NomSuperficiePopulationMerOcean Groix230014,82Atlantique Corse Méditerranée Ouessant93215,58Atlantique Mayotte Indien Tahiti Pacifique Iles NomSuperficiePopulationMerOcean Groix230014,82Atlantique Corse Méditerranée Ouessant93215,58Atlantique Mayotte Indien Tahiti Pacifique

84 84 Opérations diverses Le modèle relationnel Attributs calculés Un attribut calculé est un attribut dont les valeurs sont obtenues par des opérations arithmétiques portant sur des attributs de la même table. Le calcul est spécifié lors d'une projection ou lors de l'utilisation d'une fonction. NomSuperficiePopulation Population/Superficie Groix230014,82 155,20 Corse ,95 Ouessant93215,58 59,82 Mayotte ,76 Tahiti ,99 Ex : R=PROJECTION(Iles, Nom, Superficie, Population, Population/Superficie)

85 85 SQL SELECT Attributs calculés Attributs calculés NomSuperficiePopulationMerOcean Groix230014,82Atlantique Corse Méditerranée Ouessant93215,58Atlantique Mayotte Indien Tahiti Pacifique Iles NomSuperficiePopulationPopulation/Superficie Groix230014,82 155,20 Corse ,95 Ouessant93215,5859,82 Mayotte ,76 Tahiti ,99 Ex : SELECT Nom, Superficie, Population, Population/Superficie FROM Iles; Attributs renommés Attributs renommés Ex : SELECT Nom, Population/Superficie AS Densite FROM Iles; NomDensite Groix 155,20 Corse 29,95 Ouessant59,82 Mayotte534,76 Tahiti162,99

86 86 SQL SELECT Prédicat EXISTS Prédicat EXISTS Le prédicat EXISTS permet de tester l'existence ou l'absence de données dans la sous requête. Si la sous requête renvoie au moins une ligne, le prédicat est vrai. NomFonctionSalaire BurnsPDG SmithersDir.-adjoint20000 LennyTechnicien1500 CarlTechnicien1400 HomerTechnicien1200PersonnelCentrale SELECT Sum(Salaire) FROM PersonnelCentrale WHERE EXISTS ( SELECT * FROM PersonnelCentrale WHERE Fonction=Technicien) ); SELECT Sum(Salaire) FROM PersonnelCentrale WHERE EXISTS ( SELECT * FROM PersonnelCentrale WHERE Fonction=Ingénieur) ); NULL

87 87 Opérations diverses Le modèle relationnel Attributs renommés Il est possible de renommer n'importe quel attribut en le faisant précéder de son nouveau nom suivi de ":". R=PROJECTION(R0, att1, att2, att3, att4, newatt1:att1*att2, newatt2:att3/att2) R=PROJECTION(Liste_Commandes, Commande, CodeProduit, Montant:Quantité*PrixUnitaire) CommandeCodeProduitQuantitéPrixUnitaire 96008A B A A B Liste_Commandes CommandeCodeProduitMontant 96008A B A A B201760

88 88 SQL - Types de données De nombreux types de données sont traités par SQL. Entiers smallint à (16 bits) integer (ou int) +/- 2 milliards (32 bits) Numérique Réels à précision arbitraire numeric(p,q) ou decimal(p,q) (p = précision ; q = échelle) Permet de stocker des nombres de p chiffres dont q sont après la virgule. Ex : pour stocker un nombre comme , il faudra définir un numeric(8,5) ou decimal(8,5) Permettent de faire des calculs exacts (pas darrondis), mais plus lents par rapport aux flottants.

89 89 SQL - Types de données Flottants Numérique double precision : réel à virgule flottante dont la représentation est binaire, de grande précision (64 bits. Amplitude : à , 0, et à ). float(p,q) : réel à virgule flottante dont la représentation est binaire à échelle et précision obligatoire (jusqu à 64 bits). real : réel à virgule flottante dont la représentation est binaire, de faible précision (32 bits. Amplitude : - 3, à -1, , 0, et 1, à 3, ) Calculs rapides, mais des arrondis peuvent se produire (ex : 3, , …).

90 90 SQL - Types de données char(n) ou character(n) : chaîne de caractères de longueur fixe n. varchar(n) ou char varying(n) ou character varying(n) : chaîne de caractères de longueur variable n. Délimiteurs :... (bonjour) Alphanumérique ValeurCHAR(4)Place mémoireVARCHAR(4)Place mémoire 4 octets 1 octet ab 4 octetsab 3 octets abcd 4 octetsabcd 5 octets

91 91 SQL - Types de données date : date du calendrier grégorien (résolution : 1 jour) time : temps sur 24 heures (résolution : 1 microseconde) timestamp : combiné date temps (résolution : 1 microseconde) Date et heure

92 92 SQL – Types de données Booléen … Nest pas défini dans la norme SQL. Un type BOOLEAN (ou LOGICAL) est défini dans certaines SGBD. Sinon : on utilise un type énuméré : enum(V,F) (la variable ne pourra avoir que 2 valeurs, V ou F).

93 93 SQL – Types de données Créations de domaines Possibilité de créer son propre type de données. CREATE DOMAIN Nom_Domaine AS Type_Donnée Ex : CREATE DOMAIN CodePostal AS decimal(5,0);

94 94 SQL – Types de données Créations de types Possibilité de créer son propre type de données composé. CREATE TYPE Type_Utilisateur AS OBJECT ( Nom_Champ Type_Donnée,... Nom_ChampN Type_DonnéeN); Exemple : CREATE TYPE Personnel AS OBJECT (Nom AS varchar(20), Prenom AS varchar(20), Naissance AS date);

95 95 CREATE TABLE Nom_de_la_table (Attribut1 Type_de_donnée, Attribut2 Type_de_donnée,...); CREATE TABLE CREATE TABLE SQL – Création de tables

96 96 Si on veut que certains champs aient une valeur si non renseignés, on rajoute une option DEFAULT. Si on veut que certains champs soient obligatoirement renseignés (pas de « vide »), on rajoute une contrainte NOT NULL. CREATE TABLE Nom_de_la_table (Attribut1 Type_de_donnée NOT NULL, Attribut2 Type_de_donnée,...); CREATE TABLE Employes (NomEmploye char(50) NOT NULL, Salaire integer DEFAULT ,...); SQL – Contraintes dintégrité

97 97 Si on veut une condition sur la valeur d un champ : CHECK. CREATE TABLE clients( Nomchar(30) NOT NULL, Ageinteger CHECK (age>0 AND age < 100), Courriel char(50) NOT NULL CHECK (Courriel LIKE ); SQL – Contraintes dintégrité

98 98 SQL – Contraintes dintégrité Contrainte d unicité : si on veut vérifier que la valeur saisie pour un champ n'existe pas déjà dans la table : UNIQUE. CREATE TABLE ClientsBanque( Nom char(30) NOT NULL, Prenom char(30) NOT NULL, NumCompte integer, NumPEL integer, NumLivretA integer, UNIQUE(NumCompte), UNIQUE(NumPEL), UNIQUE(NumLivretA) );

99 99 SQL – Contraintes Clause CONSTRAINT : permet de définir une contrainte sur un attribut lors de la création d'une table. CONSTRAINT Définition_Contrainte CREATE TABLE clients( NumClient integer PRIMARY KEY, Nom char(30) NOT NULL, Age integer CONSTRAINT verifAge CHECK (Age>0 AND Age < 100) );

100 100 SQL – Définition dune clé primaire Clause PRIMARY KEY(att1,att2,…). Deux écritures possibles : CREATE TABLE clients( NumClient integer PRIMARY KEY, Nom char(30) NOT NULL, Age integer CHECK (age>0 AND age < 100) ); ou CREATE TABLE clients( NumClient integer, Nom char(30) NOT NULL, Age integer CHECK (age>0 AND age < 100), PRIMARY KEY (NumClient) );

101 101 SQL – Définition dune clé étrangère Clause FOREIGN KEY(…) REFERENCES... CREATE TABLE clients( NumClient integer PRIMARY KEY, Nom char(30) NOT NULL, Age integer CHECK (Age>0 AND Age < 100) ); CREATE TABLE listecommandes( NumeroCommande integer, NumeroClient integer, DateCommande date NOT NULL, PRIMARY KEY (NumeroCommande), FOREIGN KEY (NumeroClient) REFERENCES clients(NumClient) ); Si une valeur de NumClient n existe pas dans la table clients, elle ne pourra pas être utilisée comme valeur de NumeroClient dans listecommandes Contrainte d intégrité.

102 102 SQL – Contraintes dintégrité référentielle Ensemble de règles définies entre plusieurs tables qui permet de garantir qu une clé pointant sur une autre table fait référence à une valeur existante. FOREIGN KEY(…) REFERENCES … ON DELETE... ON UPDATE... - ON DELETE CASCADE indique la suppression en cascade des lignes de la table étrangère dont les clés étrangères correspondent aux clés primaires des lignes effacées - ON DELETE SET NULL place la valeur NULL dans la ligne de la table étrangère en cas d'effacement d'une valeur correspondant à la clé - ON DELETE SET DEFAULT place la valeur par défaut (qui suit ce paramètre) dans la ligne de la table étrangère en cas d'effacement d'une valeur correspondant à la clé - ON DELETE RESTRICT interdit la suppression de la ligne. ON DELETE est suivi d'arguments permettant de spécifier l'action à réaliser en cas d'effacement d'une ligne de la table faisant partie de la clé étrangère :

103 103 Exemple : La suppression d un client (de son numéro NumClient) dans la table clients, va entraîner dans la table listecommandes, la suppression de toutes les lignes auquel le numéro du client (NumeroClient) correspond. CREATE TABLE clients( NumClient integer PRIMARY KEY, Nom char(30) NOT NULL, Age integer ); CREATE TABLE listecommandes( NumeroCommande integer, NumeroClient integer, DateCommande date NOT NULL, PRIMARY KEY (NumeroCommande), FOREIGN KEY (NumeroClient) REFERENCES clients(NumClient) ON DELETE CASCADE ); SQL – Contraintes dintégrité référentielle

104 104 FOREIGN KEY(…) REFERENCES … ON DELETE... ON UPDATE... - ON UPDATE CASCADE indique la modification en cascade des lignes de la table étrangère dont les clés étrangères correspondent aux clés primaires des lignes effacées - ON UPDATE SET NULL place la valeur NULL dans la ligne de la table étrangère en cas de modification d'une valeur correspondant à la clé - ON UPDATE SET DEFAULT place la valeur par défaut (qui suit ce paramètre) dans la ligne de la table étrangère en cas de modification d'une valeur correspondant à la clé - ON UPDATE RESTRICT interdit la modification d une ligne. ON UPDATE est suivi d'arguments entre accolades permettant de spécifier l'action à réaliser en cas de modification d'une ligne de la table faisant partie de la clé étrangère. SQL – Contraintes dintégrité référentielle

105 105 SQL – Destruction de tables DROP TABLE table1, table2,... ; Supprime non seulement le contenu, mais aussi la structure même des tables ainsi détruites. Commande DROP

106 106 SQL – Modification de tables Ajouter un attribut : ALTER TABLE nom_table ADD [COLUMN] nouvel_attribut type_de_donnees; Ajouter plusieurs attributs : ALTER TABLE nom_table ADD ( nouvel_attribut_1 type_de_donnees_1, nouvel_attribut_2 type_de_donnees_2,... nouvel_attribut_n type_de_donnees_n); Commande ALTER TABLE

107 107 SQL – Modification de tables Modifier un attribut : ALTER TABLE nom_table MODIFY [COLUMN] attribut nouveau_type_de_donnees; Modifier plusieurs attributs : ALTER TABLE nom_table MODIFY ( attribut_1 nouveau_ type_de_donnees_1, attribut_2 nouveau_ type_de_donnees_2,... attribut_n nouveau_ type_de_donnees_n); Commande ALTER TABLE Modifier une contrainte (nommée avec CONSTRAINT) : ALTER TABLE nom_table MODIFY CONSTRAINT nom_contrainte;

108 108 SQL – Modification de tables Supprimer un attribut : ALTER TABLE nom_table DROP [COLUMN] attribut_a_supprimer; Commande ALTER TABLE Supprimer une contrainte (nommée avec CONSTRAINT) : ALTER TABLE nom_table DROP CONSTRAINT nom_contrainte;

109 109 SQL – Insertion de lignes INSERT INTO table [(att1,att2…)] VALUES (…); Exemple : CREATE TABLE films( Num integer PRIMARY KEY, Nom char(30) NOT NULL, Annee integer, check(Annee>1900 and Annee<2007), Genre char(20) NOT NULL DEFAULT Fantastique ); INSERT INTO films VALUES (19700, Kill Bill 1, 2003, Action); INSERT INTO films (Num,Nom,Annee) VALUES (19701, Le Seigneur des Anneaux 2, 2002); L attribut « Genre » qui ne peut pas avoir une valeur NULL, prend sa valeur par défaut « Fantastique » Insertion de lignes : INSERT INTO INSERT INTO films VALUES (19701, Le Seigneur des Anneaux 2, 2002, DEFAULT);

110 110 SQL – Suppression de lignes DELETE FROM Nom_Table [WHERE Condition] ; Exemples : DELETE FROM Films WHERE Annee= 2002; Suppression de lignes : DELETE FROM DELETE FROM Films WHERE Genre= Action OR GENRE=Comédie; DELETE FROM Films; Efface toutes les données, mais garde la structure (attributs, types de données…) intacte. Equivalent : TRUNCATE TABLE Films;

111 111 SQL – Modification de données UPDATE Nom_Table SET att1 = valeur1[, att2 = valeur2,...] [WHERE Condition] Exemple : UPDATE Personnel SET Nom= Lagaffe, Service=Courrier WHERE Nom= Laggafe; Toutes les lignes de la table Personnel où Nom=« Laggafe » vont être modifiées. UPDATE

112 112 SQL – Création dune table à partir dune table existante SELECT * INTO FilmsRecents FROM Films WHERE Annee >= 2001'; Une nouvelle table « FilmsRecents » est créée à partir de la table « Films », on ne garde que les lignes où la valeur de l attribut Annee est supérieure ou égale à SELECT INTO CREATE TABLE… AS CREATE TABLE FilmsRecents AS SELECT * FROM Films WHERE Annee >= '2001';

113 113 SQL – Renommage dattributs SELECT Num FROM ListeCommandes AS CdesMorbihan WHERE CodePostal LIKE 56%; Le résultat sera une colonne nommée « CdesMorbihan » comprenant les lignes de ListeCommandes où la valeur de CodePostal commence par « 56 ». AS AS peut aussi servir à donner un autre nom (alias) aux tables.

114 114 SQL – Valeurs par défaut Définir une valeur par défaut Le langage SQL permet de définir une valeur par défaut lorsqu'un champ de la base n'est pas renseigné grâce à la clause DEFAULT. Cela permet notamment de faciliter la création de tables, ainsi que de garantir qu'un champ ne sera pas vide. La clause DEFAULT doit être suivie par la valeur à affecter. Cette valeur peut être un des types suivants : constante numérique constante alphanumérique (chaîne de caractères) le mot clé NULL le mot clé CURRENT_DATE (date de saisie) le mot clé CURRENT_TIME (heure de saisie) le mot clé CURRENT_TIMESTAMP (date et heure de saisie)

115 115 SQL – Opérations sur les dates ADD_MONTHS(d,n) : Ajoute n mois à la date d LAST_DAY(d) : Donne le dernier jour du mois de la date d MONTHS_BETWEEN(d1,d2) : Nombre de mois entre d1 et d2 NEW_TIME(d,a,b) : Donne la date et heure pour le fuseau horaire b d'une date d dans le fuseau a (a et b dépendent de la SGBD utilisée) NEXT_DAY(d,ch) : Donne la date du 1er jour de la semaine ch qui suit ou est égal à la date d SYSDATE : Date et heure courante du système TO_CHAR(d,f) : Transforme la date d en chaîne de caractères suivant le format f TO_DATE(ch,f) : Transforme la chaîne ch conforme au format f en date.

116 116 SQL – Opérations sur les types de données Concaténation de chaînes de caractères SELECT chaine1 || chaine2 || chaine3 (etc…) FROM table; Les chaînes de caractères peuvent être des attributs ou des chaînes explicites ( bonjour ) Conversion de type de données CAST( expression AS type de données ) Exemples : CAST ( as DATE);

117 117 SQL - Jointures Définition de jointures Les jointures permettent d'exploiter pleinement le modèle relationnel des tables d'une base de données. Elle sont faites pour mettre en relation deux (ou plus) tables concourant à rechercher la réponse à des interrogations. Une jointure permet donc de combiner les colonnes de plusieurs tables. La condition de la commande ON permet de comparer les tables jointes par l'intermédiaire de champs dont les valeurs sont identiques et comparables. SELECT tab.nom_champ FROM nom_table AS tab [INNER | {{LEFT | RIGHT | FULL } [ OUTER]}] JOIN nom_table2 AS tab2 ON Condition ;

118 118 SQL - Jointures INNER JOIN indique toutes les paires correspondantes des lignes renvoyées et supprime les lignes n'ayant pas de correspondance entre les deux tables. NomSuperficiePopulationMerOcean Groix230014,82Atlantique Corse Méditerranée Ouessant93215,58Atlantique Mayotte Indien Tahiti Pacifique Iles select I.Nom, I.MerOcean, V.Ville FROM Iles As I INNER JOIN VillesPrincipales As V ON I.Nom = V.Nom ; CorseMéditerranée OuessantAtlantique MayotteIndien TahitiPacifique Ajaccio Ouessant Mamoudzou Papeete NomVille CorseAjaccio Ouessant MayotteMamoudzou TahitiPapeete VillesPrincipales NoirmoutierNoirmoutier-en-l Ile

119 119 SQL - Jointures LEFT OUTER JOIN indique que toutes les lignes de la table de gauche ne respectant pas la condition de jointure sont incluses dans le jeu de résultats, et que les colonnes de sortie de l'autre table ont des valeurs NULL en plus de toutes les lignes renvoyées par la jointure interne. select I.Nom, I.MerOcean, V.Ville FROM Iles As I LEFT OUTER JOIN VillesPrincipales As V ON I.Nom = V.Nom ; Nom Groix Corse Ouessant Mayotte Tahiti MerOcean Atlantique Méditerranée Atlantique Indien Pacifique Ville Ajaccio Ouessant Mamoudzou Papeete NULL NomSuperficiePopulationMerOcean Groix230014,82Atlantique Corse Méditerranée Ouessant93215,58Atlantique Mayotte Indien Tahiti Pacifique Iles NomVille CorseAjaccio Ouessant MayotteMamoudzou TahitiPapeete VillesPrincipales NoirmoutierNoirmoutier-en-l Ile

120 120 SQL - Jointures RIGHT OUTER JOIN indique que toutes les lignes de la table de droite ne respectant pas la condition de jointure sont comprises dans le jeu de résultats, et que les colonnes de sortie correspondant à l'autre table ont des valeurs NULL en plus de toutes les lignes renvoyées par la jointure interne. select I.Nom, I.MerOcean, V.Ville FROM Iles As I RIGHT OUTER JOIN VillesPrincipales As V ON I.Nom = V.Nom ; Corse Ouessant Mayotte Tahiti Méditerranée Atlantique Indien Pacifique Ajaccio Ouessant Mamoudzou Papeete NULL Noirmoutier-en-l Ile NomSuperficiePopulationMerOcean Groix230014,82Atlantique Corse Méditerranée Ouessant93215,58Atlantique Mayotte Indien Tahiti Pacifique Iles NomVille CorseAjaccio Ouessant MayotteMamoudzou TahitiPapeete VillesPrincipales NoirmoutierNoirmoutier-en-l Ile

121 121 SQL - Jointures FULL OUTER JOIN indique qu'une ligne de la table de gauche ou de droite, ne respectant pas la condition de jointure, est comprise dans le jeu de résultats et que les colonnes de sortie correspondant à l'autre table comportent des valeurs NULL. select I.Nom, I.MerOcean, V.Ville FROM Iles As I FULL OUTER JOIN VillesPrincipales As V ON I.Nom = V.Nom ; Corse Ouessant Mayotte Tahiti Méditerranée Atlantique Indien Pacifique Ajaccio Ouessant Mamoudzou Papeete NULL Noirmoutier-en-l Ile GroixAtlantiqueNULL NomSuperficiePopulationMerOcean Groix230014,82Atlantique Corse Méditerranée Ouessant93215,58Atlantique Mayotte Indien Tahiti Pacifique Iles NomVille CorseAjaccio Ouessant MayotteMamoudzou TahitiPapeete VillesPrincipales NoirmoutierNoirmoutier-en-l Ile

122 122 SQL – Jointure complète A noter SELECT I.Nom, I.MerOcean, V.Ville FROM Iles As I FULL OUTER JOIN VillesPrincipales As V ON I.Nom = V.Nom ; est équivalent à : SELECT I.Nom, I.MerOcean, V.Ville FROM Iles As I LEFT OUTER JOIN VillesPrincipales As V ON I.Nom = V.Nom UNION select I.Nom, I.MerOcean, V.Ville FROM Iles As I RIGHT OUTER JOIN VillesPrincipales As V ON I.Nom = V.Nom;

123 123 SQL – Les vues Vue : définition Une vue est une « table virtuelle » produite par une requête de sélection. Une vue contient donc un jeu d'enregistrements constitué par une requête SELECT prédéfinie appliquée à une ou plusieurs tables d'une base de données. A la différence d'une table, une vue ne consomme pas d'espace de stockage physique mais conserve des propriétés semblables dans la mesure ou toutes les opérations de sélection, d'insertion, de mise à jour ou encore de suppression de lignes de données avec néanmoins quelques restrictions comme l'interdiction de modification d'une vue créée à partir de plusieurs tables. Les vues peuvent servir à recueillir des données régulièrement consultées et mises à jour.

124 124 SQL – Les vues Les vues sont souvent employées pour des raisons de sécurité. A l'aide de cet outil, il devient possible de ne montrer qu'une partie des données d'une table et ainsi, cacher des informations confidentielles. Le créateur de la vue en détient la propriété et les privilèges afférents à l'instar d'une table. En conséquence, le propriétaire de la vue peut accorder des droits aux différents utilisateurs de la base de données. Une vue peut être utilisée de la même façon qu'une table. Des requêtes de sélection ou de manipulation de données peuvent être appliquées à la vue. Les vues peuvent même être créées depuis dautres vues.

125 125 SQL – Les vues Syntaxe : Syntaxe : CREATE VIEW nom_vue AS SELECT (att1,att2…) FROM nom_table Exemple : CREATE VIEW v AS SELECT Quantite, PrixUnit, Quantite*PrixUnit AS Valeur FROM table1; DROP VIEW nom_vue : permet de détruire la vue RENAME nom_vue to nouveau_nom : permet de la renommer. ALTER VIEW nom_vue [(liste_d_attributs)] AS (SELECT…) : permet de modifier la vue.

126 126 SQL – Les index Notion non comprise initialement dans la norme SQL, mais utilisée couramment dans de nombreuses SGBD. Ce sont en revanche des éléments indispensables à une exploitation performante de base de données (surtout de grande dimension). En effet un index permet de spécifier au SGBDR qu'il convient de créer une structure de données adéquate afin de stocker les données dans un ordre précis. Par conséquent les recherches et en particuliers les comparaisons, notamment pour les jointures, sont notablement accélérées.

127 127 SQL – Les index Considérons le SELECT suivant : SELECT * FROM employes WHERE nom = 'MARTIN' Un moyen de retrouver la ou les lignes pour lesquelles nom est égal à MARTIN est de balayer toute la table. Un tel moyen d'accès, si la table est grande, peut conduire à des temps de réponse prohibitifs (à partir de quelques centaines de lignes). Création d index : une fois lindex créé (portant sur un ou plusieurs attributs classés par ordre croissant ou décroissant), il deviendra plus rapide daccéder aux données dans la table concernée, puisque la recherche portera sur des valeurs dindex à partir de ou jusquà une certaine limite.

128 128 SQL – Les index L'adjonction d'un index à une table ralentit les mises à jour (insertion, suppression, modification de la clé) mais accélère beaucoup la recherche d'une ligne dans la table. L'index accélère la recherche d'une ligne à partir d'une valeur donnée de clé, mais aussi la recherche des lignes ayant une valeur d'index supérieure ou inférieure à une valeur donnée, car les valeurs de clés sont triées dans l'index.

129 129 SQL – Les index Création dun index CREATE INDEX nom_index ON nom_table(attribut); CREATE INDEX nom_index ON nom_table(attribut1, attribut2, …); Suppression dun index DROP INDEX nom_index [ON nom_table];

130 130 SQL - Contrôle de l accès aux données Créer un utilisateur CREATE ROLE Permet de définir un « rôle » (entité représentant un utilisateur ou groupe dutilisateurs) dans la base de données. CREATE ROLE nom [ [ WITH ] option [... ] ]

131 131 SQL - Contrôle de l accès aux données Créer un utilisateur CREATE ROLE Exemples : CREATE ROLE jonathan LOGIN; CREATE ROLE camille WITH LOGIN PASSWORD 'jw8s0F4' VALID UNTIL ' '; CREATE ROLE ines WITH CREATEDB CREATEROLE; CREATE ROLE bretons WITH ROLE erwan, gwendal, kilian WITH ADMIN OPTION; Créer un rôle qui peut se connecter mais sans lui donner de mot de passe. Créer un rôle qui peut se connecter, avec un mot de passe associé, valide jusqu à une certaine date. Créer un rôle qui peut créer des bases de données et des rôles. Créer un rôle formé de plusieurs rôles. WITH ADMIN OPTION permet aux rôles erwan, gwendal, kilian, d autoriser à d autres rôles lappartenance à bretons.

132 132 SQL - Contrôle de l accès aux données Donner des droits GRANT GRANT [[SELECT, UPDATE, INSERT, DELETE, ALTER, INDEX] ALL] ON NomTable TO NomUtilisateur Exemples : GRANT UPDATE(Commande,Quantité) ON Commandes TO Bertrand; Bertrand a le droit de modifier les valeurs des attributs « Commande » et « Quantité » dans la table Commandes. GRANT SELECT ON Fournisseurs TO PUBLIC; Tout le monde peut utiliser la commande SELECT dans la table Fournisseurs

133 133 SQL - Contrôle de l accès aux données Retirer des droits REVOKE REVOKE [[SELECT, UPDATE, INSERT, DELETE, ALTER, INDEX] ALL] ON NomTable TO NomUtilisateur GRANT ALL ON Clients TO Sophie; REVOKE DELETE ON Clients TO Sophie; Sophie a tous les droits de lecture/écriture sur la table Clients, sauf celui de supprimer des lignes. Exemples : REVOKE UPDATE(Commande,Quantité) ON Commandes TO Bertrand; Bertrand n a plus le droit de modifier les valeurs des attributs « Commande » et « Quantité » dans la table Commandes.


Télécharger ppt "1 Bases de données Alexandre Abellard IUT Toulon – GEII Semestre 3 / 2008-09."

Présentations similaires


Annonces Google