CONCEPTS BD - Synthèse journée 1 :

Slides:



Advertisements
Présentations similaires
Bases de Données Avancées: Bases de Données Relationnelles
Advertisements

Vocabulaire pour la passage du modèle conceptuel des données au modèle relationnel des données. MCDMRD EntitéTable PropriétésChamps, attribut IdentifiantClé
Formation au référentiel 1 STG (Sciences et technologie de la gestion)
MySQL et PHP.
Les requêtes Manière de dialoguer avec une base de donnée pour :
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Initiation aux bases de données et à la programmation événementielle
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
Initiation au système d’information et aux bases de données
LMD: Langage de Manipulation de Données
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
Contrôles d'accès aux données
L’utilisation des bases de données
Rappel sur les bases de données et le vocabulaire
BASE DE DONNEES RELATIONNELLES
Le langage SQL.
Chap 4 Les bases de données et le modèle relationnel
Bases de données et SGBD relationnels
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
Algèbre relationnelle et SQL
SQL Partie 3 : (LID : Langage d'interrogation de données)
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL PHILIPPE BANCQUART.
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
Les concepts et les méthodes des bases de données
Manipulation des données Requêtes simples
Initiation aux bases de données et à la programmation événementielle
Limiter et trier des données
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
Chapitre 5 : Le langage SQL
SQL Partie 1.
Chap 4.5 : SQL (LDD) LDD : Langage de définition de données Réfs : Manuel p105.
Présenté par COMTE Jeremy et DE LAZZARI Thomas Sommaire b Présentation générale b Include b Notion de variables b MySQL.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Rédigez le modèle relationnel à la source des tables de biblio.mdb.
 Requêtes MySQL en PHP Introduction
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
PostgreSQL – Présentation
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Sélection de colonnes (la projection)
Cours SQL.
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Copyright  Oracle Corporation, Tous droits réservés. 2 Sélection et Tri des Lignes Retournées par un SELECT.
Création et Gestion de Tables
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
Structured Query Language 1/34. SQL Types de données Langage de Définition de Données (LDD) Langage de Manipulation de Données (LDM) Langage de Contrôle.
Le langage SQL.
Séance /10/2004 SGBD - Approches & Principes.
Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage d’interrogation de données. (Les requêtes statistiques et autres).
Initiation aux bases de données et à la programmation événementielle
1 Initiation aux bases de données et à la programmation événementielle Cours N°8 : Gestion de la cohérence avec des zones de liste déroulantes. Souheib.
Op é rateurs ensemblistes Module 4. 2 La clause GROUP BY La clause GROUP BY est nécessaire dès que l'on utilise des fonctions de calculs statistiques.
Cours n°2 Implémentation et exploitation
Le Langage d ’ Interrogation des donn é es (LID) Module 2.
Les vues, indexes, séquences.  Qu’est ce qu’une vue 1. Une vue est une vision partielle ou particulière des données d'une ou plusieurs tables de la base.
Analyse, élaboration et exploitation d’une Base de Données
Le Langage de Manipulation de Données LMD Module 6.
Le langage SQL LA Plan 1. Introduction Rappels sur le modèle relationnel Les caractéristiques du langage SQL 2. Le Langage d'Interrogation des.
De Arnault Chazareix :
Les bases de données Séance 4 Construction du Modèle Physique (la BDD)
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
1 Les bases de données Séance 6 L ’extraction de données Le SELECT.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 8 Support de cours rédigé par Bernard COFFIN Université.
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
Transcription de la présentation:

CONCEPTS BD - Synthèse journée 1 : Matin : TP analyse >> création schéma relationnel BD_HOTEL AM : création de la BD sous phpMyAdmin 4.4 en ligne https://www.phpmyadmin.net/try/ > Schéma relationnel corrigé sur vos lecteurs réseaux DISII / TSDI + TP1_BD_Hotel corrigée et remplie exportée en .sql > TP1_Hotel sur http://srvlinux > Votre BD exportée : savoir importer dans autres SGBD > TP matin 2 : requêtes SQL sur papier > TP am 2 : requêtes SQL sur BD en ligne sur http://srvlinux

CONCEPTS BD - Synthèse journée 1 : NOTIONS FONDAMENTALES A RETENIR Schéma relationnel Clé primaire / clé secondaire (ou étrangère) - conventions PK_ et FK_ Liaison et mise en relation (concepteur) Champs 1 enregistrement = 1 ligne de données de la table Cardinalités Propriétés : INDEX / AUTO INCREMENT / UNSIGNED / INTERCLASSEMENT Méthodologie : Dictionnaire des données Cohérence des données dans les tables : relation impossible si données incohérentes Commencer par créer les tables les + périphériques pour finir par les tables les plus centrales

INTERROGER DES BASES DE DONNEES AVEC LE LANGAGE SQL

Formateur : Céline WALTZER LE LANGAGE SQL Définition : Structured Query Language Usages : langage informatique normalisé permettant d'effectuer des requêtes ou de gérer des SGBD DDL (Data Definition Language) DML (Data Manipulation Language) DCL (Data Control Language) TCL (Transaction Control Language) SQL est le langage des BD relationnelles permettant toutes les actions suivantes : DDL : Ordres SQL pour créer, modifier ou supprimer les objets d'une BD (tables, contraintes…) DML : Ordres SQL permettant d’ajouter, de modifier, de supprimer ou d’extraire des données dans les tables DCL : Ordres SQL permettant de définir les privilèges des utilisateurs / gestion de la sécurité et des droits d'accès TCL : ordres permettant de gérer les transactions des 3 premiers / Traitements locaux des données (création de procédures) >> extension aujourd'hui à l'orienté objet Contextes d'utilisation : le langage SQL peut être utilisé des manières suivantes : Transmettre des instructions SQL via ODBC Transmettre des instructions SQL via un autre langage de programmation (ex : instructions incluses dans du code source) Utiliser le langage SQL directement dans le SGBD pour exécuter des actions ou créer des procédures stockées Formateur : Céline WALTZER

Formateur : Céline WALTZER LES NORMES SQL… Le langage SQL est normalisé depuis 1986. Cette norme s'est enrichie au fil du temps. La 1ère norme SQL-86 ou SQL-1 était le résultat de compromis entre constructeurs (fortement influencée par IBM). Environ 100 pages En 1989 d'importantes révisions furent apportées concernant l'intégrité référentielle. La 2ème norme SQL-2 ou SQL92 définissait 4 niveaux de conformité (volume de 600 pages environ). niveau d'entrée (entry level) : renommage colonnes de résultats, utilisation mots-clés pour relation… niveau "transitional level" : abandonné - niveau intermédiaire (intermediate level) : nouveaux types de données, algèbre relationnelle, modification schéma BD niveau supérieur (full SQL level) : gestion relations temporaires, types de données supplémentaires… Les langages SQL des différents éditeurs sont tous conformes au 1er niveau, et possèdent beaucoup de caractéristiques relevant des niveaux supérieurs. A partir de 1993 des groupes de travail se penchèrent sur les améliorations et extensions à apporter à la précédente norme. C'est seulement en 1999 que la nouvelle norme est apparue. Ce retard est dû aux difficultés des nombreux éditeurs à se mettre d'accord sur la normalisation des nouveaux points (cela implique de remettre en question les manières de pensée et organisation des SGBD). Les modifications apportées forçaient les éditeurs à assurer la compatibilité des BD de leurs clients. Les apports de SQL-99 : développement procédural, requêtes récursives, déclencheurs (règles déclenchées par événements), quelques fonctions orienté objet. La norme SQL:2003 introduit des fonctions pour la manipulation XML, des fonctions de fenêtrage, Les apports de SQL:2008 : extraction de sous-tableaux, limitation du nombre de lignes, ajout de fonctions de fenêtrage…   Aujourd'hui la plupart des SGBD respectent l'intégralité des normes SQL-2 et SQL-3. Pour plus d'informations sur les normes SQL : http://www.jcc.com/sql.htm Pour plus d'informations sur la norme SQL 3 : http://sqlpro.developpez.com/cours/avenirsql/ 2011 – norme SQL:2011 2011 http://fr.wikipedia.org/wiki/Structured_Query_Language Formateur : Céline WALTZER

Client MySQL en ligne de commande Etablir une connexion au serveur MySQL : mysql> mysql –h serveurdistant –u user –p pwd Afficher les bases de données existantes : mysql> show databases; Sélectionner une des BD : mysql> use nomdelaBD; Afficher les tables d'une BD : mysql> show tables; Afficher les caractéristiques d'une table (structure): mysql> describe nomdelatable; Lister les enregistrements d'une table : mysql> select * from nomdelatable; Quitter / stopper la connexion : mysql> exit ou quit Astuces avec le client en ligne de commande : CTRL + A : pour aller au début de la ligne de commande CTRL + E : pour aller à la fin de la ligne de commande Flèche vers le haut : pour retrouver les commandes saisies précédemment CTRL + K : supprime le reste des caractères de la commande à partir du curseur Interruption d'une requête avec \c Finir chaque ligne de commande avec un ; Pour avoir de l'aide saisir le symbole : ? ou taper : help contents Sensible à la casse pour les noms de BD, tables et champs Pas sensible à la casse pour les commandes Formateur : Céline WALTZER

Formateur : Céline WALTZER TYPES DE DONNEES SQL-2 NUMERIQUE NUMERIC (ou DECIMAL) Pour les types réels NUMERIC, DECIMAL, DEC et FLOAT, on doit spécifier le nombre de chiffres significatifs et la précision des décimales après la virgule INTEGER (ou INT) SMALLINT FLOAT REAL DOUBLE PRECISION BIT ALPHA-NUM CHAR Ces types de données sont codés sur 2 octets (EBCDIC ou ASCII) et on doit spécifier la longueur de la chaîne VARCHAR NCHAR Ces types de données sont codés sur 4 octets (UNICODE) et on doit spécifier la longueur de la chaîne. NVARCHAR TEMPOREL DATE TIME TIMESTAMP INTERVAL TABLEAU COMPARATIF Formateur : Céline WALTZER

Formateur : Céline WALTZER REQ – SELECTIONS 1/9 L'ordre SELECT possède 6 clauses différentes. Seules les 2 premières sont obligatoires. L'ordre des clauses est important et ne peut être modifié. On y indique les colonnes ou expressions à retourner SELECT … FROM … WHERE … GROUP BY … HAVING … ORDER BY … On y indique les tables participant à l'interrogation Pour préciser les enregistrements à retourner parmi les réponses Pour déterminer des regroupements dans les réponses Pour préciser quels groupes doivent être sélectionnés Précise l'ordre croissant ou décroissant d'affichage par champ ATTENTION A LA CASSE !!! La table "Clients" Ou "clients" Ou "CLIENTS" Sont 3 tables différentes Formateur : Céline WALTZER

Formateur : Céline WALTZER REQ – CLAUSE SELECT 2/9 OBLIGATOIRE Pour extraire toutes les colonnes SELECT * FROM nomdelatable Pour extraire sans doublons SELECT DISTINCT champ1 FROM … Pour afficher un autre titre dans les résultats SELECT champ1 AS nouveaunom FROM … Ambiguïté de noms de colonnes : nomdelatable.nomdelacolonne Attention au SELECT * : Peut utiliser beaucoup de bande passante (si enregistrements lourds et nombreux) ne pas faire confiance en l'ordre des champs retournés utilisé juste pour tester En ce qui concerne le mot-clé AS le nom qui suit ne peut pas dépasser 30 caractères. Si le nouveau nom contient des séparateurs (espace ou caractère spécial), ou s'il est identique à un mot-clé SQL réservé il doit être mis entre "guillemets". Ce nom constituera le nouveau titre de la colonne lors de l'affichage des résultats de la sélection. Ces noms ne peuvent pas être utilisés dans les autres clauses d'un SELECT. AMBIGUITE DE NOMS DE COLONNES / CHAMPS Si 2 champs ont les mêmes noms mais appartiennent à des tables différentes il faut préciser les noms de la manière suivante : nomdelatable.nomdelacolonne EX : clients.adresse / fournisseur.adresse Le nom de la table peut être omis quand il n'y a pas d'ambiguité Formateur : Céline WALTZER

Formateur : Céline WALTZER REQ – CLAUSE FROM 3/9 OBLIGATOIRE Pour spécifier la ou les tables d'où seront extraits les champs (participent à l'interrogation) SELECT champ1, champ2, champ3, champ4 FROM nomdelatable1, nomdelatable2 ,… WHERE… Si plusieurs tables = produit cartésien des tables Utile pour joindre les infos de différentes tables Si précision des colonnes de « recollement » on effectue une jointure Possibilité de créer des synonymes (évite ambiguïtés) Possibilité de donner des synonymes aux noms de tables temporairement pour la sélection : FROM nomdelatable1 [synonyme1], … On utilise les synonymes pour lever certaines ambiguïtés : Par exemple quand la même table est utilisée de plusieurs façons dans la même requête Quand on a donné un synonyme à une table elle n'est plus reconnue sous son nom d'origine dans la requête. Exemple : Select civilite, nom, prenom, libelle FROM clients CL, categorie CAT where CL.categorie = CAT.categorie Formateur : Céline WALTZER

