Révisions sur les Bases de données. Lycée Thiers - PC/PC*



Documents pareils
1 Introduction et installation

Le langage SQL Rappels

Langage SQL : créer et interroger une base

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

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

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

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

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

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

Les bases de données

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

SQL Historique

Bases de données relationnelles

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Objectifs du TP : Initiation à Access

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

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

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

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

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

Bases de données élémentaires Maude Manouvrier

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

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

16H Cours / 18H TD / 20H TP

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

Création et Gestion des tables

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

Les BASES de DONNEES dans WampServer

Rappel sur les bases de données

Bases de données - Modèle relationnel

Le Langage SQL version Oracle

CREATION WEB DYNAMIQUE

Olivier Mondet

I4 : Bases de Données

Vincent Augusto

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

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Le Langage De Description De Données(LDD)

INTRODUCTION AU DATA MINING

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

1. Base de données SQLite

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

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

FileMaker 13. Guide de référence SQL

MODE OPERATOIRE OPENOFFICE BASE

UNIVERSITE DE CONSTANTINE 1 FACULTE DES SIENCES DE LA TECHNOLOGIE DEPARTEMENT D ELECTRONIQUE 3 ème année LMD ELECTRONIQUE MEDICALE

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

Systèmes de Gestion de Bases de Données

Cours 4 : Agrégats et GROUP BY

Introduction aux Bases de Données 2004/2005

Bases de Données. Plan

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

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

Bases de données relationnelles & SQL

MySQL / SQL EXEMPLES

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

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

OpenPaaS Le réseau social d'entreprise

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

TP Bases de données réparties

Devoir Data WareHouse

Optimisation SQL. Quelques règles de bases

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Dossier I Découverte de Base d Open Office

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

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

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

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

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

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

Base de données relationnelle et requêtes SQL

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

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

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

Bases de données avancées Introduction

Présentation Windows Azure Hadoop Big Data - BI

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Optimisations des SGBDR. Étude de cas : MySQL

Mysql avec EasyPhp. 1 er mars 2006

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

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

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

I. MySQL : Serveur et SGBD

A QUOI SERVENT LES BASES DE DONNÉES?

Utiliser Access ou Excel pour gérer vos données

Encryptions, compression et partitionnement des données

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

A QUOI SERVENT LES BASES DE DONNÉES?

1/ Présentation de SQL Server :

BTS/CGO P10 SYSTEME INFORMATION Année

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

Stockage de données sous Android

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

BIRT (Business Intelligence and Reporting Tools)

COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA

Groupe 11 TABLE DES MATIERES

Exercices sur SQL server 2000

Transcription:

Bases de données Architecture clients-serveur Architecture trois tiers Vocabulaire des BDD Algèbre relationnelle Création/modification d une table Commandes SQL de manipulation de tables Définition formelle Projection Sélection Fonction d agrégations Produit cartésien, jointure et différence

Architecture clients-serveur Architecture trois tiers Base de données. Architecture clients-serveur L utilisation de fichiers pour stocker des données est trop limiter pour gérer un grand volume de données. On utilise plutôt une base de données qui manipulera des fichiers mais organisera les données de façon à les gérer de façon optimale. Une base de donnée est le système permettant le stockage des données, de manière structurée, en général sur un serveur (ordinateur relié à un réseau, internet par exemple). Elle est conçue selon une architecture clients-serveurs : Le serveur reçoit des requêtes de clients pour : créer/modifier la base de donnée (seulement les administrateurs) Interroger la base de donnée (tous les utilisateurs autorisés).

Architecture clients-serveur Architecture trois tiers Architecture deux-tiers Une base de donnée peut être conçue selon une architecture deux tiers. Le client envoie directement ses requêtes au serveurs qui y répond directement. ( tiers est un anglicisme signifiant niveau ou étage ). Mais pour plus de flexibilité, de sécurité et de performance, on utilise souvent un troisième niveau intermédiaire entre le client et le serveur, contenant l application qui formule au serveur les requêtes pour en retourner le résultat au client.

Architecture clients-serveur Architecture trois tiers Architecture trois tiers C est l architecture trois tiers. Constituée des 3 niveaux (tiers) : 1. Le niveau utilisateur : c est la partie interface. Installée sur les ordinateurs clients. Elle permet de formuler les requêtes. L utilisateur n a qu un accès limité à la base de donnée. 2. Le niveau applicatif : c est la partie logicielle qui fait le lien entre les requêtes de l utilisateur client et le serveur de base de donnée. En général sur un serveur d application via un réseau. 3. Le niveau base de données : c est la partie logicielle qui résout les requêtes, gère de façon optimale les données et procède aux modifications. En général sur un autre serveur du réseau. Les 3 installations logicielles sont indépendantes.

