Bases de données relationnelles

Documents pareils
Le langage SQL Rappels

1 Introduction et installation

Langage SQL : créer et interroger une base

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Les bases de données

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

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

SQL Historique

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

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

16H Cours / 18H TD / 20H TP

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

Cours 4 : Agrégats et GROUP BY

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

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

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

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

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

Optimisation SQL. Quelques règles de bases

Bases de données relationnelles

Le Langage SQL version Oracle

FileMaker 13. Guide de référence SQL

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

MODE OPERATOIRE OPENOFFICE BASE

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

INTRODUCTION : Données structurées et accès simplifié

INTRODUCTION AU DATA MINING

MySQL / SQL EXEMPLES

CREATION WEB DYNAMIQUE

Bases de Données. Plan

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

Les bases de l optimisation SQL avec DB2 for i

Durée : 4 heures coefficient : 4 Le sujet se présente sous la forme de deux dossiers indépendants

Oracle Décisionnel : Modèle OLAP et Vue matérialisée D BILEK

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

La présente publication est protégée par les droits d auteur. Tous droits réservés.

TP Bases de données réparties

Vincent Augusto

Systèmes de Gestion de Bases de Données

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

OLAP : Mondrian + Pentaho. Maguelonne Teisseire Hugo Alatrista Salas hugo.alatrista- salas@teledetec9on.fr Flavien Bouillot

Session S12 Les bases de l optimisation SQL avec DB2 for i

Mysql avec EasyPhp. 1 er mars 2006

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

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

Introduction aux Bases de Données 2004/2005

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

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

Bases de données élémentaires Maude Manouvrier

Bases de données Outils de gestion

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

Bases de données multidimensionnelles et mise en œuvre dans Oracle

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Les Entrepôts de Données

Base de données relationnelle et requêtes SQL

Les BASES de DONNEES dans WampServer

Auto-évaluation SQL. Document: f0453test.fm 19/04/2012. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

Devoir Data WareHouse

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

Construction d un EDD avec SQL 2008 R2. D. Ploix - M2 Miage - EDD - Création

Présentation Windows Azure Hadoop Big Data - BI

Objectifs du TP : Initiation à Access

Business Intelligence avec Excel, Power BI et Office 365

Structured Query Language

Pratique et administration des systèmes

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic

Olivier Mondet

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

Cours Bases de données

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

Quelques aspects du Relationnel-Objet du SGBD Oracle

Bases de Données. Stella MARC-ZWECKER. Maître de conférences Dpt. Informatique - UdS

Bases de données Cours 4 : Le langage SQL pour ORACLE

Introduction aux SGBDR

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

Les bases fondamentales du langage Transact SQL

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

Plan d Exécution Graphique pour des Requêtes SQL Simples

Bases de données avancées Introduction

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

PHP. PHP et bases de données

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

AC AB. A B C x 1. x + 1. d où. Avec un calcul vu au lycée, on démontre que cette solution admet deux solutions dont une seule nous intéresse : x =

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

CATALOGUE DE FORMATIONS BUSINESS INTELLIGENCE. Edition 2012

Entrepôt de données : Extensions du langage SQL (SQL-3/SQL-99) pour lʼolap (7.1)

Présentation du module Base de données spatio-temporelles

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

Support de Cours REQUÊTES TRANSACT-SQL DANS MICROSOFT SQL SERVER Stéphane N GUESSAN Groupe Pigier Abidjan Version 1.

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

19 February/février 2009 COMMUNIQUE PR/CP(2009)009

1 Introduction. 2 Le modèle relationnel. 3 Algèbre relationnelle 4 SQL. 5 Organisation physique des données 1/228

A QUOI SERVENT LES BASES DE DONNÉES?

Transcription:

Bases de données relationnelles Jean-Pierre Becirspahic Lycée Louis-Le-Grand 2015-2016 Page 1/12

Classification décimale de Dewey Inventée au xix e siècle, elle range les ouvrages en 10 divisions. 000 Informatique, information, ouvrages généraux ; 100 Philosophie, Parapsychologie et Occultisme, Psychologie ; 200 Religion ; 300 Sciences sociales ; 400 Langues ; 500 Sciences de la nature et Mathématiques ; 600 Technologie (Sciences appliquées) ; 700 Arts, Loisirs et Sports ; 800 Littérature (Belles-Lettres) et techniques d écriture ; 900 Géographie, Histoire et disciplines auxiliaires. JP Becirspahic Bases de données relationnelles 2015-2016 Page 2/12

Classification décimale de Dewey Inventée au xix e siècle, elle range les ouvrages en 10 divisions. Chaque division est rangée en 10 subdivisions. 500 Généralités sur les sciences de la nature et les mathématiques ; 510 Mathématiques ; 520 Astronomie et sciences connexes ; 530 Physique ; 540 Chimie et sciences connexes ; 550 Sciences de la Terre ; 560 Paléontologie, Paléozoologie ; 570 Sciences de la vie, Biologie ; 580 Plantes, Botanique ; 590 Animaux, Zoologie. JP Becirspahic Bases de données relationnelles 2015-2016 Page 2/12