Formateur : Céline WALTZER REQ – CLAUSE WHERE 4/9 FACULTATIVE Permet de spécifier quels sont les enregistrements à retourner parmi tous ceux trouvés : SELECT … FROM … WHERE condition WHERE champ1 = valeur WHERE champ1 != valeur WHERE champ1 < valeur WHERE champ1 > valeur WHERE champ1 <= valeur WHERE champ1 >= valeur WHERE champ1 BETWEEN valeur1 AND valeur2 WHERE champ1 LIKE '%valeur%' WHERE champ1 NOT LIKE '%valeur%' WHERE champ1 IN (valeur1, valeur2, valeur3) WHERE champ1 IS NULL WHERE champ1 IS NOT NULL Pour l'opérateur BETWEEN : La condition est vraie si la valeur est comprise entre valeur1 et valeur2 (bornes incluses) Pour l'opérateur IN( … , … , … ) : La condition est vraie si la valeur du champ1 est égale à l'une des expressions de la liste entre parenthèses Pour l'opérateur LIKE : Compare 2 chaines de caractères LIKE 'mul%' : mot commençant par mul-… LIKE '%tion' : mot se terminant par …-tion LIKE '%mati%' : mot contenant …-mati-… Caractères joker : _ pour remplacer un caractère / % pour remplacer une chaine de caractères de longueur quelconque, y compris de longueur nulle IS NULL / IS NOT NULL Permet de tester la valeur "null" d'un champ On ne pourra jamais tester la valeur "null" d'un champ avec l'expression where champ=null Select nom, prenom from Clients where adresse is null; Select nom, prenom from Clients where adresse=""; Ces 2 requêtes peuvent toutes 2 fonctionner. Cela dépend des propriétés du champ de la BD. Si le champ accepte les valeurs NULL la 1ère requête fonctionnera mais pas la 2ème Si le champ n'accepte pas les valeurs NULL, même si l'utilisateur n'a pas saisi d'adresse le champ est rempli par un caractère vide (espace) et donc seule la 2ème requête fonctionnera. Il faut donc connaitre les propriétés du champ de la table (NULL autorisé ou non) afin de savoir quelle condition utiliser. Les opérateurs logiques AND / OR / NOT : Ils permettent de combiner plusieurs conditions. L'opérateur AND est prioritaire par rapport à l'opérateur OR. L'opérateur NOT placé devant une condition en inverse le sens. Des parenthèses peuvent être utilisées autour de chaque prédicat pour imposer une priorité, ou simplement pour rendre plus claire l’expression logique. EX : SELECT Nom, Prenom FROM Clients WHERE Dept = 68 AND Age >= 40 SELECT Nom, Prenom FROM Clients WHERE (Dept = 68 OR Dept = 67) AND condition2 OR condition2 Formateur : Céline WALTZER

