FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Dimension: px
Commencer à balayer dès la page:

Download "FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL"

Transcription

1 FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL Cette création est mise à disposition selon le Contrat Paternité-Pas d'utilisation Commerciale-Partage des Conditions Initiales à l'identique 2.0 Belgique disponible en ligne ou par courrier postal à Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA. Sommaire 1 Introduction Notions et histoire autour des bases de données Quelques éléments historiques BD relationnelle : définition BD relationnelle : les étapes de la conception Les identifiants : la clef de voûte des BD relationnelles SQL : éléments d information de base SQL : quelques prérequis sur l accès et des fonctions de base Les différentes façons d accéder à des tables de la BD de PMB Des fonctions de base en SQL SQL : les 4 commandes principales La commande SELECT La commande UPDATE La commande INSERT La commande DELETE SQL : la fonction de join et les sous-requêtes Utilisation des alias pour interroger deux tables simultanément Les commandes join Utilisation des sous-requêtes SQL : quelques fonctions d agrégat et autres fonctions avancées Fonctions de regroupement ou de tri Fonctions arithmétiques Traitement de chaînes de caractères Pour aller plus loin à propos de (My)SQL Introduction Ce document a pour but de présenter brièvement les bases de données relationnelles et de donner quelques notions et requêtes de base en SQL. 2 Notions et histoire autour des bases de données Cette partie décrit le contexte dans lequel sont nées les BDs, donne la définition des BD relationnelles, quelques éléments d information à propos de leur conception et finalement, présente les identifiants, clefs de voûte des BD relationnelles. Cécile GASS juillet

2 2.1 Quelques éléments historiques Les bases de données (BD) ont des ancêtres : les systèmes de fichiers. Avant l avènement des bases de données telles qu on les connaît aujourd hui, les données étaient rassemblées sous forme de listes ou fichiers plus ou moins organisés. Ceux-ci étaient crées par des programmes, qui pouvaient les modifier. Le partage de ces données entre plusieurs applications, ou la mise à jour simultanée par plusieurs programmes étaient difficiles. Au fur et à mesure des progrès en informatique, les fichiers furent de plus en plus structurés, ils étaient mis en réseau et plusieurs modèles d organisation se faisaient concurrence. Finalement, les BD relationnelles se sont petit à petit imposées dans les années 70. Les années 80 virent les premières grosses applications basées sur des BD relationnelles, qui finirent par dominer largement dans les années 90. Depuis les années 80, le SQL (Structured Query Language), langage utilisé pour manipuler les données de ces BD, s est imposé en raison de sa simplicité mais il existe plusieurs SQL : des SQL propriétaires (comme oracle, sybase ou IBM) ; et d autres qui sont libres (tels mysql ou firebird) ; ils sont de plus en plus performants et robustes ; c est un langage qui convient particulièrement aux petites applications de la microinformatique. Entre les données de la BD ; et le langage SQL qui permet aux applications de les manipuler, le Système de gestion de la BD (SGBD) détermine comment réagir aux requêtes SQL exprimées dans les applications. PMB, logiciel libre, est nativement conçu pour fonctionner avec Mysql qui est tout à la fois: - un SGBD ; - un serveur de BD relationnelles ; - un logiciel ouvert compatible avec de nombreuses applications et plateformes, supportant un grand nombre de pilotes, et des standards ouverts. 2.2 BD relationnelle : définition Une base de données est une collection organisée de données i.e. il existe une structure logique qui lie ces données entre elles pour en faciliter l'accès et le traitement. A une BD est normalement associée la notion de dépôt, c est-à-dire que : - les informations sont disponibles pour tous à partir d'un endroit unique ; - l'observation des données du dépôt renseigne sur la structure et les états du domaine d'application qui est décrit ; - des applications s'y connectent généralement pour mettre à jour les données de la BD. Une BD relationnelle est un ensemble de fichiers ou tables de données liées entre elles, en particulier par des données particulières, les identifiants (encore appelés clef primaire) 1. Un certain nombre de fonctions simples, comme la gestion de l espace de stockage pour les tables, sont prises en charge par le SGBD, indépendamment des applications qui traitent les données. Avantages des BD relationnelles : indépendance des données par rapport aux applications ; suppression des redondances de données : les requêtes SQL permettent de présenter ensemble des données appartenant à des tables différentes ; simplicité du modèle. Faiblesses des BD relationnelles : peu de types de données différents sont admis, et ils sont fixés à l'avance ; les transactions longues ou interactives sont mal prises en charge ; certaines contraintes doivent être prises en charge par les applications alors qu'elles auraient pu être prises en charge par le SGBD. Par ailleurs, la complexification des systèmes aujourd hui semble imposer une évolution des BD relationnelles vers la technologie objet. 2.3 BD relationnelle : les étapes de la conception Une BD se conçoit généralement en trois phases, qui sont autant de points d observation ou représentation des données relatives à un domaine de la vie réelle : 1 Plus d informations dans la partie 2.4 Les identifiants : la clef de voûte des BD relationnelles. Cécile GASS juillet

3 1) un schéma entité-relation (ou entité-association) présente, dans une forme en principe compréhensible par un être humain, la façon dont les données de la BD sont structurées en différentes tables, leurs domaines de définition, les relations qui lient ces tables entre elles, les contraintes qui s'appliquent sur ces données et relations ; 2) le schéma entité-relation peut ensuite être traduit en un modèle relationnel, grâce, en particulier, à la théorie des ensembles. Ce modèle traduit les entités, relations et certaines contraintes du schéma entité-relation en tables concrètes ; 3) le modèle relationnel conduit, souvent par l intermédiaire d un logiciel, à la création effective de la BD, qui devient interrogeable par les applications, via SQL. Cette représentation précise comment sont physiquement stockées les données : taille des fichiers, fichiers d'indexe, positions, etc. Les développeurs de PMB mettent à disposition des utilisateurs, des informations à propos de la structure de la BD relationnelle sur laquelle est basé le logiciel ; en particulier : le fichier Répertoire_de_PMB\doc\noyau\scheme.gif présente le schéma entité-relation de la BD de PMB, il est en principe mis à jour à chaque nouvelle version de PMB ; dans PMB, via l onglet Administration, menu gauche Outils, le menu supérieur Description des tables donne le modèle relationnel de la BD de PMB. A titre d exemple, des parties du schéma entité-relation ; du modèle relationnel ; et de la BD relationnelle de PMB sont reproduites ci-dessous : Extrait du schéma entité-relation de la BD de PMB, version Extrait du modèle relationnel de la BD PMB, version (table exemplaires) Cécile GASS juillet

4 Extrait de la BD de PMB, version (table collections) 2.4 Les identifiants : la clef de voûte des BD relationnelles Véritable clef de voûte de toutes les BD relationnelles, les identifiants sont présents dans chaque table de chaque BD et sont toujours des nombres entiers, et uniques au sein de chaque table. Cécile GASS juillet

5 En fait, chaque enregistrement d une table est reconnu par un tel identifiant unique (au sein de cette table). Et les relations entre les tables de la BD s établissent sur base de ces identifiants, comme l illustre le schéma ci-dessous, qui reprend : - un extrait (fictif) de deux notices de PMB, telles qu elles pourraient apparaître à l OPAC ou dans l interface administrateur de PMB ; - les extraits des tables (très partiellement reproduites) correspondant à ces notices, pour ce qui concerne les auteurs et les éditeurs, i.e. les tables de la BD de PMB impliquées sont : notices, publishers, responsibility et authors. Dans ce schéma, les colonnes des tables concernées correspondant aux identifiants sont systématiquement remplies en couleurs (rouge pour les identifiants des notices, vert pour les identifiants des auteurs et mauve pour les identifiants des éditeurs). Ce schéma montre par exemple que l auteur Langlois, Claudie est reconnu, dans la table authors par l identifiant (author_id) 2. PMB permet d associer un grand nombre d auteurs aux notices, grâce à la table responsability. Notre auteur est ainsi reconnu dans cette table par son identifiant (ici intitulé responsability_author), et est lié à la notice d identifiant responsability_notice égal à 1, ce qui correspond à la notice de titre Nimitz. On retrouve également cet auteur dans la notice d identifiant 2, puisque la table responsability y associe également cette notice à cet auteur. Ainsi, à chaque fois que PMB devra associer un auteur avec d autres données n appartenant pas à la table authors, il se servira de l identifiant de cet auteur (author_id = 2) pour mettre ces éléments en relation. Extrait des Notices telles qu elles pourraient apparaître dans un OPAC Numéro Not. Titre Auteur Editeur 1 Nimitz Robinson, Patrick; A. Michel Langlois, Claudie 2 L'adagio d'albino Favulier, Jacques; A. Michel; Forlane Langlois, Claudie Extrait de la table Notices notice_id tit1 ed1_id Ed2_id 1 Nimitz 1 2 L'adagio d'albino 1 2 Extrait de la table Publishers ed_id ed_name 1 A. Michel 2 Forlane Extrait de la table Responsability responsability_notice responsability_author Extrait de la table Authors author_id author_name 1 Robinson, Patrick 2 Langlois, Claudie 3 Favulier, Jacques Comme nous pouvons le voir dans l exemple ci-dessus, la présence des identifiants permet d enregistrer dans des tables différentes, les données qui représentent par essence des entités Cécile GASS juillet

