Bases de données Niveau 1 SQL - MySQL MariaDB - Cours et TP 6 Clé primaire concaténée



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

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

Le Langage De Description De Données(LDD)

Bases de données relationnelles

Langage SQL : créer et interroger une base

I4 : Bases de Données

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

CREATION WEB DYNAMIQUE

Le langage SQL Rappels

I. MySQL : Serveur et SGBD

SQL Historique

TP Bases de données réparties

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

Olivier Mondet

TP3 : Creation de tables 1 seance

TP Contraintes - Triggers

Les BASES de DONNEES dans WampServer

A QUOI SERVENT LES BASES DE DONNÉES?

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

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

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

INTRODUCTION AU DATA MINING

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

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

Bases de données relationnelles & SQL

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

1 Introduction et installation

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

Les bases de données

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

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

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

MySQL / SQL EXEMPLES

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

Le Langage SQL version Oracle

Création et Gestion des tables

MODE OPERATOIRE OPENOFFICE BASE

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

Application web de gestion de comptes en banques

Bases de données cours 1

Base de données relationnelle et requêtes SQL

Bible MySQL! La première version de MySQL est apparue en Cette première version est créée pour un usage personnel à partir de msql.

Bases de données élémentaires Maude Manouvrier

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 Codage numérique des caractères. Un ordinateur ne manipule que des 0 et des 1 : Comment alors code-t-il du texte?

Historisation des données

Modélisation et Gestion des bases de données avec mysql workbench

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

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

Le codage informatique

Optimisation SQL. Quelques règles de bases

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

16H Cours / 18H TD / 20H TP

UML et les Bases de Données

Installation d'un serveur FTP géré par une base de données MySQL

Pratique et administration des systèmes

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

1/ Présentation de SQL Server :

FileMaker 13. Guide de référence SQL

Gestion de base de données

Optimisations des SGBDR. Étude de cas : MySQL

Objectifs du TP : Initiation à Access

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

Devoir Data WareHouse

Dossier I Découverte de Base d Open Office

Codage d information. Codage d information : -Définition-

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

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

Mysql avec EasyPhp. 1 er mars 2006

A QUOI SERVENT LES BASES DE DONNÉES?

Encryptions, compression et partitionnement des données

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

Structure fonctionnelle d un SGBD

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

CESI Bases de données

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

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

Cours: Administration d'une Base de Données

NF26 Data warehouse et Outils Décisionnels Printemps 2010

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

Intégrité sémantique dans les bases de données relationnelles

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Formats de fichiers adaptés à l'archivage électronique à moyen et long terme

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

Information utiles. webpage : Google+ : digiusto/

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

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

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

Introduction aux Bases de Données 2004/2005

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

OpenPaaS Le réseau social d'entreprise

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche

Intégrité des données

Bases de Données. Plan

Systèmes de Gestion de Bases de Données

Transcription:

Bases de données Niveau 1 SQL - MySQL MariaDB - Cours et TP 6 Clé primaire concaténée MariaDB : https://mariadb.org/ Site officiel MySQL : http://www-fr.mysql.com/ Zone pour les développeurs : http://dev.mysql.com/ Téléchargement : http://dev.mysql.com/downloads/ Documentations MySQL : http://dev.mysql.com/doc/refman/5.0/fr/ http://dev.mysql.com/doc/refman/5.6/en/ http://dev.mysql.com/doc/index.html Mémo SQL : http://www.volubis.fr/bonus/sql_memo.htm Bertrand LIAUDET SOMMAIRE SOMMAIRE 1 MODÉLISATION : MODELE RELATIONNEL - SUITE 2 1. Clé primaire concaténée : une difficulté du modèle relationnel 2 2. Questions de caractères 6 SQL : CONSULTATION DE LA BD - SUITE 10 TP N 6 : TABLES-VERBES 11 Présentation 11 Méthode 11 Exercice 1 : DDL : Création de la BD 12 Exercice 2 : SELECT : Interrogation de la BD 13 Exercice 3 : DML : Mise à jour de la BD 14 Première édition : septembre 2007 Deuxième édition : octobre 2008 mise à jour octobre 2011 BASES DE DONNÉES - Niveau 1 - MySQL - MariaDB - Cours 06 - page 1/14 - Bertrand LIAUDET