Vocabulaire des BDD Algèbre relationnelle Création/modification d une table Commandes SQL de manipulation de tables Vocabulaire des BDD Une Base de donnée Une Table ou Relation Un schéma relationnel Un Attribut Un Enregistrement Une Clé La Clé primaire Une Clé secondaire est constituée de tables, contenant les données organisées selon un schéma relationnel. est un ensemble de données organisées vérifiant un même schéma relationnel. est une suite finie d attributs (colonnes d une table). définit la colonne d une table : nom (identifiant) et type. est un élément d une table (une ligne). est un ou plusieurs attributs donnant accès à un seul élément dans une table. est la clé choisie parmi toutes les clés possibles. est toute clé autre que la clé primaire

Vocabulaire des BDD Algèbre relationnelle Création/modification d une table Commandes SQL de manipulation de tables Théorie : algèbre relationnelle Une BDD est constituée de tables (ou relations) chacune définie par un schéma relationnel. Un schéma relationnel est une suite finie d attributs : S = (A 1, A 2,..., A p). Chaque attribut A i est doté d un type ; en SQL les types peuvent être : NULL, BOOLEAN, INT, INT(N), DECIMAL, DECIMAL(N), DECIMAL(N,M), FLOAT, FLOAT(N), VARCHAR, VARCHAR(N), DATE, YEAR, TIMES, etc... (SQLite comprend ces derniers mais ne stocke que sous les types suivants : NULL, INTEGER, REAL, TEXT, BLOB.) Chaque type définit le Domaine DOM(A i ) de l attribut A i, c est à dire l ensemble des valeurs qu il peut prendre. Une relation R(S) de schéma relationnel S = (A 1, A 2,..., A p), est un sous-ensemble fini du produit cartésien : DOM(A 1) DOM(A 2) DOM(A p) Une relation (ou table) est analogue à un ensemble mathématique à la différence près qu il est possible d avoir répétitions. C est possible grâce l usage d un identifiant clé : R(S) N DOM(A 1) DOM(A p).

Vocabulaire des BDD Algèbre relationnelle Création/modification d une table Commandes SQL de manipulation de tables Théorie : algèbre relationnelle On dit que deux relations ont le même schéma si ils ont même attributs (noms et types). e DOM(A 1) DOM(A 2) DOM(A p) est un enregistrement d une relation R(A 1, A 2,..., A p). Si A k est un attribut, alors e[a k ] désigne la valeur de l attribut A k dans l enregistrement e. Si K = (A 1,... A q) est une sous-suite d attributs de (A 1,... A p), on note e[k] le q-uplet (e[a 1],..., e[a q]) des valeurs dans e des attributs A 1,..., A q. Pour une relation T DOM(A 1) DOM(A 2) DOM(A p), une clé est un ensemble C d attributs, tels que pour tout couple e, e dans T : e[c] = e [C] e = e

Vocabulaire des BDD Algèbre relationnelle Création/modification d une table Commandes SQL de manipulation de tables Dans une base de donnée nommée classe : créons une table eleves ayant pour attributs : nom, prénom, adresse, telephone, date de naissance : CREATE TABLE eleves ( nom VARCHAR(20), prenom VARCHAR(18), adresse VARCHAR(50), telephone INT(10), naissance DATE ) Par défaut la valeur de chaque attribut est NULL.

Vocabulaire des BDD Algèbre relationnelle Création/modification d une table Commandes SQL de manipulation de tables Ajout d enregistrement Ajoutons des enregistrement à la table : 1. A l aide de la requête INSERT INTO... VALUES : INSERT INTO eleves VALUES ( Dupond, Tom, 3 place de la gare, 06609080706, 1995-03-15, esp ) (dans l onglet exécuter le sql ) 2. En cliquant sur le bouton Nouvel Enregistrement et en saisissant les données. (dans l onglet parcourir les données ). 3. À partir des données d une autre table, à l aide de : INSERT INTO... SELECT... FROM...

Vocabulaire des BDD Algèbre relationnelle Création/modification d une table Commandes SQL de manipulation de tables Nous avons saisi manuellement les enregistrements suivants dans la table eleves : On peut alors afficher la table grâce à la requête : SELECT * FROM eleves qui produit pour résultat :