6 différentes. Ainsi, la BD de PMB comporte une table notices, une table authors, une troisième table publishers, etc. ; ce sont les identifiants qui nous permettent de retrouver quel auteur, quel éditeur, vont avec quelle notice. Ces identifiants seront donc naturellement largement utilisés dans les requêtes SQL que nous allons voir maintenant. 3 SQL : éléments d information de base Nous avons déjà signalé qu il existait plusieurs SQL ; en réalité, les différences résident d avantage dans les performances pour les très grands volumes de données, ainsi que certaines fonctions ajoutées dans l une ou l autre des versions. Sur le fond, les commandes les plus utilisées ont la même signification à travers les différents langages SQL. Le travail présenté ici se base sur le langage MySQL (version 4.1.9). Cette partie énonce premièrement quelques prérequis concernant l accès à une BD dans MySQL et des fonctions de base ; décrit ensuite les commandes principales en SQL ; puis elle aborde la fonction de join entre tables ; et des fonctions d agrégation. Quelques requêtes et commandes typiques sont finalement présentées. Le lecteur trouvera également quelques références pour aller plus loin en fin de partie. 3.1 SQL : quelques prérequis sur l accès et des fonctions de base D une façon générale, nous allons voir dans cette partie comment modifier des données de la BD de PMB. ATTENTION : à l exception des requêtes de sélection, qui ne peuvent engendrer, au pire, qu un blocage temporaire de PMB lorsqu une requête retournant un très grand nombre de résultats est exécutée, il est TRES dangereux de modifier, via des requêtes SQL, le contenu de la BD. En effet, un certain nombre de règles encodées dans la partie applicative de PMB, garantit la cohérence de la base ; ces règles ne seront pas vérifiées si vous exécutez une requête qui va modifier la base ; vous risquez donc de la corrompre, et par la même, de perdre tout votre catalogue. Il est donc fortement conseillé d essayer les requêtes de mise à jour de la BD que vous souhaitez appliquer sur un PMB de TEST Les différentes façons d accéder à des tables de la BD de PMB Il est possible d interagir avec la BD de PMB, directement à partir du logiciel, par deux voies différentes : via les procédures d action s appliquant aux contenus des Paniers de PMB : le menu Gestion des procédures permet en effet, via des requêtes écrites en SQL, de visualiser, modifier, ou effacer des notices et/ou des exemplaires du catalogue 2, ou ; via les Actions personnalisables (de l onglet Administration, menu gauche Outils) : le bibliothécaire peut créer ici toute requête en SQL permettant d agir directement sur le contenu de la BD, pour virtuellement tout faire 3. Ceci permet par exemple de construire des requêtes permettant de sortir des inventaires pour le recollement ou le désherbage. Attention : si les requêtes sont exécutées directement dans PB, aucun saut de ligne n est admis entre le début et la fin de la requête (qui doit se terminer par ;). Si votre configuration le permet, vous pouvez accéder à la BD de PMB via l interface de MySQL. Lorsque l installation s est faite via EasyPHP, l accès se fait via le menu Administration d EasyPHP, en cliquant sur le menu GESTION BDD. L utilisateur n a plus qu à choisir la BD de PMB (par défaut, il s agit de bibli) pour accéder à l ensemble des tables et données contenues dans la BD. 2 Certaines procédures sont déjà définies dans PMB. 3 Quelques Actions personnalisables sont déjà encodées dans PMB. Cécile GASS juillet

7 Enfin, lorsque PMB est installé sous Windows, il est possible d accéder à la BD de PMB via la fenêtre de commande DOS, par la commande c:\répertoire_où_est_installé_mysql\mysql u bibli pbibli (si PMB a été installé en respectant les paramètres par défaut). Cette interface n étant pas graphique, elle peut sembler beaucoup plus aride à utiliser, mais c est celle qui est la moins gourmande en ressources Des fonctions de base en SQL Quelques remarques préliminaires : les commandes répertoriées dans cette partie sont essentiellement utiles lorsque MYSQL est accédé via une fenêtre de commande DOS ; par défaut, les résultats d'une requête sont présentés en tableau, dont la 1ère ligne contient le nom des colonnes participant à la requête. Après les résultats, MySQL indique le nombre de lignes concernées et le temps 'logiciel' d'exécution de la requête 4 ; les mots des requêtes sont insensibles à la casse utilisée, mais les noms des bases de données, tables et colonnes peuvent l'être (en fonction du système d'exploitation, p.e. sur Unix, la casse est importante) ; toutes les commandes SQL doivent se terminer par point-virgule. Une requête peut être écrite sur plusieurs lignes : MySQL ne tente d'exécuter une requête que lorsqu'il trouve un ; une date doit être encodée en suivant le format AAAA-MM-JJ. Le tableau ci-dessous répertorie quelques commandes pouvant être utiles : Commande Mysql mysql --help mysql -h hote -u utilisateur -p nomdelabase quit Action donne la liste des options possibles pour mysql (ou de toute autre fonction) connection au serveur MySQL (nomdelabase est optionnel). Le mot de passe sera demandé par la commande quitte MySQL \c annule une requête SQL en cours d'édition USE nomdelabase utilise spécifiquement la base de donnée nomdelabase. Si la commande est réussie, mysql retourne le message database changed SHOW DATABASES SHOW TABLES CREATE nomdelabase DATABASE CREATE TABLE nomtable (nomcol1 TYPE, nomcol2 TYPE, etc.) DESCRIBE nomtable LOAD DATA LOCAL INFILE "nomfichier.txt" INTO TABLE nomtable montre les BDs existantes sur le serveur MySQL montre les tables déjà crées dans la base utilisée crée la base de données nomdelabase. crée la table nomtable : il faut indiquer le nom de chaque colonne de la table (i.e. nomcol1, etc.), et préciser son type 5 ; peuvent aussi être précisés : une valeur par défaut ; si une valeur doit être incrémentée, etc. indique les colonnes ; leurs types ; si aucune valeur n'est encore encodée ; s'il s'agit d'une clef (ou identifiant) ; la valeur par défaut éventuellement encodée, etc. de la table nomtable insère directement le contenu d'un fichier dans la table nomtable qui doit déjà exister 6 * remplace toutes les colonnes d une table (p.e. SELECT *) 4 Il ne s agit que d une indication, et n est pas lié au temps d'exécution machine 5 Quelques types courants : text, varchar, enum, etc. 6 Le fichier doit respecter l ordre, le nombre, et le type de données attendus dans la table. Cécile GASS juillet

8 3.2 SQL : les 4 commandes principales Les 4 commandes principales en langage SQL sont : SELECT, UPDATE, INSERT et DELETE, que nous allons aborder successivement La commande SELECT La commande SELECT permet de visualiser le contenu ou une partie de celui-ci d'une ou plusieurs 7 tables d'une BD relationnelle. Une requête SELECT doit respecter la syntaxe suivante : SELECT liste_colonnes FROM nomtable WHERE liste_conditions 8, où : liste_colonnes est la liste des colonnes qui apparaîtront dans la réponse à la requête. S il y a plusieurs colonnes, elles doivent être séparées par des virgules ; nomtable indique sur quelle table la requête SELECT va porter ; liste_conditions est une liste de conditions, séparées par des virgules, que doivent vérifier les valeurs de la table pour répondre à la requête SELECT. Ces conditions peuvent arborer des opérateurs de comparaisons (p.e. pour n afficher que les personnes d une table joueurs pour lesquelles l âge est >=5) ; des opérateurs logiques entre colonnes qui sont : AND, OR, NOT (n affichera que les enregistrements ne vérifiant pas la condition qui succède à cet opérateur) et XOR (n affiche que les résultats qui vérifient uniquement l une des 2 conditions séparées par l opérateur) ; p.e. pour n afficher que les personnes d une table joueurs pour lesquelles l âge est >=5 ET dont l état de santé est bon. A propos de liste_conditions : sont listées ici les principales conditions, en dehors des opérateurs de comparaison et des opérateurs logiques entre colonnes, susceptibles d être utilisées dans les requêtes SQL : IN et NOT IN : permet de spécifier un intervalle de valeurs possibles (ou impossibles si NOT IN est utilisé). La syntaxe est : IN (valeur1, valeur2, valeur3) (ou NOT IN ). Attention, si les valeurs de l intervalle considéré sont du texte, il faudra écrire : IN ( valeur1, valeur2, valeur3 ). Ce type de condition est utile p.e. pour n afficher que les personnes de la table joueurs qui habitent IN ( Bruxelles, Gand, Namur ). LIKE et NOT LIKE : ce type de condition est utilisé en combinaison avec % pour représenter une chaîne de caractère de longueur quelconque ; ou avec _ pour remplacer un caractère unique. La syntaxe est : NOT LIKE 'chainedecarac%' ; une requête utilisée avec cette condition retournera tous les enregistrements où les valeurs d une colonne particulière ne commencent pas par chainedecarac. Ce type de condition est essentiellement utilisé pour des valeurs de type chaîne de caractères, et requiert dans ce cas aussi l utilisation de guillemets 9. La condition LIKE 'b%' permet p.e. de retrouver toutes les personnes de la table joueurs dont le nom commence par b ; BETWEEN : ce type de condition est utilisé pour retrouver les enregistrements dont la valeur d une colonne se situe entre deux valeurs extrèmes. La syntaxe est : BETWEEN 7 AND 10. A propos de liste_colonnes les alias : l utilisation d alias permet de faire afficher les résultats des requêtes en SQL avec des intitulés plus explicites que les noms des colonnes de la table concernée. La 7 Les requêtes s appliquant sur plusieurs tables simultanément sont abordées dans la partie 3.3 la fonction de join. 8 Les fonctions d agrégat GROUP BY liste de colonnes, HAVING liste de conditions et ORDER BY liste de colonnes peuvent être ajoutées à cette syntaxe. Ces fonctions sont abordées dans la partie 3.4 SQL : quelques fonctions d agrégat. 9 Attention, il convient d utiliser les guillemets simples. Cécile GASS juillet

