Bases de données (SQL)



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

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

Olivier Mondet

SQL Historique

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

CREATION WEB DYNAMIQUE

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

Bases de données relationnelles

Création et Gestion des tables

1. Base de données SQLite

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

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

Langage SQL : créer et interroger une base

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

Le Langage De Description De Données(LDD)

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

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

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

Les BASES de DONNEES dans WampServer

TP3 : Creation de tables 1 seance

Le Langage SQL version Oracle

I4 : Bases de Données

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

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

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

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

Cours Bases de données 2ème année IUT

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

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

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

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

TP Contraintes - Triggers

Devoir Data WareHouse

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

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

Historisation des données

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Objectifs du TP : Initiation à Access

Compétences Business Objects

Les bases de données

BTS/CGO P10 SYSTEME INFORMATION Année

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

1/ Présentation de SQL Server :

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

Vincent Augusto

FileMaker 13. Guide de référence SQL

A QUOI SERVENT LES BASES DE DONNÉES?

I. MySQL : Serveur et SGBD

OpenPaaS Le réseau social d'entreprise

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

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

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

16H Cours / 18H TD / 20H TP

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

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

A QUOI SERVENT LES BASES DE DONNÉES?

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Intégrité des données

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

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

BASES DE DONNEES TP POSTGRESQL

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Pratique et administration des systèmes

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Structured Query Language

MySQL / SQL EXEMPLES

Information utiles. webpage : Google+ : digiusto/

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

Sybase Adaptive Server Enterprise 15

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

Bases de données élémentaires Maude Manouvrier

Mysql avec EasyPhp. 1 er mars 2006

SUPPORT SQL. Thierry GRANDADAM

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

1 Position du problème

Encryptions, compression et partitionnement des données

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

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

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.

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Gestion de base de données

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Résumé S Q L. Auteur: Alexandre PATIN Edition: 22 février alexandre.patin@free.fr URL :

Systèmes de Gestion de Bases de Données

Introduction aux Bases de Données 2004/2005

Bases de données Outils de gestion

Chapitre 11 Bases de données

Bases de données avancées

Comprendre les bases de données

Cours: Administration d'une Base de Données

Exercices et solutions

MODE OPERATOIRE OPENOFFICE BASE

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

Le langage SQL Rappels

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Sommaire. Etablir une connexion avec une base de données distante sur PostGreSQL

Transcription:

Skander Zannad et Judicaël Courant Lycée La Martinière-Monplaisir 2014-03-26

1 Le modèle logique (MLD) On a représenté des données par des tables. Par exemple, pour les films : titre date Gran Torino 2008 The good, the Bad and the Ugly 1966 Study in Pink 2010 Schindler s List 1993 Dr Strangelove 1964 Invictus 2009 Skander Zannad et Judicaël Courant 2

Au départ, on a identifié les films par leur titre. On dit que le champ titre de la table «films» est une clé primaire pour signifier que : tout film a un titre ; pour un titre donné, il y au plus un film ayant ce titre ; on fera référence à tout film par son titre. Une clé primaire peut être constituée de plusieurs champs. Skander Zannad et Judicaël Courant 3

Exemple pour la table «personnes», le couple (nom, prénom). On dit qu il s agit d une clé primaire composée. nom prénom datenaissance Kubrick Stanley 1928 Spielberg Steven 1946 Eastwood Clint 1930 Cumberbatch Benedict 1976 Freeman Martin 1971 Leone Sergio 1929 McGuigan Paul 1963 Sellers Peter 1925 Skander Zannad et Judicaël Courant 4

Dans la table «joue», on fait référence à ces clés. On dit que les champs (nom, prénom) de la table «joue» sont une clé étrangère car ils font référence à une clé primaire de la table «personnes». Skander Zannad et Judicaël Courant 5

nom prenom titre nom (de personnage) Eastwood Clint The good, the Bad and the Ugly Blondie Eastwood Clint Gran Torino Walt Kowalski Cumberbatch Benedict Study in Pink Sherlock Holmes Freeman Martin Study in Pink Dr John Watson Selers Peters Dr Strangelove Dr Strangelove Selers Peters Dr Strangelove Group Capt. Lionel Mandrake Selers Peters Dr Strangelove President Merkin Muffley Skander Zannad et Judicaël Courant 6

2 Vers le modèle physique (MPD) Pour implanter cette base de données on peut choisir n importe quel langage de programmation. Mais tous les langages ne sont pas aussi adaptés à la modélisation et l interrogation des données. Skander Zannad et Judicaël Courant 7

2.1 SQL SQL 1 : Standard Query Language Langage spécialisé : Langage de définition de données (LDD ou DDL), pour définir le format des données ; Langage de manipulation de données (LMD ou DML) pour ajouter ou supprimer des données ; Instruction SELECT pour effectuer des requêtes (recherches) sur les données. 1. Prononcer comme le mot anglais sequel. Skander Zannad et Judicaël Courant 8

C est le standard actuel (décliné en différentes versions), implanté dans les systèmes de gestion de bases de données. Skander Zannad et Judicaël Courant 9