Formateur : Céline WALTZER REQ – CLAUSE GROUP BY 5/9 FACULTATIVE Permet de regrouper les enregistrements qui ont une valeur en commun : à utiliser pour effectuer des sous-totaux SELECT nom FROM clients (WHERE condition) GROUP BY nom SELECT nom, count(nom) FROM clients … GROUP BY nom SELECT nom, count(nom) FROM clients GROUP BY nom WITH ROLLUP >> ressemble à DISTINCT Cette clause regroupe en une seule ligne toutes les lignes (enregistrements) ayant la même valeur pour le champ spécifié par le GROUP BY. Pour que la requête soit juste le champ spécifié dans la clause GROUP BY se retrouve aussi dans la clause SELECT Concernant les résumés de données / agrégations, la ligne contenant la valeur NULL est automatiquement ajoutée pour afficher les agrégats. Pour plus de précisions sur les résumés de données (agrégations) consulter la page : http://dev.mysql.com/doc/refman/5.0/en/group-by-modifiers.html >> permet de faire des regroupements avec fonction de calcul >> permet de faire des regroupements avec fonction de calcul et résultats intermédiaires (agrégations) Formateur : Céline WALTZER

Formateur : Céline WALTZER REQ – CLAUSE HAVING 6/9 FACULTATIVE Se place après la clause GROUP BY et sert à préciser quels groupes doivent être affichés: SELECT nom, count(nom) FROM adherents GROUP BY nom HAVING count(nom) >=2 Formateur : Céline WALTZER

