1 / 30

Bases de données

Bases de données. SQL (Structured Query Language).  Une base de données contient des tables. Le nom et le type de chaque colonne est défini par l’utilisateur. Chaque colonne a un nom Chaque ligne correspond à un objet L’ id est une colonne définie par l’utilisateur.

lidia
Download Presentation

Bases de données

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bases de données SQL (Structured Query Language)

  2.  Une base de données contient des tables Le nom et le type de chaque colonne est défini par l’utilisateur.

  3. Chaque colonne a un nomChaque ligne correspond à un objetL’id est une colonne définie par l’utilisateur

  4. On crée, remplit et affiche les lignes de la tableau moyen du langage SQL • create table vins (idv int auto_increment primary key, region varchar (20), cepage varchar (20), annee int) • insert into vins values (0, 'Chianti', 'sangiovese', null) • insert into vins set idv=0, region='Bourgogne' • select * from vins

  5. idv int auto_increment primary key Primary key int - le champ contient un entier auto_increment - chaque fois qu’on crée une ligne contenant un id 0, une nouvelle valeur unique est insérée primary key - peut être utilisée pour identifier un objet de façon sûre (unique et structurée pour un accès rapide)

  6. Création d’une table create table vins (idv int auto_increment primary key, region varchar (20), cepage varchar (20), annee int) varchar(20) - String de 20 caractères au maximum

  7. Insertion insert intovinsvalues (0, 'Lavaux', null, 2005) • Introduit une nouvelle ligne dans la table vins. • Entre les parenthèses de values doivent apparaître une valeur par colonne et dans l’ordre. • Si l’on ne veut pas introduire une colonne particulière à l’insertion, on peut introduire null.

  8. Insertion, deuxième forme insert intovinssetidv=0, region='Bourgogne' • le set est formé d’une séquence de couples nom_de_colonne – valeur • Il peut manquer des colonnes

  9. Lecture des données select*fromvins selectvins.idv, cepagefromvins • Après le select, on peut introduire une * (toutes les colonnes) ou une liste de champs de la table. • S’il n’y a qu’une table impliquée dans la commande, il n’y a pas besoin de faire précéder le nom du champ par le nom de la table (comme cepage).

  10. Lecture de données déterminées select*fromvins where annee>2003 selectvins.idv, cepagefromvins where cepage=‘chasselas’ and annee<2000 Après where, on peut introduire une expression contenant des constantes et des champs des tables

  11. Mise à jour de lignes updatevins setannee=1999, cepage=viogner where idv = 2 updatevins setannee=annee+1where idv = 2

  12. Libraries pour appels depuis Javascript <scriptsrc='/LemanOS/dwr/engine.js'></script><scriptsrc='/LemanOS/database.js'></script>

  13. Appels depuis Javascript var result = database.query("select * from vins") // au retour de la query, result contient un tableau d’objets [ {‘idv’:1,’cepage’:’chasselas’,’region’:’Lavaux’,’annee’:2005}, {‘id’:2,’cepage’:’sangiovese’,’annee’:2002}, {‘id’:3, ‘region’:’Bourgogne’} ] // Les champs nulls n’apparaissent pas dans l’objet.

  14. Accès aux champs [ {‘idv’:1,’cepage’:’chasselas...},{‘id’:2,c’cepage’:...},{‘id’:3} ] result[0].idv result[0].cepage result[0].region result[1].idv result[1].cepage result[1].region result[2].idv result[2].cepage result[2].region result.length lignes

  15. Accès aux champs [ {‘idv’:1,’cepage’:’chasselas...},{‘id’:2,c’cepage’:...},{‘id’:3} ] Si un champ , par exemple result[0].cepage, n’est pas défini, on a typeof result[0].cepage == ‘undefined’ S’il n’y a qu’une ligne, elle est quand même placée dans [ ]

  16. Lecture d’un objet var result = [ {'a':2, 'b':3} ] for ( key in result [0] ) { document.write( result [0] [key] ) } document.close()

  17. Traitement des erreurs var result  try { result = database.query("select * from vins") } catch(e) { alert(“Erreur: “+e) return } // continue ici, en cas de succès if (result.length==0) { // pas de ligne retournée }

  18. Passage de paramètres var an=2003, cep=‘chasselas’ var result = database.query( "select * from vins where annee=? and cepage=?", an, cep ) // Le premier paramètre de query est la string contenant la // commande SQL // Un nombre arbitraire de paramètres suivent. Chaque // paramètre (nombre ou string) remplace un “?”

  19. Tableau de valeurs var data = [0, ‘Barolo’, ‘nebbiolo’, null] var result = database. query( 'insert into vins values (?)’ , data ) // data étant un array, le “?” est remplacé par les // valeurs de data séparées par des virgules // comme cette query est une action, result reçoit le // nombre de lignes modifiées: 1

  20. Objet en paramètre var vin = {'region':'Bordeaux', 'cepage':'merlot'} var result = database. query( 'insert into vins set ?’ , vin ) // vin étant un objet, le “?” est remplacé par les couples// nom-valeur de vin séparés par des virgules // result contient le nombre de lignes introduites: 1 // la clé primaire est générée automatiquement; on peut obtenir// sa valeur en appelant (après la query): idNb = database.last_insert_id()

  21. Il peut y avoir plusieurs “?” A chaque “?” doit correspondre un argument (il peut y en avoir plusieurs après la query) Un “?” peut être remplacé par un entier ou un réel une string un tableau un objet Evidemment, l’ordre des paramètres doit correspondre aux “?”, le système ne teste pas s’il est pertinent Points d’interrogation

  22. Trois façons de construire un objet Javascript function Vin(a, b, c) { this.idv = 0 this.region = a this.cepage = b this.annee = c } v = new Vin(‘Meursault’, ‘chard’) v.annee = 1999 var vin = { } vin.idv = 0 vin.region = ‘Valais’ vin.cepage = ‘chasselas‘ vin.annee = 2004 unVin = {‘idv’:0, ‘Valais’, ‘cepage’:‘chasselas‘, ’annee’:2004}

  23. Relations: vins reliés à un marchand Vins Marchands

  24. Liste des vins offerts par Luc selectvins.*from vins, marchands wherevins.marchand=marchands.idm andmarchands.nom='Luc' vins, marchands (join)

  25. Si un marchand peut fournir plusieurs vins et chaque vin peut être fourni par plusieurs marchands vinsXmarchands vins marchands

  26. Le numéro du fournisseur du Lavauxpuis son nom • selectvinsXmarchands.idmfrom vins, vinsXmarchands • where vins.region=‘Lavaux’ • and vins.idv=vinsXmarchands.idv  noMarchand select marchands.nom from marchands where marchands.idm=noMarchand  Jean

  27. Les vins fournis par Luc • select idm from marchands where marchands.nom=‘Luc’ •  noLuc • select vins.* from vins, vinsXmarchands • where vins.idv=vinsXmarchands.idv • and vinsXmarchands.idm=noLuc

  28. Les vins fournis par Luc(un seul select) select vins.* from vins, marchands, vinsXmarchands where vins.idv=vinsXmarchands.idv and marchands.idm=vinsXmarchands.idm == sur la même ligne and marchands.nom=‘Luc’ // en Javascript function findMarchandByNom(nom) { return database.query(“select vins* from vins, marchands,” +“vinsXmarchands where vins.idv=vinsXmarchands.idv” +”and marchands.idm=vinsXmarchands.idm” +”and marchands.nom=?”, nom)}

  29. Marchands Vins Stock Schéma E/R (entité-relation) 0..n 0..n fournit 1 1 1 0..n

  30. Exercices • Charger la page http://lti.epfl.ch/LemanOS/database/SQL.htmlpuis cliquez chaque ligne (éventuellement en cliquant le select * entre chaque ligne)Essayez de modifier quelques lignes • Créez les tableaux de vins et de marchands des derniers transparents précédents et affichez les vins d’un marchand et les marchands qui fournissent un vin particulier. • Mettez vos requêtes dans une fonction dans le fichier http://lti.epfl.ch/Documents/squelette.html, préparé à cet effet.

More Related