9 syntaxe est : vrai_nom_colonne AS NouveauNomPlusExplicite ; p.e. jname AS NomJoueur permet d afficher l intitulé NomJoueur plutôt que jname pour les joueurs répondant à une requête ; utilisation du mot réservé DISTINCT : ce mot réservé permet de supprimer les doublons des résultats à afficher répondant à une requête. Il suffit pour cela d ajouter ce mot avant l énumération de liste_colonnes. Exemples de requête SELECT La requête suivante sélectionne les titres et nombre de pages des documents catalogués qui arborent moins de 50 pages (pour les lecteurs débutants!). Seront affichés les titres des documents concernés et leur nombre de pages respectifs, sous les intitulés Titre et NombreDePages. SELECT tit1 AS Titre, npages AS NombreDePages FROM notices WHERE npages < 100; La requête suivante sélectionne les titres comportant le mot Loire et ayant plus de 50 pages : SELECT tit1, npages FROM notices WHERE tit1 like ' %Loire%' AND npages > 50; La requête suivante sélectionne les différentes dates de naissance et mort des auteurs du catalogue : SELECT DISTINCT author_date FROM authors; Remarque : des fonctions assez élaborées de formatage des chaînes de caractères sont également susceptibles d être utilisées ; elles sont décrites dans la partie 3.4 SQL : quelques fonctions d agrégat et autres requêtes avancées La commande UPDATE La commande UPDATE permet de mettre à jour le contenu ou une partie de celui-ci d'une ou plusieurs 10 tables d une BD relationnelle. Attention : l utilisation de la commande UPADTE peut entièrement corrompre la BD de PMB ; elle doit être utilisée avec une grande précaution, préférablement sur un PMB de test. Une requête UPDATE doit respecter la syntaxe suivante : UPDATE nomtable SET mises_a_jour_col WHERE liste_conditions 11, où : nomtable indique sur quelle table la requête UPDATE va porter ; mises_a_jour_col indique les colonnes à modifier et les nouvelles valeurs qu il faut leur attribuer. La syntaxe est : nom_col1_a_modifier = nouvelle_valeur1, nom_col2_a_modifier = nouvelle_valeur2, etc. Les chaînes de caractères requièrent l utilisation de guillemets 12 ; liste_conditions est une liste de conditions, séparées par des virgules, que doivent vérifier les valeurs de la table pour répondre à la requête UPDATE. Les mêmes conditions que pour la commande SELECT peuvent être utilisées. Exemple de requête UPDATE La requête suivante remplace le ed_pays par la valeur France pour tous les éditeurs dont la ed_ville vaut Paris. UPDATE publishers SET ed_pays='france' WHERE ed_ville='paris'; 10 Les requêtes s appliquant sur plusieurs tables simultanément sont abordées dans la partie 3.3 la fonction de join. 11 Les fonctions d agrégat GROUP BY liste de colonnes, HAVING liste de conditions et ORDER BY liste de colonnes peuvent être ajoutées à cette syntaxe. Ces fonctions sont abordées dans la partie 3.4 SQL : quelques fonctions d agrégat et autres requêtes avancées. 12 Attention, il convient d utiliser les guillemets simples. Cécile GASS juillet

10 3.2.3 La commande INSERT La commande INSERT permet d ajouter un enregistrement où certaines valeurs de celui-ci à une table d une BD relationnelle ; elle peut aussi créer une nouvelle table (voir plus bas). L utilisation de la commande INSERT nécessite de bien connaître la table dans laquelle l enregistrement doit être inséré, à la fois pour l ordre des colonnes et le type de données à insérer. Une requête INSERT doit respecter la syntaxe suivante : INSERT INTO nomtable (liste_colonnes) VALUES (liste_valeurs), où : nomtable indique sur quelle table la requête INSERT va porter ; liste_colonnes indique les colonnes, séparées par des virgules, pour lesquelles des valeurs seront insérées ; liste_valeurs est la liste des valeurs à attribuer à l enregistrement, séparées par des virgules, et dans le même ordre que la liste_colonnes. Les chaînes de caractères requièrent l utilisation de guillemets 13. Exemple de requête INSERT La requête suivante insère l auteur Vargas, Fred, avec l identifiant 50, le type personne physique (qui est connu par l identifiant 70), sans rejet, date de naissance, ni renvoi (donc 0), site web ni commentaire : INSERT INTO authors (author_id, author_type, author_name, author_rejete, author_date, author_see, author_web, index_author, author_comment) values (50, '70', 'Vargas, Fred', '', '', 0, '', '', ''); Attention : nous insérons ici un auteur ayant comme identifiant 50. Cette commande aurait échoué si un auteur reconnu par cet identifiant existait déjà dans la BD ; cette opération nécessite donc d aller vérifier quel est le dernier identifiant utilisé dans cette table La commande DELETE La commande DELETE permet d effacer un ou plusieurs enregistrement(s) d'une ou plusieurs 15 tables d une BD relationnelle. Attention : l utilisation de la commande DELETE peut entièrement corrompre la BD de PMB (p.e. en effaçant un enregistrement dont l identifiant est utilisé dans une autre table) ; elle doit être utilisée avec une grande précaution, préférablement sur un PMB de test. Une requête DELETE doit respecter la syntaxe suivante : DELETE FROM nomtable WHERE liste_conditions 16, où : nomtable indique sur quelle table la requête DELETE va porter ; liste_conditions est une liste de conditions, séparées par des virgules, que doivent vérifier les valeurs de la table pour répondre à la requête DELETE. Les mêmes conditions que pour la commande SELECT peuvent être utilisées. Exemple de requête DELETE La requête suivante efface de la table authors l auteur Vargas, Fred inséré précédemment. 13 Attention, il convient d utiliser les guillemets simples. 14 Pour accéder au contenu des tables de la BD de PMB, voir partie 3.1 SQL : quelques prérequis sur l accès et des fonctions de base. 15 Les requêtes s appliquant sur plusieurs tables simultanément sont abordées dans la partie 3.3 la fonction de join. 16 Les fonctions d agrégat GROUP BY liste de colonnes, HAVING liste de conditions et ORDER BY liste de colonnes peuvent être ajoutées à cette syntaxe. Ces fonctions sont abordées dans la partie 3.4 SQL : quelques fonctions d agrégat et autres requêtes avancées. Cécile GASS juillet

11 DELETE FROM authors WHERE author_name ='Vargas, Fred'; Attention : nous effaçons ici un auteur ayant comme nom Vargas, Fred. Si l identifiant de cet auteur avait été utilisé dans une autre table (p.e. la table notices), nous aurions par cette action, corrompu la BD de PMB. 3.3 SQL : la fonction de join et les sous-requêtes Nous avons vu que l identifiant jouait, dans les BD relationnelles, un rôle fondamental de liant entre les tables ; c est lui qui va, p.e., nous permettre de relier les auteurs, éditeurs, etc. aux notices dans lesquelles ils sont censés apparaître. Du point de vue de la base de données, cette liaison s établit grâce aux fonctions de join et aux sous-requêtes, qui permettent d interroger simultanément deux (ou plus) tables. Cette partie donne d abord quelques prérequis qui nous seront utiles pour présenter ensuite les différentes fonctions de join existant en Mysql ; en dernière partie, nous verrons brièvement les sous-requêtes Utilisation des alias pour interroger deux tables simultanément Nous avons vu que les alias permettaient de faire afficher les résultats d une requête précédés de noms plus explicites que les noms des colonnes utilisés dans les tables de la BD 17. Nous allons voir ici un autre rôle utile des alias : un alias peut remplacer le nom d une table. Dès qu une requête fait appel à plusieurs tables simultanément, il est préférable de faire précéder chaque nom de colonne prenant part à la requête, du nom de la table de laquelle elle est issue, suivi d un point 18. Ainsi, si nous voulons parler de la colonne author_name de la table authors, nous préférerons utiliser authors.author_name pour désigner cette colonne dans notre requête. Cependant, pour raccourcir les requêtes, il est possible de remplacer le nom des tables par des alias, sorte de surnom de table, et qui seront beaucoup plus courts que le nom des tables elles-mêmes. La syntaxe est : pour définir l alias dans la requête : nomtable AS n ; où n est l alias de la table nomtable 19 ; pour utiliser l alias dans la requête : n.nomcolonne ; où nomcolonne est une colonne de la table nomtable qui participe à la requête. Exemple d utilisation d un alias dans une requête Nous pouvons réécrire notre première requête : SELECT tit1 AS Titre, npages AS NombreDePages FROM notices WHERE npages < 100; en utilisant l alias n pour la table notices : SELECT n.tit1 AS Titre, n.npages AS NombreDePages FROM notices AS n WHERE n.npages < 100; Evidemment, pour une requête simple portant sur une seule table, l utilisation d alias paraît compliquer les choses nous allons en fait voir comme il est utile dans la suite! Les commandes join La commande join permet d interroger des tables, le plus souvent 2, simultanément, pour trouver les enregistrements, appartenant aux tables impliquées, qui sont liés par leurs 17 Voir la partie La commande SELECT. 18 Cette bonne habitude trouvera tout son sens dès lors que plusieurs tables impliquées dans une requête de join arborent des colonnes portant le même nom. Dans ce cas, l alias est obligatoire, afin que le SGBD sache à quelle table appartiennent les colonnes homonymes. 19 Bien évidemment, l utilisateur est libre de choisir un alias de son choix! Cécile GASS juillet