Classification décimale de Dewey Inventée au xix e siècle, elle range les ouvrages en 10 divisions. Chaque division est rangée en 10 subdivisions. Chaque subdivision est elle-même subdivisée. 500 Sciences de la nature et Mathématiques ; 530 Physique ; 537 Électricité et électronique ; 537.2 Électrostatique ; JP Becirspahic Bases de données relationnelles 2015-2016 Page 2/12

Classification décimale de Dewey Inventée au xix e siècle, elle range les ouvrages en 10 divisions. Chaque division est rangée en 10 subdivisions. Chaque subdivision est elle-même subdivisée. 500 Sciences de la nature et Mathématiques ; 530 Physique ; 537 Électricité et électronique ; 537.2 Électrostatique ; Inconvénients : information hiérarchisée suivant des critères parfois devenus obsolètes ; JP Becirspahic Bases de données relationnelles 2015-2016 Page 2/12

Classification décimale de Dewey Inventée au xix e siècle, elle range les ouvrages en 10 divisions. Chaque division est rangée en 10 subdivisions. Chaque subdivision est elle-même subdivisée. 500 Sciences de la nature et Mathématiques ; 530 Physique ; Inconvénients : 537 Électricité et électronique ; 537.2 Électrostatique ; information hiérarchisée suivant des critères parfois devenus obsolètes ; exige du chercheur une connaissance précise de cette hiérarchisation. Où trouver des ouvrages relatifs à la bio-informatique? à la côte 570 (Sciences de la vie, Biologie)? à la côte 620 (Art de l ingénieur et activités connexes)? à la côte 000 (Généralités sur l informatique)? JP Becirspahic Bases de données relationnelles 2015-2016 Page 2/12

Architecture d une base de données Les bases de données relationnelles organisent les données. Schématiquement, il s agit d un ensemble de tables contenant des données reliées entre elles par des relations ; on y extrait de l information par le biais de requêtes exprimées dans un langage spécifique. JP Becirspahic Bases de données relationnelles 2015-2016 Page 3/12

Architecture d une base de données Les bases de données relationnelles organisent les données. Schématiquement, il s agit d un ensemble de tables contenant des données reliées entre elles par des relations ; on y extrait de l information par le biais de requêtes exprimées dans un langage spécifique. Un système de gestion de bases de données est le logiciel qui organise et gère les données ; l utilisateur interagit avec lui par l intermédiaire de requêtes exprimées en SQL (Structured Query Language). JP Becirspahic Bases de données relationnelles 2015-2016 Page 3/12

Architecture d une base de données Les bases de données relationnelles organisent les données. Schématiquement, il s agit d un ensemble de tables contenant des données reliées entre elles par des relations ; on y extrait de l information par le biais de requêtes exprimées dans un langage spécifique. Un système de gestion de bases de données est le logiciel qui organise et gère les données ; l utilisateur interagit avec lui par l intermédiaire de requêtes exprimées en SQL (Structured Query Language). Architecture deux-tiers : réponse Client requête Serveur BDR Le logiciel client de la machine de l utilisateur envoie des requêtes au logiciel serveur installé sur la machine qui traite les requêtes. JP Becirspahic Bases de données relationnelles 2015-2016 Page 3/12

Architecture d une base de données Les bases de données relationnelles organisent les données. Schématiquement, il s agit d un ensemble de tables contenant des données reliées entre elles par des relations ; on y extrait de l information par le biais de requêtes exprimées dans un langage spécifique. Un système de gestion de bases de données est le logiciel qui organise et gère les données ; l utilisateur interagit avec lui par l intermédiaire de requêtes exprimées en SQL (Structured Query Language). Architecture trois-tiers : réponse requête Client Serveur Serveur d application L architecture trois-tiers ajoute un niveau supplémentaire : le serveur de données transmet les informations à un serveur d application qui, à son tour, transmet les informations traitées vers un client. BDR JP Becirspahic Bases de données relationnelles 2015-2016 Page 3/12

La base de données mondial Accès par le biais d un navigateur web. JP Becirspahic Bases de données relationnelles 2015-2016 Page 4/12

La base de données mondial Accès par le biais d un navigateur web. ou accès direct aux données contenues dans un fichier. Veuillez entrer une requête SQL (ou 'stop' pour terminer) : SELECT capital FROM country WHERE name= 'Uruguay' ('Montevideo',) Veuillez entrer une requête SQL (ou 'stop' pour terminer) : JP Becirspahic Bases de données relationnelles 2015-2016 Page 4/12