2.2 Définition de tables Nous allons utiliser SQLite, un outil très dépouillé pour la manipulation d une base de données. En SQlite, une base de données est stocké dans un fichier (et tout fichier contient une unique base de données). Skander Zannad et Judicaël Courant 10

Lancement de SQLite En ligne de commande, taper sqlite3 f pour lancer l interface (textuelle) de sqlite3. Cette commande : ouvre la base de données contenue dans le fichier f ; crée cette base si ce fichier n existe pas. Skander Zannad et Judicaël Courant 11

Table «personne» On va créer une table «personne» avec 4 champs : id nom prenom datenaissance Il reste à préciser le type des données que contiendront ces champs. Skander Zannad et Judicaël Courant 12

Types de données en SQL Nombreux types de données, dont : VARCHAR(n) Une chaîne de caractères d au plus n caractères ; INT ou INTEGER REAL nombre flottant DECIMAL(p, s) décimaux sur p chiffres, dont s après la virgule. DATE une date (exemple : 2014-03-27) TIME une heure de la journée (exemple 15 :43 :07, précision en général 10 7 s). DATETIME Couple des deux précédents (ex : 2014-03-27 15 :43 :07). Skander Zannad et Judicaël Courant 13

2.3 Définition des tables Fait l objet de la partie de SQL appelée DDL (Data Definition Language). Les deux opérations les plus importantes : CREATE Pour créer une table ; DROP Pour effacer une table («DROP TABLE nomtable ;»). Skander Zannad et Judicaël Courant 14

Utilisation : CREATE TABLE PERSONNE ( id INTEGER, nom VARCHAR( 50) NOT NULL, prenom VARCHAR( 50) NOT NULL, datenaissance DATE, PRIMARY KEY( id ) ) ; NB : ne pas oublier de terminer les commandes par des «;» noter la déclaration de la clé primaire. Skander Zannad et Judicaël Courant 15

On crée de même la table «personnage» : CREATE TABLE PERSONNAGE ( id INTEGER, nom VARCHAR( 50) NOT NULL, PRIMARY KEY( id ) ) ; Skander Zannad et Judicaël Courant 16

et la table «joue» CREATE TABLE JOUE ( idacteur INTEGER, idfilm INTEGER, idpersonnage INTEGER, PRIMARY KEY( idacteur, idfilm, idpersonnage ), FOREIGN KEY( idacteur ) REFERENCES PERSONNE, FOREIGN KEY( idfilm ) REFERENCES FILM, FOREIGN KEY( idpersonnage ) REFERENCES PERSONNAGE ) ; Notez les déclarations de clés étrangères. Skander Zannad et Judicaël Courant 17

CREATE TABLE FILM ( id INTEGER, titre VARCHAR( 50) NOT NULL, date DATE, idrealisateur INTEGER, PRIMARY KEY( id ), FOREIGN KEY( idrealisateur ) REFERENCES PERSONNE ) ; Skander Zannad et Judicaël Courant 18

2.4 Data Manipulation Language (DML) Insertions de valeurs On peut insérer une donnée : INSERT INTO PERSONNE ( nom, prenom, datenaissance ) VALUES( Kubrick, Stanley, date ( 1928 07 26 ) ) ; Skander Zannad et Judicaël Courant 19

NB : on n a pas donné de valeur pour id. Pour une clé primaire entière, la base de données donne une valeur si on ne la fournit pas ; On peut indiquer lors de la création de la table une valeur par défaut pour les champs manquants, sinon la valeur NULL est mise par défaut, sauf si on l a interdit lors de la création de la table. Skander Zannad et Judicaël Courant 20

Exemples : INSERT INTO PERSONNE ( prenom, nom ) VALUES ( C l i n t, Eastwood ) ; est accepté (pas de date de naissance renseignée). NB : pas besoin de mettre les champs dans le même ordre que dans la déclaration de la table. Skander Zannad et Judicaël Courant 21

INSERT INTO PERSONNE ( nom ) VALUES ( S p i e l b e r g ) ; déclenche une erreur : Error: PERSONNE.prenom may not be NULL Skander Zannad et Judicaël Courant 22

Modification de valeurs UPDATE PERSONNE SET datenaissance = date ( 1930 05 31 ) WHERE prenom = C l i n t AND nom = Eastwood ; Suppression de valeurs DELETE FROM PERSONNE WHERE prenom= C l i n t ; Skander Zannad et Judicaël Courant 23

Vérification des contraintes de clés primaires INSERT INTO PERSONNE ( id, prenom, nom ) VALUES (3, Steven, S p i e l b e r g ) ; INSERT INTO PERSONNE ( id, prenom, nom ) VALUES (3, Benedict, Cumberbatch ) ; Première insertion acceptée, la deuxième donne : Error: PRIMARY KEY must be unique Skander Zannad et Judicaël Courant 24

2.5 Requêtes Les requêtes SQL sont introduites par le mot-clé SELECT. Une requête retourne une liste de n-uplets. Skander Zannad et Judicaël Courant 25