12 identifiants. Ainsi, on retrouvera généralement dans l une des tables impliquées, une colonne prenant pour valeurs, les identifiants de l autre (ou des autres) table impliquée. Exemple : retrouver le 1 er éditeur d une notice particulière dans PMB Nous avons vu, dans le schéma de la partie 2.4 Les identifiants : la clef de voûte des BD relationnelles, que, dans la BD de PMB : les coordonnées des éditeurs étaient enregistrées dans la table publishers. Un identifiant est associé à chaque éditeur ; il est stocké dans la colonne ed_id ; d autre part, la table notices recueille une majorité d information concernant les notices du catalogue. Dans cette table, la colonne ed1_id prend comme valeurs les identifiants enregistrés dans la table publishers, dans la colonne ed_id. Ainsi, la notice d identifiant notice_id 1, de titre Nimitz a pour 1 er éditeur, l éditeur d identifiant ed1_id égale à 1. Dans la table publishers, l éditeur d identifiant ed_id égale à 1 correspond à l éditeur de nom A. Michel. Nous aurions pu retrouver cette correspondance à l aide d une requête join mais il existe plusieurs façons d utiliser la commande join, ce que nous allons voir à présent. Les différentes commandes join En réalité, la première commande join ne fait pas appel à la commande join ; elle combine l interrogation de deux tables, et matérialise le lien d identifiants dans la commande where. La syntaxe est la suivante, en utilisant les alias pour remplacer les noms de tables : SELECT liste_colonnes FROM nomtable1 AS n1, nomtable2 AS n2 WHERE n1.colid_ref_t1=n2.collid_t2 AND liste_conditions 20, où : liste_colonnes est la liste des colonnes, séparées par des virgules, susceptibles d appartenir à l une et à l autre table, qui apparaîtront dans la réponse à la requête ; nomtable1 indique la première table sur laquelle va porter la requête SELECT, et nomtable2 est la seconde table concernée ; la condition n1.colid_ref_t1=n2.collid_t2, après le mot clef WHERE représente le lien qui existe entre les 2 tables, i.e. les égalités d identifiants que les enregistrements des deux tables devront vérifier pour répondre à la requête : collid_ref_t1 est la colonne de la table nomtable1 accueillant comme valeurs les identifiants de la table nomtable2 ; collid_t2 est la colonne des identifiants de la table nomtable2. Cette condition est obligatoire pour une commande de join ; liste_conditions est une liste de conditions, séparées par des virgules, que doivent vérifier les valeurs des tables pour répondre à la requête SELECT. Les mêmes conditions que pour la commande SELECT simple peuvent être utilisées. Cette commande n affiche que les enregistrements des 2 tables ayant en commun l identifiant repéré par la condition n1.colid_ref_t1=n2.collid_t2 : les enregistrements de la table nomtable1 n ayant pas comme valeur pour la colonne colid_ref_t1 la même valeur pour l un des enregistrements de la table nomtable2 n apparaîtront pas dans les résultats, et ; les enregistrements de la table nomtable2 n ayant pas comme identifiant (colonne collid_t2) une même valeur de la colonne colid_ref_t1 de la table nomtable1 n apparaîtront pas non plus dans les résultats à la requête de join entre ces tables. Par contre, Mysql permet de faire apparaître ces enregistrements exclus, lorsque l une des (autres) commandes de join est utilisée 21 ; plus précisément : 20 Les fonctions d agrégat GROUP BY liste de colonnes, HAVING liste de conditions et ORDER BY liste de colonnes peuvent être ajoutées à cette syntaxe. Ces fonctions sont abordées dans la partie 3.4 SQL : quelques fonctions d agrégat. 21 Nous ne mentionnons pas ici les commandes INNER JOIN (dont les résultats sont les mêmes que ceux de la première commande join décrite dans ce document : celle qui n utilise justement pas la commande join mais qui utilise directement la condition d égalité des identifiants entre les 2 tables) ; STRAIGHT_JOIN (est semblable à la commande JOIN mais la 1 ère table rencontrée est toujours lue en Cécile GASS juillet

13 lorsque la commande FULL OUTER JOIN est utilisée : les enregistrements des deux tables impliquées apparaissent dans les résultats de la requête, mais les valeurs NULL sont renseignées pour tous les enregistrements pour lesquels un identifiant n existe que dans une des deux tables ; lorsque la commande LEFT OUTER JOIN est utilisée : tous les enregistrements de la 1 ère table rencontrée dans la requête apparaissent dans les résultats, et la valeur NULL apparaît pour tous les enregistrements de la seconde table pour lesquels un identifiant n existe que dans la 1 ère table ; lorsque la commande RIGHT OUTER JOIN est utilisée : tous les enregistrements de la seconde table rencontrée dans la requête apparaissent dans les résultats, et la valeur NULL apparaît pour tous les enregistrements de la 1 ère table pour lesquels un identifiant n existe que dans la seconde table. Pour ces trois commandes OUTER JOIN, la syntaxe, différente de la première commande décrite, est la suivante : SELECT liste_colonnes FROM nomtable1 AS n1 XXX OUTER JOIN nomtable2 AS n2 ON n1.colid_ref_t1=n2.collid_t2 WHERE liste_conditions 22, où : liste_colonnes est la liste des colonnes, séparées par des virgules, susceptibles d appartenir à l une ou à l autre table, qui apparaîtront dans la réponse à la requête ; nomtable1 indique la première table sur laquelle va porter la requête SELECT, et nomtable2 est la seconde table concernée ; XXX peut prendre au choix une valeur parmi les 3 citées plus haut, i.e. FULL, LEFT ou RIGHT en fonction des résultats souhaités ; ON n1.colid_ref_t1=n2.collid_t2 a le même rôle que celui qui est décrit dans la syntaxe de la première commande join décrite ; liste_conditions est une liste de conditions, séparées par des virgules, que doivent vérifier les valeurs des tables pour répondre à la requête SELECT. Les mêmes conditions que pour la commande SELECT simple peuvent être utilisées. La 1 ère forme de join sera utilisée lorsqu il s agit de reconstituer des enregistrements complets de données réparties entre plusieurs tables (p.e. les auteurs de certaines notices) ; l une ou l autre des autres commandes de join seront utilisées lorsqu il s agira, au contraire, d identifier les enregistrements n appartenant qu à l une ou l autre des tables impliquées (p.e. pour identifier les auteurs qui ne sont utilisés dans aucune notice). Exemples de requêtes utilisant des commandes JOIN La requête suivante affiche les titres et les auteurs des notices dont le nom d auteur comporte les lettres el : SELECT n.tit1, a.author_name FROM notices AS n, authors AS a, responsability AS r WHERE n.notice_id = r.responsability_notice AND r.responsability_author = a.author_id AND author_name like '%el%'; Cette requête nécessite la participation de 3 tables pour pouvoir associer un auteur à une notice. premier. Cette condition ne doit être utilisée que lorsque MySql commet une erreur de performance en commençant l exécution de la requête par la seconde table) ; ni NATURAL JOIN (qui ne concernent que les colonnes qui existent dans les 2 tables impliquées). Plus d information à propos de ces commandes sont disponibles sur et 22 Les fonctions d agrégat GROUP BY liste de colonnes, HAVING liste de conditions et ORDER BY liste de colonnes peuvent être ajoutées à cette syntaxe. Ces fonctions sont abordées dans la partie 3.4 SQL : quelques fonctions d agrégat. Cécile GASS juillet

14 La requête suivante affiche les identifiants, le titre des notices, et le descripteur pour les notices ayant été indexées avec un descripteur de thesaurus commençant par Littérature : SELECT n.notice_id, n.tit1, ca.libelle_categorie FROM notices AS n, notices_categories AS nc, noeuds AS no, categories AS ca WHERE n.notice_id = nc.notcateg_notice AND nc.num_noeud = no.id_noeud AND no.id_noeud = ca.num_noeud AND ca.libelle_categorie LIKE 'Littérature%'; Cette requête est relativement simple, bien qu elle mette en jeu 4 tables différentes (notices, categorie, nœuds et notice_categories) ; il convient de bien penser à ajouter toutes les conditions de join requises (3 conditions pour 4 tables). La requête suivante affiche les éditeurs définis dans le catalogue mais qui n appartiennent encore à aucune notice, avec suppression des doublons : SELECT DISTINCT p.ed_name FROM publishers AS p LEFT OUTER JOIN notices AS n ON p.ed_id = n.ed1_id; La requête suivante remplace la section des exemplaires dont le code barres commence par et ayant comme section Romans Jeunes par la section correspondant à Documentaires Jeunes : SELECT idsection FROM docs_section WHERE section_libelle= 'Documentaires Jeunes'; UPDATE exemplaires AS e, docs_section AS ds SET e.expl_section=25 WHERE e.expl_section = ds.idsection AND e.expl_cb like ' %' AND ds.section_libelle like 'Romans Jeu%'; Cette requête se déroule en 2 temps : recuperation de l idsection de la table docs_section correspondant à Documentaires Jeunes (le résultat de cette 1 ère requête est 25) ; puis mise à jour, dans la table exemplaires de la section, pour les enregistrements qui satisfont aux 2 conditions énoncées Utilisation des sous-requêtes Les sous-requêtes permettent de sélectionner uniquement les enregistrements répondant à une liste de conditions d une table, et à une autre liste de conditions d une autre table ou d un sous-ensemble de la table impliquée. Deux types de sous-requêtes existent ; celui qui se base sur la commande EXISTS (ou NOT EXISTS), et celui qui inclut dans la liste de conditions de la clause WHERE, une requête SELECT qui s applique à une autre table, ou un sous ensemble de la table impliquée ; nous allons les aborder successivement ici La sous-requête avec la commande EXISTS (ou NOT EXISTS) Seule l existence (ou l absence) d enregistrements répondant aux critères de la sous requête contrôlée par la commande EXISTS (ou NOT EXISTS) permet d afficher des résultats à la requête principale, soit : pour la commande EXISTS : si aucun enregistrement ne répond à la sous requête contrôlée par la commande EXISTS, la requête principale ne retourne aucun résultat ; pour la commande NOT EXISTS : aucun enregistrement ne doit répondre à la sous requête contrôlée par la commande NOT EXISTS pour que la requête principale retourne des résultats. Autrement dit : la requête impliquant la commande EXISTS permet de déterminer si un enregistrement, caractérisé par son identifiant, se retrouve à la fois dans la table de la sous requête et dans celle de la requête principale. Notons qu une même table peut également être employée, dans la requête et la sous requête, s il s agit de retrouver un sous-ensemble d enregistrements de cette table répondant à certains critères dans la requête principale et à d autres dans la sous requête ; Cécile GASS juillet