La base de données mondial Accès par le biais d un navigateur web. ou accès direct aux données contenues dans un fichier. Veuillez entrer une requête SQL (ou 'stop' pour terminer) : SELECT capital FROM country WHERE name= 'Uruguay' ('Montevideo',) Veuillez entrer une requête SQL (ou 'stop' pour terminer) : Quelques différences : la base de donnée enregistrée localement est figée ; toute transformation ne peut qu être locale. la base de donnée du web est interrogeable en SQL-Oracle ; la base de donnée locale en SQLite (différences mineures). JP Becirspahic Bases de données relationnelles 2015-2016 Page 4/12

Relations Une base de données est un ensemble de tables que l on peut représenter sous la forme de tableaux bi-dimensionnels. NAME CODE CAPITAL PROVINCE AREA POPULATION France F Paris Ile de France 547030. 64933400 Spain E Madrid Madrid 504750. 46815916 Austria A Wien Wien 83850. 8499759 Czech Republic CZ Praha Praha 78703. 10562214 Germany D Berlin Berlin 356910. 80219695 Hungary H Budapest Budapest 93030. 9937628 Italy I Roma Lazio 301230. 59433744 Liechtenstein FL Vaduz Liechtenstein 160. 36636 Les attributs désignent les éléments de chacune des colonnes ; les lignes en forment les enregistrements. JP Becirspahic Bases de données relationnelles 2015-2016 Page 5/12

Relations Une base de données est un ensemble de tables que l on peut représenter sous la forme de tableaux bi-dimensionnels. NAME CODE CAPITAL PROVINCE AREA POPULATION France F Paris Ile de France 547030. 64933400 Spain E Madrid Madrid 504750. 46815916 Austria A Wien Wien 83850. 8499759 Czech Republic CZ Praha Praha 78703. 10562214 Germany D Berlin Berlin 356910. 80219695 Hungary H Budapest Budapest 93030. 9937628 Italy I Roma Lazio 301230. 59433744 Liechtenstein FL Vaduz Liechtenstein 160. 36636 Les attributs désignent les éléments de chacune des colonnes ; les lignes en forment les enregistrements. Pour croiser les données présentes dans plusieurs tables il faut posséder une caractérisation unique de chaque enregistrement d une table ; c est le rôle de la clé primaire (ici l attribut Code). JP Becirspahic Bases de données relationnelles 2015-2016 Page 5/12