On peut ne sélectionner qu un enregistrement : SELECT * FROM eleves WHERE nom = Charron Vocabulaire des BDD Algèbre relationnelle Création/modification d une table Commandes SQL de manipulation de tables ou ne sélectionner que certains attributs : SELECT nom, prénom FROM eleves... ORDER BY... permet de les ordonner selon une valeur d attribut : SELECT nom, prénom, naissance FROM eleves ORDER BY nom

Vocabulaire des BDD Algèbre relationnelle Création/modification d une table Commandes SQL de manipulation de tables Commandes SQL de manipulation de tables CREATE TABLE ma table INSERT INTO ma table VALUES (...) SELECT * FROM ma table SELECT A1,..., Ap FROM ma table SELECT... FROM... WHERE condition SELECT... ORDER BY Ak [DESC] SELECT... LIMIT n SELECT... LIMIT m, n Création d une table dans une BDD Ajout d un enregistrement Afficher tous les enregistrements de la table ma table Projection : afficher certaines colonnes de la table ma table Sélection : sélectionne les enregistre- -ments vérifiant une condition Ordonner l affichage selon un attribut Limitation aux n premiers éléments Limitation aux éléments de m à n

Définition formelle Projection Sélection Fonction d agrégations Opérateurs unaires : projection et sélection Soit une relation (table) r(a 1, A 2,..., A p). Projection suivant un sous-ensemble d attribut : Soit X = (A 1, A 2,..., A q) une suite finie d attributs dans {A 1, A 2,..., A p}. La projection de la relation r suivant X est : π X (r) = {e[x ]; e r} On demande aussi à la projection d effacer les doublons. Sélection par une propriété : Si on se donne une propriété (ou prédicat) P, la sélection (ou restriction) de la relation r par la propriété P est : σ P (r) = {e r ; e satisfait P} Projection et sélection retournent une relation! Ce qui autorise les requêtes composées : SELECT... FROM (SELECT... FROM...)... Renommage : changer le nom d un attribut ou d une table : avec AS.

Définition formelle Projection Sélection Fonction d agrégations Projection : Pour projeter : SELECT DISTINCT attributs FROM SELECT DISTINCT nom, prénom FROM eleves projette la table eleves suivant les attributs nom, prénom. pour sauvegarder les résultats dans une table en ordonnant par nom : CREATE TABLE t (nom VARCHAR(20), prénom VARCHAR(18)) ; INSERT INTO t SELECT nom, prénom FROM eleves ORDER BY nom

Définition formelle Projection Sélection Fonction d agrégations Sélection : Pour sélectionner : SELECT... FROM... WHERE... SELECT * FROM eleves WHERE naissance > 1995-01-01 Sélection de toutes les lignes des élèves nés au plus tôt en 1995. SELECT nom, prenom FROM eleves WHERE naissance > 1995-01-01 AND nom LIKE C% Sélection des noms et prénoms des élèves nés après 1995 dont le nom commence par un C.

Définition formelle Projection Sélection Fonction d agrégations Sélection : Pour sélectionner : SELECT attributs FROM table WHERE conditions Les conditions peuvent être constituées : 1. Opérateurs de comparaison : =, <, >, <=, etc... 2. attribut BETWEEN a AND b attribut >= a AND attribut <= b 3. Connecteurs logiques : AND, OR, NOT, XOR et parenthèses. 4. Expressions régulières : LIKE chaine de caractère, avec : 4.1 remplace n importe quel caractère 4.2 % remplace n importe quelle chaîne de caractère 5. Prédicat ensemblistes : EXISTS(), IN() 5.1 EXISTS(table) est vérifié lorsque table est non vide. Le plus souvent table est SELECT... FROM... : le résultat d une sélection. 5.2 attribut IN (liste) est vérifié lorsque attribut apparait dans liste. Le plus souvent liste est une liste de valeurs (1,2,3,...) ou une liste résultat d une sélection : SELECT attribut FROM... On peut aussi ajouter : ORDER BY attribut [DESC] ou LIMIT [m,] n en fin de commande pour ordonner/limiter les résultats.

Définition formelle Projection Sélection Fonction d agrégations Fonctions d agrégations Une fonction d agrégation est une application qui a une table associe un nombre. Le plus souvent pour compter, faire la moyenne d un attribut, etc..., selon une colonne. Les principales fonctions d agrégation : COUNT AVG MIN MAX SUM pour compter le nombre d enregistrements d une table valeur moyenne d une colonne de type numérique d une table valeur minimale d une colonne de type numérique d une table valeur maximale d une colonne de type numérique d une table somme d une colonne de type numérique d une table Exemple : Compter les élèves (en paramètre les attributs à compter, les NULL ne sont pas comptabilisés) SELECT COUNT(*) FROM eleves La table contient 6 enregistrements (= élèves).