15 la requête impliquant la commande NOT EXISTS permet de déterminer si un enregistrement, caractérisé par son identifiant, est dans la table de la requête principale mais pas dans celle de la sous requête. Notons qu une même table peut également être employée, dans la requête et la sous requête, s il s agit de retrouver un sous-ensemble d enregistrements de cette table répondant à certains critères dans la requête principale mais ne remplissant pas d autres conditions exprimées dans la sous requête. La sous requête avec la commande (NOT)EXISTS forme généralement l une des conditions vérifiées par le mot réservé WHERE d une requête quelconque. Exemples de requêtes utilisant la commande (NOT)EXISTS La requête suivante utilise la commande NOT EXISTS ; elle retrouve les lecteurs qui n appartiennent encore à aucun groupe : SELECT e.empr_cb, e.empr_nom, e.empr_prenom FROM empr AS e WHERE NOT EXISTS (SELECT * FROM empr_groupe AS eg WHERE e. id_empr=eg. empr_id); La commande EXISTS pourrait aussi être utilisée pour constituer un panier avec les descripteurs du thesaurus qui font l objet d un voir aussi, p.e. pour s assurer que la réciproque est également vraie (i.e., si une relation voir aussi est ajoutée au descripteur A vers le descripteur B ; le descripteur B a-t-il aussi une relation voir aussi vers le descripteur A?). Notons que PMB a amélioré la gestion des relations voir aussi dans le thesaurus depuis sa version 2.2 : aujourd hui, le bibliothécaire a la possibilité d imposer qu une relation voir aussi ajoutée à un descripteur devienne réciproque ; il suffit, dans la définition de ce descripteur, de cocher la petite case se trouvant en regard de la définition d une relation voir aussi, comme le montre l écran reproduit ci-dessous : La requête suivante retrouve tous les descripteurs du thesaurus pour lesquels une relation voir aussi a été définie : SELECT c.num_noeud, c.libelle_categorie FROM categories AS c WHERE EXISTS (SELECT * FROM voir_aussi AS v WHERE c.num_noeud=v.num_noeud_orig); La sous-requête SELECT Une requête comportant une sous requête SELECT ne vérifie plus seulement l existence d au moins un enregistrement vérifiant certaines conditions (comme dans les requêtes comportant la commande EXISTS), mais retrouve le ou les enregistrements (ou des champs particuliers de ces enregistrements) vérifiant les conditions définies dans la sous requête. Cécile GASS juillet

16 La sous requête SELECT, dont la syntaxe est la même que celle décrite dans la partie 3.2.1La commande SELECT, peut être utilisée partout où une colonne peut se retrouver, p.e. cela peutêtre une condition WHERE ou l un des résultats à afficher d une requête principale SELECT, la nouvelle valeur d une colonne dans une requête UPDATE, etc. Exemple de requêtes utilisant une sous requête SELECT Nous pourrions transformer les 2 requêtes qui nous avaient été nécessaires à la fin de la partie Les commandes join pour «remplacer la section des exemplaires dont le code barres commence par et ayant comme section Romans Jeunes par la section correspondant à Documentaires Jeunes» par une seule requête, qui ferait l inverse des deux requêtes précédentes (i.e. remplacement de la section Documentaires Jeunes par la section Romans Jeunes) : UPDATE exemplaires AS e SET e.expl_section= (SELECT ds1.idsection FROM docs_section AS ds1 WHERE ds1.section_libelle= 'Documentaires Jeunes') WHERE e.expl_cb like ' %'; 3.4 SQL : quelques fonctions d agrégat et autres fonctions avancées Un certain nombre de commandes ou fonctions peuvent également être utilisées dans les requêtes : des fonctions de regroupement ou de tri ; arithmétiques ; de traitement de chaînes de caractères, qui sont abordées ci-après Fonctions de regroupement ou de tri Fonction ORDER BY liste_colonnes DESC/ASC La fonction ORDER BY liste_colonnes DESC/ASC, ajoutée en fin de requête, classe les résultats, sur les colonnes, séparées par des virgules, successivement indiquées dans la liste_colonnes (i.e. : le classement se fait d abord sur la 1 ère colonne de la liste, puis, à valeurs égales de cette colonne, sur la seconde colonne de la liste, etc.). Si l option DESC (resp ASC) est utilisée, les résultats seront classés en ordre alphabétique / numérique descendant (resp ascendant) ; l option ASC est utilisée par défaut. Chaque colonne de la liste_colonne est susceptible d utiliser une option DESC/ASC différente (i.e. il est possible de classer les résultats de colonne1 en ordre ascendant ; et ceux de la colonne2, en ordre ascendant). Attention : pour pouvoir utiliser cette option, la requête doit obligatoirement faire afficher au minimum les colonnes indiquées dans la liste_colonnes liée à la fonction ORDER BY. Exemple de requête utilisant la fonction ORDER BY : la requête suivante affiche les noms et prénoms des lecteurs par ordre alphabétique inverse. SELECT empr_nom, empr_prenom FROM empr ORDER BY empr_nom DESC ; Fonction GROUP BY liste_colonnes La fonction ORDER BY liste_colonnes DESC/ASC, ajoutée en fin de requête, classe les résultats, sur les colonnes, séparées par des virgules, successivement indiquées dans la liste_colonnes (i.e. : le classement se fait d abord sur la 1 ère colonne de la liste, puis, à valeurs égales de cette colonne, sur la seconde colonne de la liste, etc.). Si l option DESC (resp ASC) est utilisée, les résultats seront classés en ordre alphabétique / numérique descendant (resp ascendant) ; l option ASC est utilisée par défaut. Chaque colonne de la liste_colonne est susceptible d utiliser une option DESC/ASC différente (i.e. il est Cécile GASS juillet

17 possible de classer les résultats de colonne1 en ordre ascendant ; et ceux de la colonne2, en ordre ascendant). Attention : pour pouvoir utiliser cette option, la requête doit obligatoirement faire afficher au minimum les colonnes indiquées dans la liste_colonnes liée à la fonction ORDER BY. Exemple de requête utilisant la fonction ORDER BY : la requête suivante affiche les noms et prénoms des lecteurs par ordre alphabétique inverse. SELECT empr_nom, empr_prenom FROM empr ORDER BY empr_nom DESC ; Fonction COUNT(nom_colonne) La fonction AVG calcule la valeur moyenne des valeurs de la colonne nom_colonne des enregistrements répondant à la requête. Exemple de requête utilisant la fonction AVG : la requête suivante détermine l année de naissance moyenne des lecteurs encodés dans PMB. SELECT AVG(empr_year) FROM empr WHERE empr_year <> 0; Fonction HAVING (nom_colonne) La fonction AVG calcule la valeur moyenne des valeurs de la colonne nom_colonne des enregistrements répondant à la requête. Exemple de requête utilisant la fonction AVG : la requête suivante détermine l année de naissance moyenne des lecteurs encodés dans PMB. SELECT AVG(empr_year) FROM empr WHERE empr_year <> 0; SELECT C1, C2, C3, COUNT (*) FROM TABLE WHERE C1= Value1 AND C2= Value2 AND C3= Value3 GROUP BY C1, C2, C3 SELECT C1, C2, C3, COUNT (*) FROM TABLE GROUP BY C1, C2, C3 HAVING COUNT (*) > 1 Cécile GASS juillet

18 3.4.2 Fonctions arithmétiques MySQL supporte quelques fonctions arithmétiques s appliquant aux colonnes de résultats des requêtes qui concernent des grandeurs mathématique ; les principales sont présentées ici. Attention : ces fonctions ne peuvent être combinées avec des noms de colonnes, car elles s appliquent sur des ensembles d enregistrements, il n est donc pas possible d accéder simultanément à une valeur calculée sur un ensemble d enregistrements, et aux valeurs individuelles de ces enregistrements. Fonction MAX(nom_colonne) La fonction MAX affiche la valeur la plus grande de la colonne nom_colonne des enregistrements répondant à la requête. Exemple de requête utilisant la fonction MAX : la requête suivante détermine l année de naissance du plus jeune lecteur fréquentant la bibliothèque. SELECT MAX(empr_year) FROM empr WHERE empr_year <> 0; Fonction MIN(nom_colonne) La fonction MIN affiche la plus petite valeur de la colonne nom_colonne des enregistrements répondant à la requête. Exemple de requête utilisant la fonction MIN : la requête suivante détermine l année de naissance du lecteur le plus âgé qui fréquente la bibliothèque. SELECT MIN(empr_year) FROM empr WHERE empr_year <> 0; Fonction AVG(nom_colonne) La fonction AVG calcule la valeur moyenne des valeurs de la colonne nom_colonne des enregistrements répondant à la requête. Exemple de requête utilisant la fonction AVG : la requête suivante détermine l année de naissance moyenne des lecteurs encodés dans PMB. SELECT AVG(empr_year) FROM empr WHERE empr_year <> 0; Fonction SUM(nom_colonne) La fonction SUM additionne les valeurs de la colonne nom_colonne des enregistrements répondant à la requête Traitement de chaînes de caractères MySQL supporte quelques fonctions permettant de faire du traitement de chaînes de caractères s appliquant aux colonnes de résultats des requêtes qui concernent des chaînes de caractères. Certaines sont présentées ici ; le lecteur est invité à consulter le manuel de MySQL pour une liste exhaustive de ce type de commandes. Fonction CONCAT(liste_colonnes) La fonction CONCAT(liste_colonnes) affiche les valeurs concaténées des colonnes, séparées par des virgules, de la liste_colonnes des enregistrements répondant à la requête. Exemple de requête utilisant la fonction CONCAT : la requête suivante concatène les noms et prénoms des lecteurs dont les noms commencent par la lettre s : SELECT CONCAT(empr_nom, empr_prenom) FROM empr WHERE empr_nom like 's%'; Fonction SUBSTR(nom_colonne, pos_initiale, longueur) Cécile GASS juillet