Requêtes de base Sélection de l ensemble des valeurs d un attribut : SELECT name FROM country JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Requêtes de base Sélection de l ensemble des valeurs d un attribut : SELECT name FROM country Sélection de plusieurs attributs : SELECT name, c a p i t a l FROM country JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Requêtes de base Sélection de l ensemble des valeurs d un attribut : SELECT name FROM country Sélection de plusieurs attributs : SELECT name, c a p i t a l FROM country Sélection de l ensemble des attributs : SELECT * FROM country JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Requêtes de base Sélection de l ensemble des valeurs d un attribut : SELECT name FROM country Sélection de plusieurs attributs : SELECT name, c a p i t a l FROM country Sélection de l ensemble des attributs : SELECT * FROM country Sélection de certains enregistrements uniquement : SELECT c a p i t a l FROM country WHERE name = ' Botswana ' JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Requêtes de base Sélection de l ensemble des valeurs d un attribut : SELECT name FROM country Sélection de plusieurs attributs : SELECT name, c a p i t a l FROM country Sélection de l ensemble des attributs : SELECT * FROM country Sélection de certains enregistrements uniquement : SELECT c a p i t a l FROM country WHERE name = ' Botswana ' La valeur d un attribut est NULL lorsque ce dernier est manquant : SELECT name FROM country WHERE c a p i t a l IS NULL JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Requêtes de base Résumé de la syntaxe SQL SELECT * SELECT DISTINCT * FROM table WHERE condition GROUP BY expression HAVING condition ORDER BY expression sélection des colonnes sélection sans doublon nom d une table imposer une condition grouper les résultats condition sur un groupe trier les résultats LIMIT n OFFSET n OFFSET n ROWS FETCH FIRST n ROWS ONLY UNION INTERSECT EXCEPT limiter à n enregistrements (SQLite) débuter à partir de n enregistrements (SQLite) débuter à partir de n enregistrements (Oracle) limiter à n enregistrements (Oracle) opérations ensemblistes sur les requêtes JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Requêtes de base Exercice Rédiger une requête SQL pour obtenir : 1 la liste des pays dont la population excède 60000000 d habitants ; JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Requêtes de base Exercice Rédiger une requête SQL pour obtenir : 1 la liste des pays dont la population excède 60000000 d habitants ; SELECT name FROM country WHERE p opulation > 60000000 JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Requêtes de base Exercice Rédiger une requête SQL pour obtenir : 1 la liste des pays dont la population excède 60000000 d habitants ; 2 la même liste triée par ordre alphabétique ; SELECT name FROM country WHERE p opulation > 60000000 JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Requêtes de base Exercice Rédiger une requête SQL pour obtenir : 1 la liste des pays dont la population excède 60000000 d habitants ; 2 la même liste triée par ordre alphabétique ; SELECT name FROM country WHERE p opulation > 60000000 ORDER BY name JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Requêtes de base Exercice Rédiger une requête SQL pour obtenir : 1 la liste des pays dont la population excède 60000000 d habitants ; 2 la même liste triée par ordre alphabétique ; 3 la liste des pays et de leurs populations respectives, triée par ordre décroissant de population ; SELECT name FROM country WHERE p opulation > 60000000 ORDER BY name JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Requêtes de base Exercice Rédiger une requête SQL pour obtenir : 1 la liste des pays dont la population excède 60000000 d habitants ; 2 la même liste triée par ordre alphabétique ; 3 la liste des pays et de leurs populations respectives, triée par ordre décroissant de population ; SELECT name, population FROM country WHERE p opulation > 60000000 ORDER BY p opulation DESC JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Requêtes de base Exercice Rédiger une requête SQL pour obtenir : 1 la liste des pays dont la population excède 60000000 d habitants ; 2 la même liste triée par ordre alphabétique ; 3 la liste des pays et de leurs populations respectives, triée par ordre décroissant de population ; 4 le nom des dix pays ayant la plus petite superficie ; SELECT name, population FROM country WHERE p opulation > 60000000 ORDER BY p opulation DESC JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Requêtes de base Exercice Rédiger une requête SQL pour obtenir : 1 la liste des pays dont la population excède 60000000 d habitants ; 2 la même liste triée par ordre alphabétique ; 3 la liste des pays et de leurs populations respectives, triée par ordre décroissant de population ; 4 le nom des dix pays ayant la plus petite superficie ; SELECT name FROM country ORDER BY area ASC FETCH FIRST 10 ROWS ONLY JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Requêtes de base Exercice Rédiger une requête SQL pour obtenir : 1 la liste des pays dont la population excède 60000000 d habitants ; 2 la même liste triée par ordre alphabétique ; 3 la liste des pays et de leurs populations respectives, triée par ordre décroissant de population ; 4 le nom des dix pays ayant la plus petite superficie ; 5 le nom des dix suivants. SELECT name FROM country ORDER BY area ASC FETCH FIRST 10 ROWS ONLY JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Requêtes de base Exercice Rédiger une requête SQL pour obtenir : 1 la liste des pays dont la population excède 60000000 d habitants ; 2 la même liste triée par ordre alphabétique ; 3 la liste des pays et de leurs populations respectives, triée par ordre décroissant de population ; 4 le nom des dix pays ayant la plus petite superficie ; 5 le nom des dix suivants. SELECT name FROM country ORDER BY area ASC OFFSET 10 ROWS FETCH FIRST 10 ROWS ONLY JP Becirspahic Bases de données relationnelles 2015-2016 Page 6/12

Jointures Réaliser une jointure permet de croiser des informations présentes dans plusieurs tables : si deux tables possèdent un attribut en commun, cet attribut peut servir de jointure entre elles. JP Becirspahic Bases de données relationnelles 2015-2016 Page 7/12

Jointures Réaliser une jointure permet de croiser des informations présentes dans plusieurs tables : si deux tables possèdent un attribut en commun, cet attribut peut servir de jointure entre elles. Un extrait de la table country : NAME CODE CAPITAL PROVINCE AREA POPULATION Bulgaria BG Sofia Bulgaria 110910. 7284552 Romania RO Bucuresti Bucuresti 237500. 20121641 Turkey TR Ankara Ankara 780580. 75627384 Denmark DK Kobenhavn Hovedstaden 43070. 5580516 Un extrait de la table encompasses : COUNTRY CONTINENT PERCENTAGE BG Europe 100 RO Europe 100 TR Asia 97 TR Europe 3 DK Europe 100 JP Becirspahic Bases de données relationnelles 2015-2016 Page 7/12

Jointures Réaliser une jointure permet de croiser des informations présentes dans plusieurs tables : si deux tables possèdent un attribut en commun, cet attribut peut servir de jointure entre elles. On obtient la liste des pays européens par la requête : SELECT c. name FROM country c JOIN encompasses e ON c. code = e. country WHERE e. c o n t i n e n t = ' Europe ' JP Becirspahic Bases de données relationnelles 2015-2016 Page 7/12