MODÉLISATION : MODELE RELATIONNEL - SUITE Clé primaire concaténée Table-verbe PRINCIPALES NOTIONS Table-nom 1. Clé primaire concaténée : une difficulté du modèle relationnel Exemple traité Une bibliothèque gère les emprunts des livres de ses adhérents. Les livres ont un titre et un auteur. Les exemplaires physiques des livres ont un numéro différent par exemplaire. Ils correspondent à un livre et ont un éditeur. Les adhérents ont un nom, un prénom, une adresse et un téléphone. On souhaite archiver tous les emprunts. Un livre ne peut pas être rendu le jour même de son emprunt. La durée maximum d'emprunt doit être est de 14 jours. La bibliothèque souhaite pouvoir connaître à tout moment la situation de chaque abonné (nombre de livres empruntés, retards éventuels). Elle souhaite aussi pouvoir faire des statistiques sur la pratique des clients (nombre de livres empruntés par an, répartition des emprunts par genre, nombre d emprunts par livre, etc. Modèle relationnel Tables des Adhérents et des Oeuvres De l analyse du texte précédent, on extrait aisément la table des adhérents et celle des oeuvres : ADHERENTS (NA, nom, prenom, adr, tel) OEUVRES (NO, titre, auteur) Table des Livres On arrive aussi à extraire assez facilement la table des livres physiques : LIVRES (NL, editeur, #NO) Remarque La table des livres physique est nommée : «Livres», ce qui facilitera l interprétation des questions (un adhérent vient rendre un livre, quels sont les livres en retard, etc.). Tables des Emprunts On peut envisager une table des emprunts. La table des emprunts c est une liste de livres par adhérent, mais aussi une liste d adhérents par livre. Les attributs de cette table sont les suivants : EMPRUNTER (#NA, #NL, datemp, datretmax, datret) Quelle est la clé primaire de cette table? BASES DE DONNÉES - Niveau 1 - MySQL - MariaDB - Cours 06 - page 2/14 - Bertrand LIAUDET