Formateur : Céline WALTZER REQ – CLAUSE ORDER BY 7/9 FACULTATIVE Permet de trier en ordre croissant et décroissant : SELECT … FROM … WHERE condition ORDER BY ASC / DESC EX : liste les clients par ordre alphabétique SELECT nom, prenom, ville FROM Clients ORDER BY nom ASC Lister les clients du département 67 par ordre alphabétique WHERE departement = 67 Formateur : Céline WALTZER

REQ – LIMITER L’AFFICHAGE 8/9 Il est possible de limiter le nombre de lignes à afficher (ex : que les 5 plus hauts montants) : SELECT … FROM … WHERE condition LIMIT 0,5 ou TOP 5 Pour Oracle il est possible de le faire avec ROWNUM MySQL SQL Server Formateur : Céline WALTZER

Formateur : Céline WALTZER REQ – CASE (contrôle) 9/9 FACULTATIVE Correspond à la structure SWITCH…CASE… et existe depuis la norme SQL2 : SELECT nom, prenom, CASE department WHEN 67 THEN ‘Bas-Rhin’ WHEN 68 THEN ‘Haut-Rhin’ END Dept_adherent FROM adherents SELECT nom, prenom, CASE WHEN CP LIKE '67%' THEN ‘Bas-Rhin’ WHEN CP LIKE '68%' THEN ‘Haut-Rhin’ END Dept_adherent FROM adherents Il existe encore les structures de contrôle suivantes : IF / CASE / LOOP / LEAVE / ITERATE / REPEAT / WHILE Voir sur le site : http://dev.mysql.com/doc/refman/5.0/en/flow-control-constructs.html Formateur : Céline WALTZER

UTILISATION DE FONCTIONS Fonctions de groupe pouvant être utilisée dans la clause SELECT ou HAVING : AVG moyenne SUM somme MIN renvoie + petite valeur MAX renvoie + grande valeur VARIANCE variance STDDEV écart type COUNT(*) compte nb lignes COUNT(colonne) compte nb valeurs non nulles de la colonne COUNT(DISTINCT colonne) compte nb valeurs non nulles différentes TABLEAU COMPARATIF EX : SELECT COUNT(*) FROM Clients >> renvoie le nb de clients (enregistrements de la table clients) SELECT SUM(Montant) FROM Facture WHERE IDClient = 54 >> renvoie le montant total des achats du client N°54 SELECT Nom, Prenom FROM Clients WHERE AGE = (SELECT MAX(AGE) FROM Clients) >> renvoie le nom et prénom du client le plus âgé Formateur : Céline WALTZER