Jointures Réaliser une jointure permet de croiser des informations présentes dans plusieurs tables : si deux tables possèdent un attribut en commun, cet attribut peut servir de jointure entre elles. On obtient la liste des pays européens par la requête : SELECT c. name FROM country c JOIN encompasses e ON c. code = e. country WHERE e. c o n t i n e n t = ' Europe ' Un extrait de la table : country c JOIN encompasses e ON c.code = e.country NAME CODE CAPITAL PROVINCE AREA POPULATION COUNTRY CONTINENT PERCENTAGE Bulgaria BG Sofia Bulgaria 110910. 7284552 BG Europe 100 Romania RO Bucuresti Bucuresti 237500. 20121641 RO Europe 100 Turkey TR Ankara Ankara 780580. 75627384 TR Asia 97 Turkey TR Ankara Ankara 780580. 75627384 TR Europe 3 Denmark DK Kobenhavn Hovedstaden 43070. 5580516 DK Europe 100 JP Becirspahic Bases de données relationnelles 2015-2016 Page 7/12

Jointures Exercice Rédiger une requête SQL pour obtenir : 1 le nom des pays qui sont à cheval sur plusieurs continents ; JP Becirspahic Bases de données relationnelles 2015-2016 Page 7/12

Jointures Exercice Rédiger une requête SQL pour obtenir : 1 le nom des pays qui sont à cheval sur plusieurs continents ; SELECT DISTINCT c. name FROM country c JOIN encompasses e ON c. code = e. country WHERE e. percentage < 100 JP Becirspahic Bases de données relationnelles 2015-2016 Page 7/12

Jointures Exercice Rédiger une requête SQL pour obtenir : 1 le nom des pays qui sont à cheval sur plusieurs continents ; 2 les pays du contient américain qui comptent moins de 10 habitants par km 2. SELECT DISTINCT c. name FROM country c JOIN encompasses e ON c. code = e. country WHERE e. percentage < 100 JP Becirspahic Bases de données relationnelles 2015-2016 Page 7/12

Jointures Exercice Rédiger une requête SQL pour obtenir : 1 le nom des pays qui sont à cheval sur plusieurs continents ; 2 les pays du contient américain qui comptent moins de 10 habitants par km 2. SELECT c. name FROM country c JOIN encompasses e ON c. code = e. country WHERE e. c o n t i n e n t = ' America ' AND c. population / c. area < 10 JP Becirspahic Bases de données relationnelles 2015-2016 Page 7/12

Jointures Exercice Rédiger une requête SQL pour obtenir : 1 le nom des pays qui sont à cheval sur plusieurs continents ; 2 les pays du contient américain qui comptent moins de 10 habitants par km 2. 3 les capitales européennes situées à une latitude supérieure à 60. SELECT c. name FROM country c JOIN encompasses e ON c. code = e. country WHERE e. c o n t i n e n t = ' America ' AND c. population / c. area < 10 JP Becirspahic Bases de données relationnelles 2015-2016 Page 7/12

Jointures Exercice Rédiger une requête SQL pour obtenir : 1 le nom des pays qui sont à cheval sur plusieurs continents ; 2 les pays du contient américain qui comptent moins de 10 habitants par km 2. 3 les capitales européennes situées à une latitude supérieure à 60. SELECT c. name, c. c a p i t a l FROM country c JOIN c i t y v ON c. code = v. country JOIN encompasses e ON c. code = e. country WHERE e. c o n t i n e n t = ' Europe ' AND v. name = c. c a p i t a l AND v. l a t i t u d e > 60 JP Becirspahic Bases de données relationnelles 2015-2016 Page 7/12

Fonctions d agrégation On regroupe certains enregistrements d une table par agrégation à l aide du mot-clé GROUP BY. COUNT( ) MAX( ) MIN( ) SUM( ) AVG( ) nombre d enregistrements valeur maximale d un attribut valeur minimale d un attribut calcul de la somme d un attribut calcul de la moyenne d un attribut JP Becirspahic Bases de données relationnelles 2015-2016 Page 8/12

Fonctions d agrégation On regroupe certains enregistrements d une table par agrégation à l aide du mot-clé GROUP BY. COUNT( ) MAX( ) MIN( ) SUM( ) AVG( ) nombre d enregistrements valeur maximale d un attribut valeur minimale d un attribut calcul de la somme d un attribut calcul de la moyenne d un attribut Pour connaître le nombre de pays de chaque continent : SELECT e. continent, COUNT ( * ) FROM country c JOIN encompasses e ON c. code = e. country GROUP BY e. c o n t i n e n t JP Becirspahic Bases de données relationnelles 2015-2016 Page 8/12