On pourrait penser créer un attribut : «NEMP» et en faire la clé primaire. Une difficulté du modèle relationnel : quand on a plusieurs clés étrangères dans une table Règle fondamentale de modélisation relationnelle : Quand on a plus d une clé étrangère dans une table, il faut se demander si la concaténation de plusieurs attributs de la table n est pas clé primaire de la table. Méthode pour déterminer la clé primaire quand on a plusieurs clés étrangères La méthode de recherche de la clé primaire sera la suivante : 1) Se demander si la concaténation des clés étrangères ne forme pas la clé primaire. 2) Si ç est le cas, se demander si on ne peut pas retirer quelques clés étrangères de la concaténation. 3) Si ce n était pas le cas, essayer d ajouter des attributs non clé étrangère pour trouver la clé primaire. 4) Une fois trouvé, essayer de supprimer des attributs clés étrangères de la nouvelle clé primaire concaténée. Application 1 ère hypothèse : EMPRUNTER(#NA, #NL, datemp, dureemax, datret) Est-ce que NA et NL forment bien la clé primaire? Non : un adhérent peut emprunter plusieurs fois le même livre à des dates différentes. 2 ème hypothèse : on ajoute datemp : EMPRUNTER(#NA, #NL, datemp, dureemax, datret) Le tripmet (NA, NL, datemp) est clé primaire 3 ème hypothèse : on supprime NL : EMPRUNTER(#NA, #NL, datemp, dureemax, datret) Le couple (NA, datemp) n est pas clé primaire. 4 ème hypothèse : on supprime NA : EMPRUNTER(#NA, #NL, datemp, dureemax, datret) Le couple (NL, datemp) est clé primaire. Conclusion : EMPRUNTER(#NL, datemp, dureemax, datret, #NA) Schéma de la BD ADHERENTS (NA, nom, prenom, adr, tel) OEUVRES (NO, titre, auteur) LIVRES (NL, editeur, #NO) EMPRUNTER(#NL, datemp, dureemax, datret, #NA) Formalisme 1. Les clés primaires sont soulignées et placées en premier dans la liste des attributs. 2. Le nom d une clé primaire simple est constitué de : «N»+1 ère lettre de la table (NA). BASES DE DONNÉES - Niveau 1 - MySQL - MariaDB - Cours 06 - page 3/14 - Bertrand LIAUDET

3. Dans une clé primaire concaténée, les attributs clés étrangères sont placés en premier. 4. Les clés étrangères sont précédées d un #. 5. Les clés étrangères sont mises en dernier dans la liste des attributs. Expression ultra-schématique De façon ultra-schématique, les tables peuvent s écrire ainsi : A (A, Ax) O (O, Ox) L (L, Lx, #NO) E (#L, datemp, Ex, #A) Graphe des tables EMPRUNTER LIVRES ADHERENTS OEUVRES Distinction entre table-nom et table-verbe On a donc deux grands types de tables : les tables-noms et les tables-verbes Les tables-noms En général, les tables noms représentent une réalité matérielle : les adhérents, les livres. Les oeuvres sont aussi une table-nom. Elles ont une clé primaire simple. Les tables-noms En général, les tables verbes représentent une relation, un lien entre deux tables noms. Formalisme Le nom des tables-noms est un nom commun au pluriel : les Adhérents. Le nom des tables-verbes est un verbe à l infinitif : Emprunter. Ce verbe désigne la relation que la table verbe établit entre les deux tables-noms : les adhérents empruntent des livres. BASES DE DONNÉES - Niveau 1 - MySQL - MariaDB - Cours 06 - page 4/14 - Bertrand LIAUDET

Intérêt de la clé primaire concaténée Pourquoi n a-t-on pas utilisé un attribut NE (numéro d emprunt) comme clé primaire? Pour 3 raisons : En déclarant (NL, datemp) comme clé primaire, on garantit l unicité du couple NL, datemb, ce qui garantit la cohérence sémantique des données. On évite de créer un attribut inutile. On met au jour le fait qu un emprunt est défini par le couple (NL, datemb). Cela permet de mieux comprendre les données. Clé primaire concaténée ou clé secondaire concaténée? Principe : toujours éviter, si possible, la clé secondaire concaténée!!! Si le SGBD permet la création de clé primaire concaténée et de clé étrangère faisant référence à une clé primaire concaténée, alors on évitera toujours la clé secondaire concaténée. Formalisme des clé secondaire EMPRUNTER(NE, (#NL, datemp), datretmax, datret, #NA) On met la clé secondaire juste après la clé primaire, entre parenthèses pour la repérer. Conséquence syntaxique Syntaxe UNIQUE (NL, datemp) Clé primaire concaténée CREATE TABLE emprunter ( NL integer not null, foreign key(nl) references livres(nl), datemp date not null, primary key (NL, datemp) ); Clé étrangère concaténée Une clé primaire concaténée peut aussi devenir clé étrangère dans une autre table : CREATE TABLE test ( NL integer not null, datemp date not null, foreign key(nl, datemp) references emprunter(nl, datemp) ) ; BASES DE DONNÉES - Niveau 1 - MySQL - MariaDB - Cours 06 - page 5/14 - Bertrand LIAUDET

2. Questions de caractères Jeu de caractères : character set Définition d un jeu de caractères Ensemble de caractères (lettres, ponctuation, chiffres, etc.) auxquels sont associés un numéro de code. Exemple : code ASCII. «A»=65, «,» = 44. 128 caractères sont codés de façon standard. Select ASCII ( A ); Select CHAR(65); Codages ISO (origine ASCII) Principe : 1 octet = 8 bit = 256 codages possibles. Les jeux de caractères normalisés ISO 8859 sont codés sur 1 octet. Le ISO 8859-1 est le «latin-1» ou «occidental» ou «western» Le ISO 8859-6 fournit les caractères arabes. Codages Unicode : UTF 8 Principe : un jeu de caractères pour toutes les langues : plus que 256 caractères. Les jeux de caractères Unicode utilisent plusieurs octets. UTF-8 utilise des caractères de taille variable, de 1 à 4 octets. Attention, l UTF 8 gère mal les accents. Police de caractère : character font Mysql La police est une notion différente du jeu de caractères. Elle ne concerne que l apparence graphique. Variables d environnement Show character set; // jeux de caractères disponibles. Select * from information_schema.character_sets; // état du dictionnaire des données Show variables like %char% ; // état des variables d environnement Set @@character_set_client="latin1"; // modification des variables Signification des variables character_set_client : jeu de caractère utilisé en saisie character_set_connection : jeu de caractères utilisé pour la communication client serveur character_set_results : jeu de caractères utilisé pour l affichage des résultats character_set_database : jeu de caractères de la BD en cours d utilisation BASES DE DONNÉES - Niveau 1 - MySQL - MariaDB - Cours 06 - page 6/14 - Bertrand LIAUDET

character_set_server : jeu de caractère du serveur My.ini Show variable like datadir ; // répertoire du fichier my.ini [mysql] default-character-set=latin1 [mysqld] default-character-set=latin1 Collation: character set Définition d une collation Une collation est liée à un jeu de caractères. Elle donne l ordre de classement des caractères et l équivalence éventuelle entre caractère («e» équivalent à «E», «é», «è») Type de collation en fonction du classement _bin : dans l ordre, majuscules d abord, minuscules ensuite, accentuées après, etc. _cs : «case sensitive» _ci : «case insensitive» Collation par défaut Mysql latin1_swedish_ci : collation par défaut de latin1, bien adaptée au français. latin1_german_ci : collation sensée (?) être mieux adaptée au français. Autres collations : latin1_bin, latin1_general_cs, latin1_general_ci, utf8_bin, utf8_general_ci, utf8_unicode_ci. Show collation like «latin1%» ; // collations associées au latin1. Select * from information_schema.collations; // état du dictionnaire des données Show variables like %coll% ; // état des variables d environnement Set @@collation_database="latin1_bin"; My.ini [mysql] default-collation=latin1_german_1 [mysqld] default-collation=latin1_german1_ci BASES DE DONNÉES - Niveau 1 - MySQL - MariaDB - Cours 06 - page 7/14 - Bertrand LIAUDET

5 niveaux de définition : Serveur, Client, Base, Table, Colonne Serveur et client Base Table my.ini Colonnes show variable like select @@global..character_set_database // niveau serveur select @@local..character_set_database // niveau client CREATE DATABASE nomdatabase CHARSET latin1 COLLATE latin1_german1_ci; Show create database nomdatabase; Show variable like character_set_database ; Select @@character_set_database; Show variables like collation_database ; Select @@collation_database; ALTER DATABASE nomdatabase CHARSET latin1 COLLATE latin1_bin; // attention: l alter database modifie les variable @@character_set_database et @@collation_database. Le contraire n est pas vrai. CREATE TABLE nomtable { } CHARSET latin1 COLLATE latin1_bin; // valeurs par défaut ALTER TABLE nomtable CHARSET latin1 COLLATE latin1_bin; // valeurs par défaut CREATE TABLE nomtable {, att1 varchar(50) CHARSET latin1 COLLATE latin1_bin, }; // valeur par défaut de la colonne ALTER TABLE nomtable ADD COLUMN attx varchar(50) CHARSET latin1 COLLATE latin1_bin; // valeur par défaut de la colonne SHOW FULL COLUMNS FROM nomtable ; SELECT DISTINCT CHARSET(attribute) FROM nomtable; BASES DE DONNÉES - Niveau 1 - MySQL - MariaDB - Cours 06 - page 8/14 - Bertrand LIAUDET

Conversion : CONVERT La conversion pose un problème quand un caractère du jeu de départ n a pas d équivalent dans le jeu d arrivée. Une colonne est convertie quand on change son jeu ou sa collation. Pour convertir une table il faut utiliser la fonction CONVERT Conversion niveau colonne ALTER TABLE nomtable MODIFY attx varchar(50) CHARSET latin1 COLLATE latin1_bin; // conversion de la colonne Conversion niveau table ALTER TABLE nomtable CONVERT TO CHARSET latin1 COLLATE latin1_bin ; // conversion de toutes les colonnes et des valeurs par défaut de la table. Conversion dans les SELECT Forcer la sensibilité à la casse : binary, collate SELECT * from table WHERE BINARY attribut = TOTO ; SELECT * from table WHERE attribute COLLATE latin1_bin= TOTO ; Les toto en minuscules ne rentreront pas dans le resultats. Changer de jeu de caractères SELECT WHERE CONVERT(attribut USING utf8) Changer de jeu de caractères et de collation SELECT WHERE CONVERT(attribut USING utf8) collate utf8_unicode_ci Usages Unicode niveau serveur (jeu de caractères le plus large : exemple : utf8) ISO niveau client (jeu de caractères plus restreint et mieux adapté : exemple : latin1) En latin1, la collation par défaut est : latin1_swedish_ci. Il semblerait que la collation : latin1_german1_ci soit plus adapté au français. En théorie, l utf8 n est sensible ni à la casse, ni aux accents. Pour pouvoir regrouper des mots distingués uniquement par leurs accents, on peut passer l attribut en utf8, soit au niveau du select, soit au niveau de l attribut de la table. En pratique, c est moins convaincant BASES DE DONNÉES - Niveau 1 - MySQL - MariaDB - Cours 06 - page 9/14 - Bertrand LIAUDET

SQL : CONSULTATION DE LA BD - SUITE Les requêtes SQL qu on applique sont les mêmes que celles déjà abordées dans les cours/tp précédents : Projection Restriction Tri Statistiques Jointures naturelles Les jointures naturelles fonctionnent selon le même principe que celui abordé dans le cours/tp précédent. BASES DE DONNÉES - Niveau 1 - MySQL - MariaDB - Cours 06 - page 10/14 - Bertrand LIAUDET

TP N 6 : TABLES-VERBES Présentation Base : «biblio» DDL : créer la base SELECT : répondre aux questions DML : mise à jour de la BD Méthode Travail à faire Dans un fichier texte à votre nom+tp06.txt, écrire les questions et les réponses les unes à la suite des autres. Après chaque requête, on met, en commentaire, le nom de l attribut clé primaire de la table résultat Mettez le résultat obtenu dans le fichier (copier-coller). Sur papier : faire le graphe de la question. Méthode de travail A partir du fichier texte votrenomtp06.txt, faire des copier-coller dans la calculette SQL ou dans utiliser un fichier de test avec un source, et copier coller la bonne requête dans le rapport de TP. Ordre de projection des attributs Requête sans fonction de groupe Attributs de tri, Cle Primaire, Clé Significative, Attributs demandés, Attributs de restriction Requête avec fonctions de groupe Attributs de tri, attributs du group by, fonctions de groupe demandées, fonctions de groupe de restriction (du having). BASES DE DONNÉES - Niveau 1 - MySQL - MariaDB - Cours 06 - page 11/14 - Bertrand LIAUDET

Exercice 1 : DDL : Création de la BD Présentation On travaillera sur les tables suivantes : OEUVRES(NO, TITRE, AUTEUR) NO numéro de l œuvre. Clé primaire. LIVRE titre de l oeuvre AUTEUR auteur de l oeuvre ADHERENTS(NA, NOM, VILLE) NA numéro d adhérent. Clé primaire. NOM nom de l adhérent. PRENOM prénom de l adhérent. ADR adresse de l adhérent. TEL téléphone de l adhérent. LIVRES (NL, EDITEUR, #NO) NL numéro du livre. Clé primaire. EDITEUR éditeur du livre NO numéro de l oeuvre. Clé étrangère. EMPRUNTER(#NL, DATEMP, DATRETMAX, DATRET, #NA) #NL numéro de livre. Clé primaire. Clé étrangère. DATEMP date d emprunt du livre. Clé primaire. DATRETMAX date limite de retour autorisée. DATRET date de retour effectif du livre. #NA numéro d adhérent. Clé étrangère. Exercices 1. Télécharger le script de création de la BD : BiblioTP06.txt 2. Faire le graphe des tables. 3. Lancer ce script de création de la BD. BASES DE DONNÉES - Niveau 1 - MySQL - MariaDB - Cours 06 - page 12/14 - Bertrand LIAUDET

Exercice 2 : SELECT : Interrogation de la BD 4. Consulter le contenu de toutes les tables. 5. Faire le produit cartésien de la table Emprunter avec la table des Livres et la table des Adhérents. Combien y a-t-il d attributs dans la table résultat. Afficher les résultats en mode «fiche» (\G). Combien y a-t-il de tuples dans la table résultat? Quelle est la Clé primaire? Refaire la question en projetant uniquement les clés primaires et significatives. Quel tri faudrait-il faire pour clarifier l interprétation des résultats? Afficher les 200 premiers. 6. Faire la jointure naturelle de la table Emprunter avec la table des Livres et la table des Adhérents. Combien y a-t-il d attributs dans la table résultat. Afficher les résultats en mode «fiche» (\G). Combien y a-t-il de tuples dans la table résultat? Quelle est la Clé primaire? Refaire la question en projetant uniquement les clés primaires et significatives. Quel tri faudrait-il faire pour clarifier l interprétation des résultats? 7. Faire la jointure naturelle de la table Emprunter avec la table des Livres, la table des Oeuvres et la table des Adhérents. Combien y a-t-il d attributs dans la table résultat. Combien y a-t-il de tuples dans la table résultat? Quelle est la Clé primaire? Refaire la question en projetant uniquement les clés primaires et significatives. Quel tri faudrait-il faire pour clarifier l interprétation des résultats? 8. Quels sont les livres actuellement empruntés? 9. Quels sont les livres empruntés par Jeannette Lecoeur? Vérifier dans la réponse qu il n y a pas d homonymes. 10. Quels sont tous les livres empruntés en août 2008. 11. Tous les adhérents qui ont emprunté un livre de Fedor Dostoievski. 12. Quels sont le ou les auteurs du titre «Voyage au bout de la nuit» 13. Quels sont les ou les éditeurs du titre «Narcisse et Goldmund» 14. Quels sont les adhérents actuellement en retard? 15. Quels sont les livres actuellement en retard? 16. Quels sont les adhérents en retard avec le nombre de livre en retard et la moyenne du nombre de jour de retard. BASES DE DONNÉES - Niveau 1 - MySQL - MariaDB - Cours 06 - page 13/14 - Bertrand LIAUDET

17. Nombre de livres empruntées par auteur. 18. Nombre de livres empruntés par éditeur. 19. Durée moyenne des emprunts rendus. On commencera par afficher les durées des emprunts rendus. 20. Durée moyenne des retards pour l ensemble des emprunts. La fonction «if» permet de tester une valeur et de renvoyer ce qu on souhaite selon la vérité ou la fausseté de la valeur testée. if(a<0, 0, a) : permet de ramener les valeurs négatives de a à 0. 21. Durée moyenne des retards parmi les seuls retardataires. Exercice 3 : DML : Mise à jour de la BD 22. La bibliothèque vient d acquérir un nouveau exemplaire de : «Au cœur des ténèbres» de Joseph Conrad, chez Gallimard. Faire la mise à jour de la BD. 23. Ecrire les commandes qui permettent de retirer tout ce que vous avez ajouté. 24. La bibliothèque vient d acquérir un nouveau livre de Hermann Hesse intitulé «Siddhartha» chez Folio. Faire la mise à jour de la BD. 25. Ecrire les commandes qui permettent de retirer tout ce que vous avez ajouté (supprimer une œuvre et les livres correspondants). 26. Un nouvel adhérent vient s inscrire : Olivier DUPOND, 76, quai de la Loire, 75019 Paris, téléphone : 0102030405 27. Martine CROZIER vient emprunter «Au cœur des ténèbres» que vous venez d ajouter et Le rouge et le noir chez Hachette, livre n 23. Faire les mises à jour de la BD. 28. M. Cyril FREDERIC ramène les livres qu il a empruntés. Faire la mise à jour de la BD. 29. M. Cyril FREDERIC essaye d emprunter le livre n 23. Que constatez vous? 30. M. Cyril FREDERIC essaye d emprunter le livre n 29. Que constatez vous? BASES DE DONNÉES - Niveau 1 - MySQL - MariaDB - Cours 06 - page 14/14 - Bertrand LIAUDET