Définition formelle Projection Sélection Fonction d agrégations Fonctions d agrégations Une fonction d agrégation retourne une seule ligne. Avec la commande GROUP BY on retourne plusieurs lignes en regroupant les mêmes valeurs d un attribut et en effectuant l agrégation sur chaque groupe : SELECT COUNT(*) FROM eleves GROUP BY langue On compte le nombre d élèves par groupe de langue. GROUP BY peut être suivi de HAVING condition pour requérir une condition dans la constitution des groupes : SELECT COUNT(*) FROM eleves GROUP BY langue HAVING langue = esp ne comptera que le groupe des élèves faisant espagnol. Même résultat avec SELECT COUNT(*) FROM (SELECT * FROM eleves WHERE langue = esp ) Différence avec WHERE : HAVING peut être suivie d une condition invoquant une fonction d agrégation : MAX(), MIN(), SUM(), COUNT().

Produit cartésien, jointure et différence On considère deux relations r 1 et r 2 ayant le même schéma (A 1,..., A p). La Réunion des relations r 1 et r 2 est la relation : r 1 r 2 = {e ; e r 1 ou e r 2} L Intersection des relations r 1 et r 2 est la relation : r 1 r 2 = {e ; e r 1 et e r 2} La Différence des relations r 1 et r 2 est la relation : r 1 r 2 = {e ; e r 1 et e / r 2}

Produit cartésien, jointure et différence Soient deux tables table1 et table2 vérifiant le même schéma relationnel. Leur réunion s obtient par l instruction UNION : SELECT * FROM table1 UNION SELECT * FROM table2 On obtient une intersection par l instruction INTERSECT : SELECT * FROM table1 INTERSECT SELECT * FROM table2 On obtient un difference par l instruction EXCEPT : SELECT * FROM table1 EXCEPT SELECT * FROM table2

Produit cartésien, jointure et différence Produit cartésien, jointure et différence On considère deux relations r 1 et r 2 (n ayant pas forcément le même schéma) ayant pour ensembles d attributs E 1 et E 2. Le Produit cartésien des relations r 1 et r 2 est la relation ayant pour ensemble d attributs E 1 E 2 : r 1 r 2 = {e ; e[e 1] r 1 et e[e 2] r 2} La Jointure des relations r 1 et r 2 par une condition P est la relation, sous-ensemble de leur produit cartésien : r 1 P r 2 = {e ; e[e 1] r 1 et e[e 2] r 2 et e vérifie P} C est le produit cartésien suivie de la sélection : r 1 P r 2 = σ P (r 1 r 2). Si les relations r 1 et r 2 sont telles que tous les attributs de r 2 sont des attributs de r 1 et non réciproquement : E 2 E 1, leur Division : r 1 r 2 = {e ; e 2 r 2, (e, e 2) r 1} (Remarque : lorsque r 1 = r r 2 alors r 1 r 2 = r. En général (r 1 r 2) r 2 r 1).

Produit cartésien, jointure et différence Pour effectuer un produit cartésien : SELECT * FROM table1, table2 SELECT * FROM eleves, notes Un produit cartésien est rarement utile ; une jointure l est beaucoup plus. Même si une jointure est théoriquement la composée d un produit cartésien suivi d une sélection, l implémentation d une jointure est beaucoup plus rapide qu un produit cartésien suivi d une sélection. Il n existe pas d opérateurs en SQL pour la division relationnelle, mais on peut en réaliser une par une requête complexe. Pour effectuer une jointure symétrique simple : (Condition : égalité de certains attributs) : SELECT * FROM table1 JOIN table2 ON table1.attribut = table2.attribut Pour effectuer une jointure multiple : SELECT * FROM table1 JOIN table2 JOIN table3 etc... ON conditions...

Base de donnée nobel.sqlite La base de donnée nobel.sqlite concerne les lauréats du prix nobel. Elle contient une seule table nobel ayant pour schéma de relation : nobel (année INT, sujet VARCHAR(15), laureat VARCHAR(50)) Question 1 : Quelle requête a permis sa création? Réponse : CREATE TABLE nobel( annee INT,sujet VARCHAR(15),laureat VARCHAR(50) )