Fonctions d agrégation On regroupe certains enregistrements d une table par agrégation à l aide du mot-clé GROUP BY. COUNT( ) MAX( ) MIN( ) SUM( ) AVG( ) nombre d enregistrements valeur maximale d un attribut valeur minimale d un attribut calcul de la somme d un attribut calcul de la moyenne d un attribut Pour connaître le nombre de pays de chaque continent : SELECT e. continent, COUNT ( * ) FROM country c JOIN encompasses e ON c. code = e. country GROUP BY e. c o n t i n e n t HAVING impose des conditions sur un groupe. Pour obtenir la liste des continents dont la population totale dépasse le milliard d habitants : SELECT e. continent, SUM( c. population ) FROM country c JOIN encompasses e ON c. code = e. country GROUP BY e. c o n t i n e n t HAVING SUM( c. population ) > 1000000000 JP Becirspahic Bases de données relationnelles 2015-2016 Page 8/12

Fonctions d agrégation Exercice 1 Donner la liste ordonnée des dix langues parlées dans le plus de pays différents. JP Becirspahic Bases de données relationnelles 2015-2016 Page 8/12

Fonctions d agrégation Exercice 1 Donner la liste ordonnée des dix langues parlées dans le plus de pays différents. SELECT name, COUNT ( * ) c FROM language GROUP BY name ORDER BY c DESC FETCH FIRST 10 ROWS ONLY JP Becirspahic Bases de données relationnelles 2015-2016 Page 8/12

Fonctions d agrégation Exercice 1 Donner la liste ordonnée des dix langues parlées dans le plus de pays différents. 2 Quelles sont les langues parlées dans exactement six pays? SELECT name, COUNT ( * ) c FROM language GROUP BY name ORDER BY c DESC FETCH FIRST 10 ROWS ONLY JP Becirspahic Bases de données relationnelles 2015-2016 Page 8/12

Fonctions d agrégation Exercice 1 Donner la liste ordonnée des dix langues parlées dans le plus de pays différents. 2 Quelles sont les langues parlées dans exactement six pays? SELECT name FROM language GROUP BY name HAVING COUNT ( * ) = 6 JP Becirspahic Bases de données relationnelles 2015-2016 Page 8/12

Fonctions d agrégation Exercice 1 Donner la liste ordonnée des dix langues parlées dans le plus de pays différents. 2 Quelles sont les langues parlées dans exactement six pays? Et quels sont ces pays? SELECT name FROM language GROUP BY name HAVING COUNT ( * ) = 6 JP Becirspahic Bases de données relationnelles 2015-2016 Page 8/12

Fonctions d agrégation Exercice 1 Donner la liste ordonnée des dix langues parlées dans le plus de pays différents. 2 Quelles sont les langues parlées dans exactement six pays? Et quels sont ces pays? SELECT c. name AS pays, l. name AS langue FROM country c JOIN language l ON c. code = l. country WHERE l. name IN ( SELECT name FROM language GROUP BY name HAVING COUNT ( * ) = 6 ) JP Becirspahic Bases de données relationnelles 2015-2016 Page 8/12

Fonctions d agrégation Exercice 1 Donner la liste ordonnée des dix langues parlées dans le plus de pays différents. 2 Quelles sont les langues parlées dans exactement six pays? Et quels sont ces pays? 3 Quelles sont les langues parlées par moins de 30 000 personnes dans le monde? SELECT c. name AS pays, l. name AS langue FROM country c JOIN language l ON c. code = l. country WHERE l. name IN ( SELECT name FROM language GROUP BY name HAVING COUNT ( * ) = 6 ) JP Becirspahic Bases de données relationnelles 2015-2016 Page 8/12

Fonctions d agrégation Exercice 1 Donner la liste ordonnée des dix langues parlées dans le plus de pays différents. 2 Quelles sont les langues parlées dans exactement six pays? Et quels sont ces pays? 3 Quelles sont les langues parlées par moins de 30 000 personnes dans le monde? SELECT l. name FROM language l JOIN country c ON l. country = c. code GROUP BY l. name HAVING SUM( c. population * l. percentage / 100) < 30000 JP Becirspahic Bases de données relationnelles 2015-2016 Page 8/12

Fonctions d agrégation Exercice 1 Donner la liste ordonnée des dix langues parlées dans le plus de pays différents. 2 Quelles sont les langues parlées dans exactement six pays? Et quels sont ces pays? 3 Quelles sont les langues parlées par moins de 30 000 personnes dans le monde? 4 Quelles sont les cinq langues les plus parlées en Afrique? On précisera le nombre de personnes qui la parlent. SELECT l. name FROM language l JOIN country c ON l. country = c. code GROUP BY l. name HAVING SUM( c. population * l. percentage / 100) < 30000 JP Becirspahic Bases de données relationnelles 2015-2016 Page 8/12