Lister tous les éléments d une table SELECT FROM personne ; id nom prenom datenaissance 1 Kubrick Stanley 1928-07-26 2 Spielberg Steven 1946-12-18 3 Eastwood Clint 1930-05-31 4 Cumberbatch Benedict 1976-07-19 5 Freeman Martin 1971-09-08 6 Leone Sergio 1929-01-03 7 McGuigan Paul 1963-09-19 8 Sellers Peter 1925-09-08 Skander Zannad et Judicaël Courant 26

Lister certaines colonnes d une table SELECT nom, prenom FROM PERSONNE ; nom Kubrick Spielberg Eastwood Cumberbatch Freeman Leone McGuigan Sellers prenom Stanley Steven Clint Benedict Martin Sergio Paul Peter Skander Zannad et Judicaël Courant 27

Lister certaines lignes d une table Si on sait que Clint Eastwood est le réalisateur no 3 : SELECT titre, date FROM FILM WHERE idrealisateur = 3; titre date Gran Torino 2008 Invictus 2009 Skander Zannad et Judicaël Courant 28

Et sinon : SELECT FILM. titre, FILM. date FROM FILM, PERSONNE WHERE idrealisateur = PERSONNE. id AND nom = Eastwood ; titre date Gran Torino 2008 Invictus 2009 Skander Zannad et Judicaël Courant 29

Ensembles ou listes? SELECT nom, prenom FROM PERSONNE, JOUE WHERE id = idacteur ; nom Eastwood Eastwood Cumberbatch Freeman Sellers Sellers Sellers prenom Clint Clint Benedict Martin Peter Peter Peter Skander Zannad et Judicaël Courant 30

SELECT ne retourne pas un ensemble de n-uplets mais en fait une liste de n-uplets : il peut y avoir des doublons. On peut les supprimer : SELECT DISTINCT nom, prenom FROM PERSONNE, JOUE WHERE id = idacteur ; nom Eastwood Cumberbatch Freeman Sellers prenom Clint Benedict Martin Peter Skander Zannad et Judicaël Courant 31

Tri des résultats On peut trier la liste retournée : SELECT DISTINCT nom, prenom FROM PERSONNE, JOUE WHERE id = idacteur ORDER BY nom ASC, prenom ASC ; nom Cumberbatch Eastwood Freeman Sellers prenom Benedict Clint Martin Peter Skander Zannad et Judicaël Courant 32

Requêtes agrégats SELECT COUNT( ) AS nbfilms FROM FILM ; nbfilms 6 Skander Zannad et Judicaël Courant 33

SELECT MIN( date ) AS date premier f i l m FROM FILM ; date premier film 1964 Skander Zannad et Judicaël Courant 34

On peut calculer des cumuls. Par exemple, le nombre de films que les différents réalisateurs ont tournés : SELECT nom, prenom, COUNT( ) as nbfilms FROM PERSONNE, FILM WHERE idrealisateur = PERSONNE. id GROUP BY PERSONNE. id ; Skander Zannad et Judicaël Courant 35

nom prenom nbfilms Kubrick Stanley 1 Spielberg Steven 1 Eastwood Clint 2 Leone Sergio 1 McGuigan Paul 1 Skander Zannad et Judicaël Courant 36

Pour compter dans combien de films chaque acteur a joué : SELECT nom, prenom, COUNT( ) FROM PERSONNE, JOUE WHERE PERSONNE. id=idacteur GROUP BY PERSONNE. id ; nom prenom COUNT(*) Eastwood Clint 2 Cumberbatch Benedict 1 Freeman Martin 1 Sellers Peter 3 Skander Zannad et Judicaël Courant 37

Aïe, ce n est clairement pas ce qu on voulait (Peter Sellers n a joué que dans un film de notre base de données). Pourquoi? Skander Zannad et Judicaël Courant 38

Façon possible de corriger (compliquée) SELECT nom, prenom, COUNT( ) AS nbfilms FROM PERSONNE, FILM WHERE EXISTS (SELECT FROM joue WHERE PERSONNE. id=idacteur AND FILM. id=idfilm ) GROUP BY PERSONNE. id ; Skander Zannad et Judicaël Courant 39

nom prenom nbfilms Eastwood Clint 2 Cumberbatch Benedict 1 Freeman Martin 1 Sellers Peter 1 Skander Zannad et Judicaël Courant 40

La condition WHERE porte sur les données qu on va ensuite agréger. On peut aussi mettre des conditions sur les agrégats à retenir : SELECT nom, prenom, COUNT( ) AS nbroles FROM personne, joue WHERE personne. id=idacteur GROUP BY personne. id HAVING COUNT( ) >= 2; nom prenom nbroles Eastwood Clint 2 Sellers Peter 3 Skander Zannad et Judicaël Courant 41

Exercices Donner des requêtes pour : trouver les acteurs qui sont aussi des réalisateurs ; trouver les acteurs nés le 1er janvier 1930 ou après ; compter les acteurs nés avant le 1er janvier 1940 ; trouver les acteurs qui ont joué au moins dans un film où jouait Martin Freeman ; trouver les réalisateurs qui ont dirigé Clint Eastwood. Skander Zannad et Judicaël Courant 42