Base de donnée nobel.sqlite La base de donnée nobel.sqlite concerne les lauréats du prix nobel. Elle contient une seule table nobel ayant pour schéma de relation : nobel (année INT, sujet VARCHAR(15), laureat VARCHAR(50)) Question 2 : Comment obtenir tous les lauréats du nobel de physique au XXe siècle et leur année d obtention? Réponse : (Sélection) SELECT laureat, annee FROM nobel WHERE annee > 1900 AND annee <= 2000 AND sujet = Physique

Base de donnée nobel.sqlite La base de donnée nobel.sqlite concerne les lauréats du prix nobel. Elle contient une seule table nobel ayant pour schéma de relation : nobel (année INT, sujet VARCHAR(15), laureat VARCHAR(50)) Question 3 : Comment obtenir toutes les disciplines du nobel? Réponse : (Projection) SELECT DISTINCT sujet FROM nobel ou SELECT sujet FROM nobel GROUP BY sujet

Base de donnée nobel.sqlite La base de donnée nobel.sqlite concerne les lauréats du prix nobel. Elle contient une seule table nobel ayant pour schéma de relation : nobel (année INT, sujet VARCHAR(15), laureat VARCHAR(50)) Question 4 : Comment de lauréats y-a-t-il eu dans chaque discipline? Réponse : (agrégation) SELECT COUNT(*), sujet FROM nobel GROUP BY sujet

Base de donnée nobel.sqlite La base de donnée nobel.sqlite concerne les lauréats du prix nobel. Elle contient une seule table nobel ayant pour schéma de relation : nobel (année INT, sujet VARCHAR(15), laureat VARCHAR(50)) Question 5 : Sur quelle période s étend la table? Réponse : (agrégation) SELECT MIN(annee), MAX(annee) FROM nobel

Base de donnée nobel.sqlite La base de donnée nobel.sqlite concerne les lauréats du prix nobel. Elle contient une seule table nobel ayant pour schéma de relation : nobel (année INT, sujet VARCHAR(15), laureat VARCHAR(50)) Question 6 : Sur cette période combien d année n a été décerné aucun nobel? Réponse : (agrégation) SELECT MAX(annee) - MIN(annee) + 1 - COUNT(annee) FROM nobel GROUP BY annee ou : SELECT MAX(annee) - MIN(annee) + 1 - COUNT(DISTINCT annee) FROM nobel Remarque : En terme de performance la première méthode est meilleure.

Base de donnée nobel.sqlite La base de donnée nobel.sqlite concerne les lauréats du prix nobel. Elle contient une seule table nobel ayant pour schéma de relation : nobel (année INT, sujet VARCHAR(15), laureat VARCHAR(50)) Question 7 : Afficher tous les lauréats et pour chacun le nombre de nobels obtenus Réponse : (agrégation) SELECT COUNT(*) AS NbrePrix, laureat FROM nobel GROUP BY laureat

Base de donnée nobel.sqlite La base de donnée nobel.sqlite concerne les lauréats du prix nobel. Elle contient une seule table nobel ayant pour schéma de relation : nobel (année INT, sujet VARCHAR(15), laureat VARCHAR(50)) Question 8 : Afficher tous les lauréats ayant obtenus plusieurs nobels Réponse : (requête composé et renommage) SELECT Nbre, laureat FROM (SELECT COUNT(*) AS Nbre, laureat FROM nobel GROUP BY laureat) WHERE Nbre > 1 ou SELECT laureat FROM nobel GROUP BY laureat HAVING COUNT(*) > 1

Base de donnée nobel.sqlite La base de donnée nobel.sqlite concerne les lauréats du prix nobel. Elle contient une seule table nobel ayant pour schéma de relation : nobel (année INT, sujet VARCHAR(15), laureat VARCHAR(50)) Question 9 : Afficher tous les lauréats ayant obtenus plusieurs nobels et leur discipline et année d obtention, dans l ordre d année d obtention. Réponse : (jointure et requête composée et renommage) SELECT nobel.laureat, sujet, annee FROM (SELECT laureat AS supernobel FROM (SELECT COUNT(*) AS Nbre, laureat FROM nobel GROUP BY laureat) WHERE Nbre > 1) JOIN nobel on supernobel = nobel.laureat ORDER BY nobel.laureat