Fonctions d agrégation Exercice 1 Donner la liste ordonnée des dix langues parlées dans le plus de pays différents. 2 Quelles sont les langues parlées dans exactement six pays? Et quels sont ces pays? 3 Quelles sont les langues parlées par moins de 30 000 personnes dans le monde? 4 Quelles sont les cinq langues les plus parlées en Afrique? On précisera le nombre de personnes qui la parlent. SELECT l. name, FLOOR (SUM( c. p o pulation * l. percentage / 1 0 0 ) ) s FROM language l JOIN country c ON l. country = c. code JOIN encompasses e ON c. code = e. country WHERE e. c o n t i n e n t = ' A f r i c a ' GROUP BY l. name ORDER BY s DESC FETCH FIRST 5 ROWS ONLY JP Becirspahic Bases de données relationnelles 2015-2016 Page 8/12

Sous-requêtes Il est possible d imbriquer une requête dans une clause SELECT, ou (le plus souvent) au sein d un filtre WHERE ou HAVING. Pour déterminer les pays dont la densité de population est supérieure à la moyenne : SELECT name FROM country WHERE p opulation / area > ( SELECT AVG ( population / area ) FROM country ) JP Becirspahic Bases de données relationnelles 2015-2016 Page 9/12

Sous-requêtes Exercice 1 Déterminer les pays majoritairement agricoles dont le taux de chômage est inférieur à la moyenne mondiale. JP Becirspahic Bases de données relationnelles 2015-2016 Page 9/12

Sous-requêtes Exercice 1 Déterminer les pays majoritairement agricoles dont le taux de chômage est inférieur à la moyenne mondiale. SELECT c. name FROM country c JOIN economy e ON c. code = e. country WHERE e. a g r i c u l t u r e > e. s e r v i c e AND e. a g r i c u l t u r e > e. i n d u s t r y AND e. unemployment < ( SELECT AVG ( unemployment ) FROM economy ) JP Becirspahic Bases de données relationnelles 2015-2016 Page 9/12

Sous-requêtes Exercice 1 Déterminer les pays majoritairement agricoles dont le taux de chômage est inférieur à la moyenne mondiale. 2 Déterminer pour chaque continent le pays au taux d inflation le plus faible parmi les pays majoritairement industriels. SELECT c. name FROM country c JOIN economy e ON c. code = e. country WHERE e. a g r i c u l t u r e > e. s e r v i c e AND e. a g r i c u l t u r e > e. i n d u s t r y AND e. unemployment < ( SELECT AVG ( unemployment ) FROM economy ) JP Becirspahic Bases de données relationnelles 2015-2016 Page 9/12

Sous-requêtes Exercice 1 Déterminer les pays majoritairement agricoles dont le taux de chômage est inférieur à la moyenne mondiale. 2 Déterminer pour chaque continent le pays au taux d inflation le plus faible parmi les pays majoritairement industriels. SELECT en. continent, c. name FROM country c JOIN economy e ON c. code = e. country JOIN encompasses en ON en. country = c. code WHERE e. i n d u s t r y > e. a g r i c u l t u r e AND e. i n d u s t r y > e. s e r v i c e AND ( en. continent, e. i n f l a t i o n ) IN ( SELECT en. continent, MIN ( e. i n f l a t i o n ) FROM economy e JOIN encompasses en ON e. country = en. country WHERE e. i n d u s t r y > e. a g r i c u l t u r e AND e. i n d u s t r y > e. s e r v i c e GROUP BY en. c o n t i n e n t ) JP Becirspahic Bases de données relationnelles 2015-2016 Page 9/12

Algèbre relationnelle Opérations ensemblistes Trois opérations ensemblistes peuvent être effectuées avec les relations : les opérations d union ( ), d intersection ( ) et de différence ( ). R 1 A B C a 1 b 1 c 1 a 2 b 2 c 2 R 2 A B C a 1 b 1 c 1 a 3 b 3 c 3 R 1 R 2 A B C a 1 b 1 c 1 a 2 b 2 c 2 a 3 b 3 c 3 R 1 R 2 A B C a 1 b 1 c 1 R 1 R 2 A B C a 2 b 2 c 2 Pour être réalisées, ces opérations doivent agir sur des relations ayant le même schéma relationnel. JP Becirspahic Bases de données relationnelles 2015-2016 Page 10/12

Algèbre relationnelle Projection, sélection La projection extrait une relation d une relation donnée en supprimant des attributs de cette dernière. R A B C a 1 b 1 c 1 a 2 b 2 c 2 a 1 b 1 c 3 π (A,B) (R) A B a 1 b 1 a 2 b 2 JP Becirspahic Bases de données relationnelles 2015-2016 Page 10/12

Algèbre relationnelle Projection, sélection La projection extrait une relation d une relation donnée en supprimant des attributs de cette dernière. R A B C a 1 b 1 c 1 a 2 b 2 c 2 a 1 b 1 c 3 π (A,B) (R) A B a 1 b 1 a 2 b 2 La sélection permet d extraire les enregistrements d une relation R qui satisfont une expression logique E. R A B C a 1 b 1 c 1 a 2 b 2 c 2 a 3 b 3 c 3 a 4 b 4 c 4 σ E (R) A B C a 2 b 2 c 2 a 4 b 4 c 4 JP Becirspahic Bases de données relationnelles 2015-2016 Page 10/12