19 La fonction SUBSTR(nom_colonne, pos_initiale, longueur) permet d extraire une partie de chaque valeur d une colonne nom_colonne, de type chaîne de caractères, répondant à une requête ; cette partie est déterminée par la position du 1 er caractère de la chaîne de caractère qu il faudra extraire de chaque valeur, et sa longueur (i.e. nombre de caractères). Exemple de requête utilisant la fonction SUBSTR : la requête suivante extrait 6 caractères de la chaîne concaténée des nom et prénom des lecteurs dont les noms commencent par la lettre s. Ceci pourrait p.e. permettre de créer des login : SELECT SUBSTR(CONCAT(empr_nom, empr_prenom), 1, 6) FROM empr WHERE empr_nom like 's%'; SUBSTR(nom_colonne, position_départ, longueur) retourne une sous-chaîne de caractères extraite de la colonne spécifiée à partir d'une position de départ et jusqu'à une certaine longueur. Pour SQL Server, la fonction se dénomme SUBSTRING. INSTR(nom_colonne, jeu_caractères, position_départ, nb_occurrence) recherche le jeu de caractères dans une colonne et retourne la position de la première lettre du jeu de caractères. Pour SQL Server, il est possible d'utiliser CHARINDEX ou PATINDEX (voir MSDN). LTRIM(nom_colonne, jeu_caractères) supprime les caractères situés à la gauche de la chaîne de caractères. RTRIM(chaine, jeu_caractères) supprime les caractères situés à la droite de la chaîne de caractères. LENGTH(chaine) LPAD(nom_colonne, longueur, caractère) remplit à gauche des valeurs de la colonne un certain nombre du caractère indiqué pour arriver à la longueur voulue. RPAD(nom_colonne, longueur, caractère) remplit à droite des valeurs de la colonne un certain nombre du caractère indiqué pour arriver à la longueur voulue. Select o.type, Rtrim (o.name), u.name From sysobjects o, sysusers u Where type = "P" And o.uid = u.uid And o.name Like 'avi%' Order By 1, 2, 3; SELECT SE.CUSTOMER_ACCOUNT FROM SERVICES SE WHERE substring((convert (char(5), SE.CUSTOMER_ACCOUNT)),2,2)="41" select (right(('00000' + rtrim(convert(char(5), CALL_PRIM_MSISDN_NDC))),5)), (right((' ' + rtrim(convert(char(10), CALL_PRIM_MSISDN_SN))),10)), (right(('000000' + rtrim(convert(char(6), START_TIMESTAMP_TIME))),6)), Cécile GASS juillet

20 (right(('00' + rtrim(convert(char(2), REC_SEGMENT))),2)), (right(('000' + rtrim(convert(char(3), SEC_NUMB_CC))),3)), (right(('00000' + rtrim(convert(char(5), SEC_NUMB_NDC))),5)), (right((' ' + rtrim(convert(char(10), SEC_NUMB_SN))),10)), (right(('000000' + rtrim(convert(char(6), ACTUAL_AIR_DUR))),6)) from CEC_PAR_BEF where START_TIMESTAMP_DATE= order by CALL_PRIM_MSISDN_NDC, CALL_PRIM_MSISDN_SN, START_TIMESTAMP_TIME, REC_SEGMENT, SEC_NUMB_CC, SEC_NUMB_NDC, SEC_NUMB_SN 3.5 Pour aller plus loin à propos de (My)SQL wiki Introduction SQL maintenu sur le site de PMB ; il répertorie des cours SQL de base et avancés : ; SQL sur Wikipedia en français : et en anglais (un peu plus complet) : ; didacticiel SQL : ; manuel MySQL5.0 téléchargeable en PDF fr.pdf et en général, le site Cécile GASS juillet

Base de données relationnelle et requêtes SQL

Base de données relationnelle et requêtes SQL Base de données relationnelle et requêtes SQL 1e partie Anne-Marie Cubat Une question pour commencer : que voyez-vous? Cela reste flou Les plans de «Prison Break»? Non, cherchons ailleurs! Et de plus près,

Plus en détail

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

Plus en détail

1 Introduction et installation

1 Introduction et installation TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on

Plus en détail

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES Dossier G11 - Interroger une base de données La base de données Facturation contient tout un ensemble d'informations concernant la facturation de la SAFPB (société anonyme de fabrication de produits de

Plus en détail

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

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble. Gaëlle PERRIN SID2 Grenoble Le 10/04/2014 Base de Données (BD) : une grande quantité de données, centralisées ou non, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

Pour les débutants. langage de manipulation des données

Pour les débutants. langage de manipulation des données Pour les débutants SQL : langage de manipulation des données Les bases de données sont très utilisées dans les applications Web. La création, l interrogation et la manipulation des données de la base sont

Plus en détail

Le langage SQL Rappels

Le langage SQL Rappels Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,

Plus en détail

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

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

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

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

SQL Historique 1982 1986 1992

SQL Historique 1982 1986 1992 SQL Historique 1950-1960: gestion par simple fichier texte 1960: COBOL (début de notion de base de données) 1968: premier produit de sgbdr structuré (IBM -> IDMS) 1970-74: élaboration de l'outil d'analyse

Plus en détail

Module Com231A - Web et Bases de Données Notion 3 : SQL

Module Com231A - Web et Bases de Données Notion 3 : SQL Module Com231A - Web et Bases de Données Notion 3 : SQL Qu est ce qu une base de données? Introduction Une base de données est un ensemble d au moins un tableau contenant des données. Exemple : une base

Plus en détail

11. MySQL. Cours Web. MySQL. 11. MySQL. 11. MySQL. Structured Query Language. Lionel Seinturier. Université Pierre & Marie Curie

11. MySQL. Cours Web. MySQL. 11. MySQL. 11. MySQL. Structured Query Language. Lionel Seinturier. Université Pierre & Marie Curie Cours Web Lionel Seinturier Université Pierre & Marie Curie Lionel.Seinturier@lip6.fr Structured Query Language Langage de manipulation des données stockées dans une base de données interrogation/insertion/modification/suppression

Plus en détail

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

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE Cas Neptune hôtel Base de données et langage SQL Propriété Intitulé long Formation concernée Matière Notions Transversalité Présentation Description Neptune Hôtel. L interrogation d une base de données

Plus en détail

Interrogation de bases de données avec le langage SQL

Interrogation de bases de données avec le langage SQL Web dynamique avec PHP et MySQL Interrogation de bases de données avec le langage SQL C. Sirangelo & F. Tort Interroger une base avec SQL Interroger une base de données: extraire des données de la base

Plus en détail

Bases de données. Chapitre 1. 1.1 Généralité sur les bases de données. 1.2 Avec sqlite3. 1.1.1 Le langage SQL et les bases de données

Bases de données. Chapitre 1. 1.1 Généralité sur les bases de données. 1.2 Avec sqlite3. 1.1.1 Le langage SQL et les bases de données Chapitre 1 Bases de données 1.1 Généralité sur les bases de données 1.1.1 Le langage SQL et les bases de données La base de données (BDD) est un système qui enregistre des informations. Ces informations

Plus en détail

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

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ; RÈGLES A SUIVRE POUR OPTIMISER LES REQUÊTES SQL Le but de ce rapport est d énumérer quelques règles pratiques à appliquer dans l élaboration des requêtes. Il permettra de comprendre pourquoi certaines

Plus en détail

Partie I du TD 1 au TD 5. Bases de données et MySQL -

Partie I du TD 1 au TD 5. Bases de données et MySQL - Système d information http://www.agroparistech.fr/systeme-d-information.html Partie I du TD 1 au TD 5 - Bases de données et MySQL - Liliana Ibănescu liliana.ibanescu@agroparistech.fr UFR d informatique

Plus en détail

PRESENTATION. Document1 Serge GUERINET Page 1

PRESENTATION. Document1 Serge GUERINET Page 1 PRESENTATION Les domaines couverts par la série STG sont tous des pourvoyeurs ou exploitants des bases de données. Que l'on gère la relation aux clients, le suivi de l'activité financière, la comptabilité

Plus en détail

Cours Web n o 7 MySQL et PHP

Cours Web n o 7 MySQL et PHP Introduction aux bases de données Cours Web n o 7 MySQL et PHP Sandrine-Dominique Gouraud (gouraud@lri.fr) Pierre Senellart (pierre@senellart.com) Semaine du 7 novembre 2005 S.-D. Gouraud, P. Senellart

Plus en détail

ACCESS 2013. Système de Gestion de Bases de Données Relationnelles

ACCESS 2013. Système de Gestion de Bases de Données Relationnelles Access est un logiciel permettant de gérer des données en masse : une liste de clients ou de fournisseurs, un stock de produits, des commandes, des salariés, un club de tennis, une cave à vin, une bibliothèque,

Plus en détail

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

Introduction au Système de Gestion de Base de Données et aux Base de Données Introduction au Système de Gestion de Base de Données et aux Base de Données Formation «Gestion des données scientifiques : stockage et consultation en utilisant des bases de données» 24 au 27 /06/08 Dernière

Plus en détail

Encryptions, compression et partitionnement des données

Encryptions, compression et partitionnement des données Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

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

Cours Base de données relationnelles. M. Boughanem, IUP STRI Cours Base de données relationnelles 1 Plan 1. Notions de base 2. Modèle relationnel 3. SQL 2 Notions de base (1) Définition intuitive : une base de données est un ensemble d informations, (fichiers),

Plus en détail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

Apprendre le langage SQL - Le DML - 1 / 41 - Apprendre le langage SQL par l exemple Partie 2 : le DML

Apprendre le langage SQL - Le DML - 1 / 41 - Apprendre le langage SQL par l exemple Partie 2 : le DML Apprendre le langage SQL - Le DML - 1 / 41 - Apprendre le langage SQL par l exemple Partie 2 : le DML Ce document est publié sous licence Creative Commons CC-by-nc-nd. Il ne peut ni être modifié, ni faire

Plus en détail

Web dynamique. Techniques, outils, applications. (Partie C)

Web dynamique. Techniques, outils, applications. (Partie C) Web dynamique Techniques, outils, applications (Partie C) Nadir Boussoukaia - 2006 1 SOMMAIRE 1. MySQL et PHP (20 min) 2. SQL (petits rappels) (20 min) 2 MySQL et PHP Synthèse 3 MySQL et PHP SGBD MySQL

Plus en détail

Apprendre le langage SQL - Le DML - 1 / 21 - Apprendre le langage SQL par l exemple Partie 2 : le DML

Apprendre le langage SQL - Le DML - 1 / 21 - Apprendre le langage SQL par l exemple Partie 2 : le DML Apprendre le langage SQL - Le DML - 1 / 21 - Apprendre le langage SQL par l exemple Partie 2 : le DML Ce document est publié sous licence Creative Commons CC-by-nc-nd. Il ne peut ni être modifié, ni faire

Plus en détail

Les BASES de DONNEES dans WampServer

Les BASES de DONNEES dans WampServer Les BASES de DONNEES dans WampServer 1 Définitions Générales Une base de données (BDD) permet d'enregistrer, de stocker, de ranger des données de façon organisée et hiérarchisée. SQL est le langage qui

Plus en détail

Olivier Mondet http://unidentified-one.net