Base de donnée movie.sqlite La base de donnée movie.sqlite contient 3 tables vérifiant les schémas suivants : actor ( id INTEGER, name VARCHAR(35)) casting (movieid INTEGER, actorid INTEGER, ord INTEGER) movie (id INTEGER, title VARCHAR(70), yr DECIMAL(4), score FLOAT, votes INTEGER, director INTEGER) Elle porte sur tous les films de cinema, leur casting, acteurs et réalisateurs jusqu à l année 2000. La table actor contient les acteurs mais aussi les réalisateurs. Question 1. Comment obtenir les titres des 10 films les mieux notés de l année 1990? Réponse : (sélection avec ORDER BY et LIMIT) SELECT title FROM movie WHERE yr = 1990 ORDER BY score DESC LIMIT 10

Base de donnée movie.sqlite actor ( id INTEGER, name VARCHAR(35)) casting (movieid INTEGER, actorid INTEGER, ord INTEGER) movie (id INTEGER, title VARCHAR(70), yr DECIMAL(4), score FLOAT, votes INTEGER, director INTEGER) Question 2. Comment obtenir les titres films ayant un score supérieur au score moyen? Réponse : (sélection avec agrégation et requête composée) SELECT title FROM movie WHERE score >= (SELECT AVG(score) FROM movie) ou sélection avec agrégation et HAVING SELECT title FROM movie HAVING score >= AVG(score)

Base de donnée movie.sqlite actor ( id INTEGER, name VARCHAR(35)) casting (movieid INTEGER, actorid INTEGER, ord INTEGER) movie (id INTEGER, title VARCHAR(70), yr DECIMAL(4), score FLOAT, votes INTEGER, director INTEGER) Question 3. Quels sont les (identifiants des) 10 réalisateurs ayant obtenu la meilleure note moyenne pour leurs films? Réponse : (sélection avec agrégation et requête composée) SELECT director FROM (SELECT director, AVG(score) AS moyenne FROM movie GROUP BY director ORDER BY moyenne DESC LIMIT 10)

Base de donnée movie.sqlite actor ( id INTEGER, name VARCHAR(35)) casting (movieid INTEGER, actorid INTEGER, ord INTEGER) movie (id INTEGER, title VARCHAR(70), yr DECIMAL(4), score FLOAT, votes INTEGER, director INTEGER) Question 4. Quels sont les noms des 10 réalisateurs ayant obtenu la meilleure note moyenne pour leurs films? Réponse : (jointure avec actor et la table précédente) SELECT name FROM actor JOIN (SELECT director, AVG(score) AS moyenne FROM movie GROUP BY director ORDER BY moyenne DESC LIMIT 10) ON actor.id = director

Base de donnée movie.sqlite actor ( id INTEGER, name VARCHAR(35)) casting (movieid INTEGER, actorid INTEGER, ord INTEGER) movie (id INTEGER, title VARCHAR(70), yr DECIMAL(4), score FLOAT, votes INTEGER, director INTEGER) Question 5. Comment obtenir le casting du film Star Wars? Réponse : (jointure à 3 tables) SELECT actor.name FROM actor JOIN casting JOIN movie ON actor.id = casting.actorid AND movie.id=casting.movieid AND movie.title="star Wars"

Base de donnée movie.sqlite actor ( id INTEGER, name VARCHAR(35)) casting (movieid INTEGER, actorid INTEGER, ord INTEGER) movie (id INTEGER, title VARCHAR(70), yr DECIMAL(4), score FLOAT, votes INTEGER, director INTEGER) Question 6. Comment obtenir le nom des acteurs ayant joué dans Star Wars 2 mais pas dans Star Wars? Réponse : (Différence sur 2 jointure à 3 tables) SELECT actor.name FROM actor JOIN casting JOIN movie ON actor.id = casting.actorid AND movie.id=casting.movieid AND movie.title="star Wars2" EXCEPT SELECT actor.name FROM actor JOIN casting JOIN movie ON actor.id = casting.actorid AND movie.id=casting.movieid AND movie.title="star Wars"

Base de donnée movie.sqlite actor ( id INTEGER, name VARCHAR(35)) casting (movieid INTEGER, actorid INTEGER, ord INTEGER) movie (id INTEGER, title VARCHAR(70), yr DECIMAL(4), score FLOAT, votes INTEGER, director INTEGER) Question 7. Comment obtenir le nom des acteurs ayant joué dans au moins un Star Wars? Réponse : SELECT actor.name FROM actor JOIN casting JOIN movie ON actor.id = casting.actorid AND movie.id=casting.movieid AND movie.title LIKE "Star Wars%" GROUP BY actor.name