Algèbre relationnelle Renommage, jointure Le renommage permet la modification du nom d un ou plusieurs attributs d une relation. R A B C a 1 b 1 c 1 a 2 b 2 c 2 a 3 b 3 c 3 ρ a d (R) D B C a 1 b 1 c 1 a 2 b 2 c 2 a 3 b 3 c 3 JP Becirspahic Bases de données relationnelles 2015-2016 Page 11/12

Algèbre relationnelle Renommage, jointure Le renommage permet la modification du nom d un ou plusieurs attributs d une relation. R A B C a 1 b 1 c 1 a 2 b 2 c 2 a 3 b 3 c 3 ρ a d (R) D B C a 1 b 1 c 1 a 2 b 2 c 2 a 3 b 3 c 3 La jointure porte sur deux relations R 1 et R 2 et retourne une relation qui comporte les enregistrements des deux premières relations qui satisfont une contrainte logique E. R 1 A B C a 1 b 1 c 1 a 2 b 2 c 2 a 3 b 3 c 3 R 2 D E a 1 e 1 a 2 e 2 R 1 A=D R 2 A B C E a 1 b 1 c 1 e 1 a 2 b 2 c 2 e 2 JP Becirspahic Bases de données relationnelles 2015-2016 Page 11/12

Algèbre relationnelle Produit et division cartésiens Il est possible de réaliser 1e produit cartésien de deux relations R 1 et R 2 : R 1 A B C a 1 b 1 c 1 a 2 b 2 c 2 R 2 D E d 1 e 1 d 2 e 2 R 1 R 2 A B C D E a 1 b 1 c 1 d 1 e 1 a 1 b 1 c 1 d 2 e 2 a 2 b 2 c 2 d 1 e 1 a 2 b 2 c 2 d 2 e 2 JP Becirspahic Bases de données relationnelles 2015-2016 Page 12/12

Algèbre relationnelle Produit et division cartésiens Il est possible de réaliser 1e produit cartésien de deux relations R 1 et R 2 : R 1 A B C a 1 b 1 c 1 a 2 b 2 c 2 R 2 D E d 1 e 1 d 2 e 2 R 1 R 2 A B C D E a 1 b 1 c 1 d 1 e 1 a 1 b 1 c 1 d 2 e 2 a 2 b 2 c 2 d 1 e 1 a 2 b 2 c 2 d 2 e 2 La division cartésienne produit une relation à partir de deux relations R 1 et R 2 vérifiant R 2 R 1. La relation obtenue possède tous les attributs de R 1 que ne possède pas R 2. R 1 A B C D a 1 b 1 c 1 d 1 a 1 b 1 c 2 d 2 a 2 b 2 c 3 d 3 a 3 b 3 c 1 d 1 a 3 b 3 c 2 d 2 R 2 C D c 1 d 1 c 2 d 2 R 1 R 2 A B a 1 b 1 a 3 b 3 JP Becirspahic Bases de données relationnelles 2015-2016 Page 12/12

Algèbre relationnelle Exercices Donner un sens aux expressions de l algèbre relationnelle suivantes : 1 π Name (σ Latitude>66 (city) σ Population>10000 (city)) ; JP Becirspahic Bases de données relationnelles 2015-2016 Page 12/12

Algèbre relationnelle Exercices Donner un sens aux expressions de l algèbre relationnelle suivantes : 1 π Name (σ Latitude>66 (city) σ Population>10000 (city)) ; Villes de plus de 10000 habitants situées au delà du cercle polaire arctique. JP Becirspahic Bases de données relationnelles 2015-2016 Page 12/12

Algèbre relationnelle Exercices Donner un sens aux expressions de l algèbre relationnelle suivantes : 1 π Name (σ Latitude>66 (city) σ Population>10000 (city)) ; 2 π country.name (σ city.latitude<0 (x) σ city.latitude> 23 (x)) avec x = country country.code=city.country city. Villes de plus de 10000 habitants situées au delà du cercle polaire arctique. JP Becirspahic Bases de données relationnelles 2015-2016 Page 12/12

Algèbre relationnelle Exercices Donner un sens aux expressions de l algèbre relationnelle suivantes : 1 π Name (σ Latitude>66 (city) σ Population>10000 (city)) ; 2 π country.name (σ city.latitude<0 (x) σ city.latitude> 23 (x)) avec x = country country.code=city.country city. Villes de plus de 10000 habitants situées au delà du cercle polaire arctique. Nom des pays qui possèdent au moins une ville située entre l équateur et le tropique du Capricorne. JP Becirspahic Bases de données relationnelles 2015-2016 Page 12/12