Olivier Mondet http://unidentified-one.net T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage

Plus en détail

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite. Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite. Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs, relations,

Plus en détail

MODE OPERATOIRE OPENOFFICE BASE

MODE OPERATOIRE OPENOFFICE BASE MODE OPERATOIRE OPENOFFICE BASE Openoffice Base est un SGBDR : Système de Gestion de Base de Données Relationnelle. L un des principaux atouts de ce logiciel est de pouvoir gérer de façon efficace et rapide

Plus en détail

Les principaux domaines de l informatique

Les principaux domaines de l informatique Les principaux domaines de l informatique... abordés dans le cadre de ce cours: La Programmation Les Systèmes d Exploitation Les Systèmes d Information La Conception d Interfaces Le Calcul Scientifique

Plus en détail

Généralités sur les bases de données

Généralités sur les bases de données Généralités sur les bases de données Qu est-ce donc qu une base de données? Que peut-on attendre d un système de gestion de bases de données? Que peut-on faire avec une base de données? 1 Des données?

Plus en détail

Les bases de données

Les bases de données Les bases de données Introduction aux fonctions de tableur et logiciels ou langages spécialisés (MS-Access, Base, SQL ) Yves Roggeman Boulevard du Triomphe CP 212 B-1050 Bruxelles (Belgium) Idée intuitive

Plus en détail

1 Création et manipulation d une base de données

1 Création et manipulation d une base de données Université Paris 13 TP Base de données Année 2013-2014 Institut Galilée SQL et ORACLE LI3 1 Création et manipulation d une base de données ans ce TP, nous allons créer la base de données de l exercice

Plus en détail

TP1 - Corrigé. Manipulations de données

TP1 - Corrigé. Manipulations de données TP1 - Corrigé Manipulations de données 1. Démarrez mysql comme suit : bash$ mysql -h 127.0.0.1 -u user4 -D db_4 p Remarque: le mot de passe est le nom de user. Ici user4 2. Afficher la liste des bases

Plus en détail

Les bases de données Page 1 / 8

Les bases de données Page 1 / 8 Les bases de données Page 1 / 8 Sommaire 1 Définitions... 1 2 Historique... 2 2.1 L'organisation en fichier... 2 2.2 L'apparition des SGBD... 2 2.3 Les SGBD relationnels... 3 2.4 Les bases de données objet...

Plus en détail

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

PHP 5. La base de données MySql. A. Belaïd 1 PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple

Plus en détail

Cours de Base de Données Cours n.2 Introduction à MySQL/PhPMyAdmin

Cours de Base de Données Cours n.2 Introduction à MySQL/PhPMyAdmin Cours de Base de Données Cours n.2 Introduction à MySQL/PhPMyAdmin Ce cours reprend beaucoup de transparents du cours de Philippe LAHIRE Elisabetta De Maria - edemaria@i3s.unice.fr UFR Sciences et Laboratoire

Plus en détail

Utilitaire d importation et d exportation de données pour NewWayService 4

Utilitaire d importation et d exportation de données pour NewWayService 4 Utilitaire d importation et d exportation de données pour NewWayService 4 Copyright 1996-2009 OroLogic Inc. http://www.orologic.com Révision 4.01 Table des matières I Table des matières Introduction à

Plus en détail

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

Cours SQL. Base du langage SQL et des bases de données Cours SQL Base du langage SQL et des bases de données Auteur Tony Archambeau Site web http://sql.sh Date 24 mai 2014 Licence Mis à disposition selon les termes de la licence Creative Commons Attribution

Plus en détail

FileMaker 13. Guide de référence SQL

FileMaker 13. Guide de référence SQL FileMaker 13 Guide de référence SQL 2013 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Californie 95054 FileMaker et Bento sont des marques commerciales de

Plus en détail

Les procédures stockées et les fonctions utilisateur

Les procédures stockées et les fonctions utilisateur Les procédures stockées et les fonctions utilisateur Z Grégory CASANOVA 2 Les procédures stockées et les fonctions utilisateur [08/07/09] Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les procédures

Plus en détail

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

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013 NFA 008 Introduction à NoSQL et MongoDB 25/05/2013 1 NoSQL, c'est à dire? Les bases de données NoSQL restent des bases de données mais on met l'accent sur L'aspect NON-relationnel L'architecture distribuée

Plus en détail

Memento MYSQL LINUX. Pour installer le serveur Mysql. Installer les paquets suivants :

Memento MYSQL LINUX. Pour installer le serveur Mysql. Installer les paquets suivants : Memento MYSQL LINUX Pour installer le serveur Mysql Installer les paquets suivants : Mysql-server (moteur de bases de données) Apache2 (serveur web si besoin) Php5 (langage de programmation permettant

Plus en détail

SOMMAIRE. Travailler avec les requêtes... 3

SOMMAIRE. Travailler avec les requêtes... 3 Access Les requêtes SOMMAIRE Travailler avec les requêtes... 3 A) Créer une requête sélection en mode QBE... 3 B) Exécuter une requête à partir du mode Modifier (QBE)... 3 C) Passer du mode Feuille de

Plus en détail

16H Cours / 18H TD / 20H TP

16H Cours / 18H TD / 20H TP INTRODUCTION AUX BASES DE DONNEES 16H Cours / 18H TD / 20H TP 1. INTRODUCTION Des Fichiers aux Bases de Données 2. SYSTEME DE GESTION DE BASE DE DONNEES 2.1. INTRODUCTION AUX SYSTEMES DE GESTION DE BASES

Plus en détail

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES BASE DE DONNEES La plupart des entreprises possèdent des bases de données informatiques contenant des informations essentielles à leur fonctionnement. Ces informations concernent ses clients, ses produits,

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI anis.bach@isg.rnu.tn

Plus en détail

SQL MAP. Etude d un logiciel SQL Injection

SQL MAP. Etude d un logiciel SQL Injection Introduction Ce TP a pour but d analyser un outil d injection SQL, comprendre les vulnérabilités d une BD et de mettre en œuvre une attaque par injection SQL. Prise en main du logiciel SQLMap est un outil

Plus en détail

NVU, Notepad++ (ou le bloc-note), MySQL, PhpMyAdmin. HTML, PHP, cas d utilisation, maquettage, programmation connaissances en HTML, PHP et SQL

NVU, Notepad++ (ou le bloc-note), MySQL, PhpMyAdmin. HTML, PHP, cas d utilisation, maquettage, programmation connaissances en HTML, PHP et SQL Prise en main de NVU et Notepad++ (conception d application web avec PHP et MySql) Propriétés Intitulé long Formation concernée Matière Présentation Description Conception de pages web dynamiques à l aide

Plus en détail

Chapitre 4. 4.1 Installation de MySQL. Au fond, est-ce que ranger ça ne revient pas un peu à foutre le bordel dans son désordre?

Chapitre 4. 4.1 Installation de MySQL. Au fond, est-ce que ranger ça ne revient pas un peu à foutre le bordel dans son désordre? Chapitre 4 Introduction à SQL Au fond, est-ce que ranger ça ne revient pas un peu à foutre le bordel dans son désordre? Philippe Geluck 4.1 Installation de MySQL Pour télécharger MySQL avec l'installateur

Plus en détail

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

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

Bases de Données & Interfaces Web. stanislas.oger@univ-avignon.fr

Bases de Données & Interfaces Web. stanislas.oger@univ-avignon.fr Bases de Données & Interfaces Web stanislas.oger@univ-avignon.fr 1 Architecture d'un SI Web Fonctionnement Dynamique avec Base de Données 2 Idée Dynamiser les pages avec des infos venant de BDD Enregistrer

Plus en détail

Écriture de journal. (Virement de dépense)

Écriture de journal. (Virement de dépense) Écriture de journal (Virement de dépense) SERVICE DES FINANCES Équipe de formation PeopleSoft version 8.9 Août 2014 TABLES DES MATIERES AVERTISSEMENT... 3 INTRODUCTION... 4 RAISONS JUSTIFIANT LA CRÉATION

Plus en détail

Instructions SQL. Première partie : Langage de description et de gestion des données

Instructions SQL. Première partie : Langage de description et de gestion des données Instructions SQL Première partie : Langage de description et de gestion des données Quelques instructions et leur syntaxe 1. Introduction Trois principales catégories d instructions. Instructions de création

Plus en détail

Auto-évaluation DB2 for z/os: cours de base

Auto-évaluation DB2 for z/os: cours de base Auto-évaluation DB2 for z/os: cours de base Document: f1067test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION DB2 FOR Z/OS:

Plus en détail

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

TD n 10 : Ma première Base de Données TD n 10 : Ma première Base de Données 4 heures Rédigé par Pascal Delahaye 11 mars 2015 Le but de ce TD est de découvrirles principales fonctions d OpenOffice Base, le systèmede gestion de bases de données

Plus en détail

GUIDE D UTILISATION GESTION DU CONTENU SITE INTERNET CANATAL. 1 ère Partie. Modification du Contenu du Site WordPress de Canatal

GUIDE D UTILISATION GESTION DU CONTENU SITE INTERNET CANATAL. 1 ère Partie. Modification du Contenu du Site WordPress de Canatal INDUSTRIES CANATAL INC. GUIDE D UTILISATION GESTION DU CONTENU SITE INTERNET CANATAL 1 ère Partie Modification du Contenu du Site WordPress de Canatal Version 1.0 FR 27 février 2013 Page laissée intentionnellement

Plus en détail

Gestion de références bibliographiques

Gestion de références bibliographiques Mars 2011 Gestion de références bibliographiques Outil pour gérer ses bibliographies personnelles sur le web. Il est intégré à Web of Science (WOS). La version web est une version allégée de EndNote (ne

Plus en détail

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

Le langage SQL (première partie) c Olivier Caron Le langage SQL (première partie) 1 Plan Le S.G.B.D. postgres Le langage SQL Langage de manipulation de données Langage de requêtes 2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley)

Plus en détail

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées PRODIGE V3 Manuel utilisateurs Consultation des métadonnées Pour plus d'information sur le dispositif : à remplir par chaque site éventuellement 2 PRODIGE V3 : Consultation des métadonnées SOMMAIRE 1.

Plus en détail

Cours de Bases de Données Avancées 2006-2007 Groupe cinema, Rapport 4

Cours de Bases de Données Avancées 2006-2007 Groupe cinema, Rapport 4 1 Annexes Avec ce rapport il faut rendre en annexe le script SQL corrigé qui permet de créer la base de données selon votre modèle relationnel ainsi que de la peupler avec un nombre de tuples suffisant.

Plus en détail

FileMaker 11. Guide ODBC et JDBC

FileMaker 11. Guide ODBC et JDBC FileMaker 11 Guide ODBC et JDBC 2004-2010 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054, Etats-Unis FileMaker est une marque de FileMaker,

Plus en détail

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

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 TP base de données SQLite 1 Différents choix possibles et choix de SQLite : La plupart des logiciels de gestion de base de données fonctionnent à l aide d un serveur. Ils demandent donc une installation

Plus en détail

Créer le schéma relationnel d une base de données ACCESS

Créer le schéma relationnel d une base de données ACCESS Utilisation du SGBD ACCESS Polycopié réalisé par Chihab Hanachi et Jean-Marc Thévenin Créer le schéma relationnel d une base de données ACCESS GENERALITES SUR ACCESS... 1 A PROPOS DE L UTILISATION D ACCESS...

Plus en détail

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

Bases de Données relationnelles et leurs systèmes de Gestion III.1- Définition de schémas Bases de Données relationnelles et leurs systèmes de Gestion RAPPELS Contraintes d intégrité sous Oracle Notion de vue Typage des attributs Contrainte d intégrité Intra-relation

Plus en détail

Vulnérabilités logicielles Injection SQL. Chamseddine Talhi École de technologie supérieure (ÉTS) Dép. Génie logiciel et des TI

Vulnérabilités logicielles Injection SQL. Chamseddine Talhi École de technologie supérieure (ÉTS) Dép. Génie logiciel et des TI Vulnérabilités logicielles Injection SQL Chamseddine Talhi École de technologie supérieure (ÉTS) Dép. Génie logiciel et des TI 1 Plan SQL Injection SQL Injections SQL standards Injections SQL de requêtes

Plus en détail

LINQ to SQL. Version 1.1

LINQ to SQL. Version 1.1 LINQ to SQL Version 1.1 2 Chapitre 03 - LINQ to SQL Sommaire 1 Introduction... 3 1.1 Rappels à propos de LINQ... 3 1.2 LINQ to SQL... 3 2 LINQ to SQL... 3 2.1 Importer des tables... 3 2.1.1 Le concepteur

Plus en détail

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/ Systèmes de gestion de bases de données Introduction Université d Evry Val d Essonne, IBISC utiles email : cinzia.digiusto@gmail.com webpage : http://www.ibisc.univ-evry.fr/ digiusto/ Google+ : https://plus.google.com/u/0/b/103572780965897723237/

Plus en détail

2011 Hakim Benameurlaine 1

2011 Hakim Benameurlaine 1 Table des matières 1 CRÉATION DES OBJETS DE BASES DE DONNÉES... 2 1.1 Architecture d une base de données... 2 1.1.1 Niveau logique... 2 1.1.2 Niveau physique... 3 1.2 Gestion d une base de données... 3

Plus en détail

Bases de données Niveau 1 SQL - MySQL MariaDB - Cours et TP 5 DDL et DML

Bases de données Niveau 1 SQL - MySQL MariaDB - Cours et TP 5 DDL et DML Bases de données Niveau 1 SQL - MySQL MariaDB - Cours et TP 5 DDL et DML MariaDB : https://mariadb.org/ Site officiel MySQL : http://www-fr.mysql.com/ Zone pour les développeurs : http://dev.mysql.com/

Plus en détail

Création de Sous-Formulaires

Création de Sous-Formulaires Création de Sous-Formulaires Révision 1.01 du 02/01/04 Réalisé avec : OOo 1.1.0 Plate-forme / Os : Toutes Distribué par le projet Fr.OpenOffice.org Table des Matières 1 But de ce how-to...3 2 Pré-requis...3

Plus en détail

Cours 7 : Langage de définition, manipulation et contrôle des données

Cours 7 : Langage de définition, manipulation et contrôle des données Cours 7 : Langage de définition, manipulation et contrôle des données Objets d une base de données Dans un schéma Tables, vues Index, clusters, séquences, synonymes Packages, procédures, fonctions, déclencheurs

Plus en détail

Introduction aux Bases de Données

Introduction aux Bases de Données Introduction aux Bases de Données I. Bases de données I. Bases de données Les besoins Qu est ce qu un SGBD, une BD Architecture d un SGBD Cycle de vie Plan du cours Exemples classiques d'applications BD

Plus en détail

15 septembre 2010. Démo #2 MySQL Séquençage

15 septembre 2010. Démo #2 MySQL Séquençage 15 septembre 2010 Démo #2 MySQL Séquençage SQL et MySQL SQL: structured query language langage pour manipuler des données dans des bases de données relationnelles MySQL: Implantation de SQL Ajout à SQL

Plus en détail

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

Le langage SQL pour Oracle - partie 1 : SQL comme LDD Le langage SQL pour Oracle - partie 1 : SQL comme LDD 1 SQL : Introduction SQL : Structured Query Langage langage de gestion de bases de donn ees relationnelles pour Définir les données (LDD) interroger

Plus en détail

Bioinformatique BTV Stockage des données

Bioinformatique BTV Stockage des données 1 / 64 Bioinformatique BTV Stockage des données Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer Juillet 2008 2 / 64 Plan Plan 1 Introduction 2 Format de stockage

Plus en détail

Mysql avec EasyPhp. 1 er mars 2006

Mysql avec EasyPhp. 1 er mars 2006 Mysql avec EasyPhp 1 er mars 2006 Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requètes vers les bases de données relationnelles. Il en reprend la syntaxe

Plus en détail

C'est : C'est : un fichier, analogue à une feuille de calcul Excel, contenant les informations.

C'est : C'est : un fichier, analogue à une feuille de calcul Excel, contenant les informations. C'est : un ensemble de fichiers contenant toutes les informations nécessaires à une application + un logiciel de Gestion de ces informations appelé SGBD (Système de Gestion de Base de Données). C'est :

Plus en détail

Requêtes SQL avec la date et le groupement Chapitre 7 série 3 Base de données AcciRoute SOLUTIONS

Requêtes SQL avec la date et le groupement Chapitre 7 série 3 Base de données AcciRoute SOLUTIONS 2003-07-01 1 Requêtes SQL avec la date et le groupement Chapitre 7 série 3 Base de données AcciRoute SOLUTIONS Voici MRD de la BD AcciRoute pour représenter les rapports d accidents de la route. Le MRD

Plus en détail

STATISTICA Version 12 : Instructions d'installation

STATISTICA Version 12 : Instructions d'installation STATISTICA Version 12 : Instructions d'installation STATISTICA Entreprise Server Remarques : 1. L'installation de STATISTICA Entreprise Server s'effectue en deux temps : a) l'installation du serveur et

Plus en détail

Pour les débutants. langage de définition des données

Pour les débutants. langage de définition des données Pour les débutants SQL : langage de définition des données Les bases de données sont très utilisées dans les applications Web. La création, l interrogation et la manipulation des données de la base sont

Plus en détail

PHP & BD. PHP & Bases de données. Logiciels & matériels utilisés. Bases de données et Web

PHP & BD. PHP & Bases de données. Logiciels & matériels utilisés. Bases de données et Web PHP & Bases de données La quantité de données utilisée par certains sites web nécessite l'utilisation d'une base de données Il faut donc disposer d'un SGBD (mysql, postgresql, oracle, ) installé sur un

Plus en détail

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles) SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients

Plus en détail

Bases de Données. Plan

Bases de Données. Plan Université Mohammed V- Agdal Ecole Mohammadia d'ingénieurs Rabat Bases de Données Mr N.EL FADDOULI 2014-2015 Plan Généralités: Définition de Bases de Données Le modèle relationnel Algèbre relationnelle

Plus en détail

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services Nous verrons dans cet article comment exploiter simplement les données de Log de SQL Server 2008 R2 Reporting Services

Plus en détail

SQL. Requête la plus simple. Projection. Requête la plus simple. Différents modes d interrogation. Requêtes mécanismes d interrogation des données

SQL. Requête la plus simple. Projection. Requête la plus simple. Différents modes d interrogation. Requêtes mécanismes d interrogation des données Requêtes mécanismes d interrogation des données SQL! En entrée : une ou plusieurs tables! En sortie : une table réponse sandra.bringay@univ-montp3.fr roland.mahiques@univ-montp3.fr alexandre.pinlou@univ-montp3.fr

Plus en détail

TP Contraintes - Triggers

TP Contraintes - Triggers TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution

Plus en détail

Notes de cours : bases de données distribuées et repliquées

Notes de cours : bases de données distribuées et repliquées Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées

Plus en détail

Chapitre 08 Les requêtes d'interrogation en langage SQL

Chapitre 08 Les requêtes d'interrogation en langage SQL Chapitre 08 Les requêtes d'interrogation en langage SQL Introduction L'étude des requêtes d'interrogation de la base de données est séparée en deux parties : - Une première partie permet de revoir le langage

Plus en détail

1. Introduction...2. 2. Création d'une requête...2

1. Introduction...2. 2. Création d'une requête...2 1. Introduction...2 2. Création d'une requête...2 3. Définition des critères de sélection...5 3.1 Opérateurs...5 3.2 Les Fonctions...6 3.3 Plusieurs critères portant sur des champs différents...7 3.4 Requête

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans virginie.sans@irisa.fr A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

Introduction aux Bases de Données 2004/2005

Introduction aux Bases de Données 2004/2005 Introduction aux Bases de Données 2004/2005 Chapitre 6: Le langage SQL Ecole Nationale Supérieur de Physique de Strasbourg Christian Wolf christian.wolf@ensps.u-strasbg.fr 6.1 Stockage physique Film numfil

Plus en détail